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
|
||||
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
|
|
|
@ -510,6 +510,25 @@ evas_render_method_list_free(Eina_List *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
|
||||
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);
|
||||
|
||||
EAPI Eina_Bool evas_common_extension_can_load_get(const char *file);
|
||||
|
||||
#endif /* _EVAS_IMAGE_H */
|
||||
|
|
|
@ -8,61 +8,65 @@
|
|||
|
||||
struct ext_loader_s
|
||||
{
|
||||
unsigned int length;
|
||||
const char *extension;
|
||||
const char *loader;
|
||||
};
|
||||
|
||||
#define MATCHING(Ext, Module) \
|
||||
{ sizeof (Ext), Ext, Module }
|
||||
|
||||
static const struct ext_loader_s loaders[] =
|
||||
{ /* map extensions to loaders to use for good first-guess tries */
|
||||
{ ".png", "png" },
|
||||
{ ".jpg", "jpeg" },
|
||||
{ ".jpeg", "jpeg" },
|
||||
{ ".jfif", "jpeg" },
|
||||
{ ".eet", "eet" },
|
||||
{ ".edj", "eet" },
|
||||
{ ".eap", "eet" },
|
||||
{ ".edb", "edb" },
|
||||
{ ".xpm", "xpm" },
|
||||
{ ".tiff", "tiff" },
|
||||
{ ".tif", "tiff" },
|
||||
{ ".svg", "svg" },
|
||||
{ ".svgz", "svg" },
|
||||
{ ".svg.gz", "svg" },
|
||||
{ ".gif", "gif" },
|
||||
{ ".pbm", "pmaps" },
|
||||
{ ".pgm", "pmaps" },
|
||||
{ ".ppm", "pmaps" },
|
||||
{ ".pnm", "pmaps" },
|
||||
{ ".bmp", "bmp" },
|
||||
{ ".tga", "tga" },
|
||||
{ ".wbmp", "wbmp" },
|
||||
{ ".ico", "ico" },
|
||||
{ ".cur", "ico" },
|
||||
{ ".psd", "psd" },
|
||||
{ ".pdf", "generic" },
|
||||
{ ".ps", "generic" },
|
||||
{ ".xcf", "generic" },
|
||||
{ ".xcf.gz", "generic" },
|
||||
{ ".arw", "generic" },
|
||||
{ ".cr2", "generic" },
|
||||
{ ".crw", "generic" },
|
||||
{ ".dcr", "generic" },
|
||||
{ ".dng", "generic" },
|
||||
{ ".k25", "generic" },
|
||||
{ ".kdc", "generic" },
|
||||
{ ".erf", "generic" },
|
||||
{ ".mrw", "generic" },
|
||||
{ ".nef", "generic" },
|
||||
{ ".nrf", "generic" },
|
||||
{ ".nrw", "generic" },
|
||||
{ ".orf", "generic" },
|
||||
{ ".raw", "generic" },
|
||||
{ ".rw2", "generic" },
|
||||
{ ".pef", "generic" },
|
||||
{ ".raf", "generic" },
|
||||
{ ".sr2", "generic" },
|
||||
{ ".srf", "generic" },
|
||||
{ ".x3f", "generic" }
|
||||
MATCHING(".png", "png"),
|
||||
MATCHING(".jpg", "jpeg"),
|
||||
MATCHING(".jpeg", "jpeg"),
|
||||
MATCHING(".jfif", "jpeg"),
|
||||
MATCHING(".eet", "eet"),
|
||||
MATCHING(".edj", "eet"),
|
||||
MATCHING(".eap", "eet"),
|
||||
MATCHING(".edb", "edb"),
|
||||
MATCHING(".xpm", "xpm"),
|
||||
MATCHING(".tiff", "tiff"),
|
||||
MATCHING(".tif", "tiff"),
|
||||
MATCHING(".svg", "svg"),
|
||||
MATCHING(".svgz", "svg"),
|
||||
MATCHING(".svg.gz", "svg"),
|
||||
MATCHING(".gif", "gif"),
|
||||
MATCHING(".pbm", "pmaps"),
|
||||
MATCHING(".pgm", "pmaps"),
|
||||
MATCHING(".ppm", "pmaps"),
|
||||
MATCHING(".pnm", "pmaps"),
|
||||
MATCHING(".bmp", "bmp"),
|
||||
MATCHING(".tga", "tga"),
|
||||
MATCHING(".wbmp", "wbmp"),
|
||||
MATCHING(".ico", "ico"),
|
||||
MATCHING(".cur", "ico"),
|
||||
MATCHING(".psd", "psd"),
|
||||
MATCHING(".pdf", "generic"),
|
||||
MATCHING(".ps", "generic"),
|
||||
MATCHING(".xcf", "generic"),
|
||||
MATCHING(".xcf.gz", "generic"),
|
||||
MATCHING(".arw", "generic"),
|
||||
MATCHING(".cr2", "generic"),
|
||||
MATCHING(".crw", "generic"),
|
||||
MATCHING(".dcr", "generic"),
|
||||
MATCHING(".dng", "generic"),
|
||||
MATCHING(".k25", "generic"),
|
||||
MATCHING(".kdc", "generic"),
|
||||
MATCHING(".erf", "generic"),
|
||||
MATCHING(".mrw", "generic"),
|
||||
MATCHING(".nef", "generic"),
|
||||
MATCHING(".nrf", "generic"),
|
||||
MATCHING(".nrw", "generic"),
|
||||
MATCHING(".orf", "generic"),
|
||||
MATCHING(".raw", "generic"),
|
||||
MATCHING(".rw2", "generic"),
|
||||
MATCHING(".pef", "generic"),
|
||||
MATCHING(".raf", "generic"),
|
||||
MATCHING(".sr2", "generic"),
|
||||
MATCHING(".srf", "generic"),
|
||||
MATCHING(".x3f", "generic")
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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