forked from enlightenment/efl
evas: add evas_object_image_extension_can_load_get.
This functions let you check if a file could be opened by Evas_Object_Image. It is threadsafe, and you should use it from another thread as often as possible :-) SVN revision: 59872
This commit is contained in:
parent
1dfe691a36
commit
0e0dca586f
|
@ -387,3 +387,9 @@
|
||||||
2011-05-29 Vincent Torri
|
2011-05-29 Vincent Torri
|
||||||
|
|
||||||
* Fix compilation when --disable-async-preload is passed to configure.
|
* Fix compilation when --disable-async-preload is passed to configure.
|
||||||
|
|
||||||
|
2011-06-01 Cedric Bail
|
||||||
|
|
||||||
|
* Add +evas_object_image_extension_can_load_get and
|
||||||
|
evas_object_image_extension_can_load_fast_get that check if a file
|
||||||
|
may be opened by Evas_Object_Image.
|
||||||
|
|
|
@ -5236,6 +5236,28 @@ EAPI Evas_Object *evas_object_image_source_get (Evas_Obj
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool evas_object_image_source_unset (Evas_Object *obj) EINA_ARG_NONNULL(1);
|
EAPI Eina_Bool evas_object_image_source_unset (Evas_Object *obj) EINA_ARG_NONNULL(1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a file extention may be supported by @ref Evas_Object_Image.
|
||||||
|
*
|
||||||
|
* @param file The file to check
|
||||||
|
* @return EINA_TRUE if we may be able to opeen it, EINA_FALSE if it's unlikely.
|
||||||
|
*
|
||||||
|
* If file is a Eina_Stringshare, use directly @ref evas_object_image_extension_can_load_fast_get.
|
||||||
|
*
|
||||||
|
* This functions is threadsafe.
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool evas_object_image_extension_can_load_get(const char *file);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a file extention may be supported by @ref Evas_Object_Image.
|
||||||
|
*
|
||||||
|
* @param file The file to check, it should be an Eina_Stringshare.
|
||||||
|
* @return EINA_TRUE if we may be able to opeen it, EINA_FALSE if it's unlikely.
|
||||||
|
*
|
||||||
|
* This functions is threadsafe.
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool evas_object_image_extension_can_load_fast_get(const char *file);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup Evas_Object_Text Text Object Functions
|
* @defgroup Evas_Object_Text Text Object Functions
|
||||||
*
|
*
|
||||||
|
|
|
@ -510,6 +510,25 @@ evas_render_method_list_free(Eina_List *list)
|
||||||
eina_list_free(list);
|
eina_list_free(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
evas_object_image_extension_can_load_get(const char *file)
|
||||||
|
{
|
||||||
|
const char *tmp;
|
||||||
|
Eina_Bool result;
|
||||||
|
|
||||||
|
tmp = eina_stringshare_add(file);
|
||||||
|
result = evas_common_extension_can_load_get(tmp);
|
||||||
|
eina_stringshare_del(tmp);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
evas_object_image_extension_can_load_fast_get(const char *file)
|
||||||
|
{
|
||||||
|
return evas_common_extension_can_load_get(file);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
evas_pointer_output_xy_get(const Evas *e, int *x, int *y)
|
evas_pointer_output_xy_get(const Evas *e, int *x, int *y)
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,4 +57,6 @@ EAPI int evas_common_load_rgba_image_data_from_file (Image_Entry *im);
|
||||||
|
|
||||||
void _evas_common_rgba_image_post_surface(Image_Entry *ie);
|
void _evas_common_rgba_image_post_surface(Image_Entry *ie);
|
||||||
|
|
||||||
|
EAPI Eina_Bool evas_common_extension_can_load_get(const char *file);
|
||||||
|
|
||||||
#endif /* _EVAS_IMAGE_H */
|
#endif /* _EVAS_IMAGE_H */
|
||||||
|
|
|
@ -8,61 +8,65 @@
|
||||||
|
|
||||||
struct ext_loader_s
|
struct ext_loader_s
|
||||||
{
|
{
|
||||||
|
unsigned int length;
|
||||||
const char *extension;
|
const char *extension;
|
||||||
const char *loader;
|
const char *loader;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define MATCHING(Ext, Module) \
|
||||||
|
{ sizeof (Ext), Ext, Module }
|
||||||
|
|
||||||
static const struct ext_loader_s loaders[] =
|
static const struct ext_loader_s loaders[] =
|
||||||
{ /* map extensions to loaders to use for good first-guess tries */
|
{ /* map extensions to loaders to use for good first-guess tries */
|
||||||
{ ".png", "png" },
|
MATCHING(".png", "png"),
|
||||||
{ ".jpg", "jpeg" },
|
MATCHING(".jpg", "jpeg"),
|
||||||
{ ".jpeg", "jpeg" },
|
MATCHING(".jpeg", "jpeg"),
|
||||||
{ ".jfif", "jpeg" },
|
MATCHING(".jfif", "jpeg"),
|
||||||
{ ".eet", "eet" },
|
MATCHING(".eet", "eet"),
|
||||||
{ ".edj", "eet" },
|
MATCHING(".edj", "eet"),
|
||||||
{ ".eap", "eet" },
|
MATCHING(".eap", "eet"),
|
||||||
{ ".edb", "edb" },
|
MATCHING(".edb", "edb"),
|
||||||
{ ".xpm", "xpm" },
|
MATCHING(".xpm", "xpm"),
|
||||||
{ ".tiff", "tiff" },
|
MATCHING(".tiff", "tiff"),
|
||||||
{ ".tif", "tiff" },
|
MATCHING(".tif", "tiff"),
|
||||||
{ ".svg", "svg" },
|
MATCHING(".svg", "svg"),
|
||||||
{ ".svgz", "svg" },
|
MATCHING(".svgz", "svg"),
|
||||||
{ ".svg.gz", "svg" },
|
MATCHING(".svg.gz", "svg"),
|
||||||
{ ".gif", "gif" },
|
MATCHING(".gif", "gif"),
|
||||||
{ ".pbm", "pmaps" },
|
MATCHING(".pbm", "pmaps"),
|
||||||
{ ".pgm", "pmaps" },
|
MATCHING(".pgm", "pmaps"),
|
||||||
{ ".ppm", "pmaps" },
|
MATCHING(".ppm", "pmaps"),
|
||||||
{ ".pnm", "pmaps" },
|
MATCHING(".pnm", "pmaps"),
|
||||||
{ ".bmp", "bmp" },
|
MATCHING(".bmp", "bmp"),
|
||||||
{ ".tga", "tga" },
|
MATCHING(".tga", "tga"),
|
||||||
{ ".wbmp", "wbmp" },
|
MATCHING(".wbmp", "wbmp"),
|
||||||
{ ".ico", "ico" },
|
MATCHING(".ico", "ico"),
|
||||||
{ ".cur", "ico" },
|
MATCHING(".cur", "ico"),
|
||||||
{ ".psd", "psd" },
|
MATCHING(".psd", "psd"),
|
||||||
{ ".pdf", "generic" },
|
MATCHING(".pdf", "generic"),
|
||||||
{ ".ps", "generic" },
|
MATCHING(".ps", "generic"),
|
||||||
{ ".xcf", "generic" },
|
MATCHING(".xcf", "generic"),
|
||||||
{ ".xcf.gz", "generic" },
|
MATCHING(".xcf.gz", "generic"),
|
||||||
{ ".arw", "generic" },
|
MATCHING(".arw", "generic"),
|
||||||
{ ".cr2", "generic" },
|
MATCHING(".cr2", "generic"),
|
||||||
{ ".crw", "generic" },
|
MATCHING(".crw", "generic"),
|
||||||
{ ".dcr", "generic" },
|
MATCHING(".dcr", "generic"),
|
||||||
{ ".dng", "generic" },
|
MATCHING(".dng", "generic"),
|
||||||
{ ".k25", "generic" },
|
MATCHING(".k25", "generic"),
|
||||||
{ ".kdc", "generic" },
|
MATCHING(".kdc", "generic"),
|
||||||
{ ".erf", "generic" },
|
MATCHING(".erf", "generic"),
|
||||||
{ ".mrw", "generic" },
|
MATCHING(".mrw", "generic"),
|
||||||
{ ".nef", "generic" },
|
MATCHING(".nef", "generic"),
|
||||||
{ ".nrf", "generic" },
|
MATCHING(".nrf", "generic"),
|
||||||
{ ".nrw", "generic" },
|
MATCHING(".nrw", "generic"),
|
||||||
{ ".orf", "generic" },
|
MATCHING(".orf", "generic"),
|
||||||
{ ".raw", "generic" },
|
MATCHING(".raw", "generic"),
|
||||||
{ ".rw2", "generic" },
|
MATCHING(".rw2", "generic"),
|
||||||
{ ".pef", "generic" },
|
MATCHING(".pef", "generic"),
|
||||||
{ ".raf", "generic" },
|
MATCHING(".raf", "generic"),
|
||||||
{ ".sr2", "generic" },
|
MATCHING(".sr2", "generic"),
|
||||||
{ ".srf", "generic" },
|
MATCHING(".srf", "generic"),
|
||||||
{ ".x3f", "generic" }
|
MATCHING(".x3f", "generic")
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *loaders_name[] =
|
static const char *loaders_name[] =
|
||||||
|
@ -292,3 +296,23 @@ evas_common_load_rgba_image_data_from_file(Image_Entry *ie)
|
||||||
|
|
||||||
return EVAS_LOAD_ERROR_NONE;
|
return EVAS_LOAD_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
evas_common_extension_can_load_get(const char *file)
|
||||||
|
{
|
||||||
|
unsigned int length;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
length = eina_stringshare_strlen(file) + 1;
|
||||||
|
if (length < 5) return EINA_FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof (loaders) / sizeof (struct ext_loader_s); ++i)
|
||||||
|
{
|
||||||
|
if (loaders[i].length > length) continue;
|
||||||
|
|
||||||
|
if (!strcasecmp(loaders[i].extension, file + length - loaders[i].length))
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue