ADD @since 1.1 !! Vincent
On Wed, 1 Jun 2011, Enlightenment SVN wrote: > Log: > 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 :-) > > > > Author: cedric > Date: 2011-06-01 07:32:08 -0700 (Wed, 01 Jun 2011) > New Revision: 59872 > Trac: http://trac.enlightenment.org/e/changeset/59872 > > Modified: > trunk/evas/ChangeLog trunk/evas/src/lib/Evas.h > trunk/evas/src/lib/canvas/evas_main.c > trunk/evas/src/lib/engines/common/evas_image.h > trunk/evas/src/lib/engines/common/evas_image_load.c > > Modified: trunk/evas/ChangeLog > =================================================================== > --- trunk/evas/ChangeLog 2011-06-01 14:25:15 UTC (rev 59871) > +++ trunk/evas/ChangeLog 2011-06-01 14:32:08 UTC (rev 59872) > @@ -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. > > Modified: trunk/evas/src/lib/Evas.h > =================================================================== > --- trunk/evas/src/lib/Evas.h 2011-06-01 14:25:15 UTC (rev 59871) > +++ trunk/evas/src/lib/Evas.h 2011-06-01 14:32:08 UTC (rev 59872) > @@ -5237,6 +5237,28 @@ > 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 > * > * Functions that operate on single line, single style text objects. > > Modified: trunk/evas/src/lib/canvas/evas_main.c > =================================================================== > --- trunk/evas/src/lib/canvas/evas_main.c 2011-06-01 14:25:15 UTC (rev > 59871) > +++ trunk/evas/src/lib/canvas/evas_main.c 2011-06-01 14:32:08 UTC (rev > 59872) > @@ -510,6 +510,25 @@ > 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) > { > > Modified: trunk/evas/src/lib/engines/common/evas_image.h > =================================================================== > --- trunk/evas/src/lib/engines/common/evas_image.h 2011-06-01 14:25:15 UTC > (rev 59871) > +++ trunk/evas/src/lib/engines/common/evas_image.h 2011-06-01 14:32:08 UTC > (rev 59872) > @@ -57,4 +57,6 @@ > > 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 */ > > Modified: trunk/evas/src/lib/engines/common/evas_image_load.c > =================================================================== > --- trunk/evas/src/lib/engines/common/evas_image_load.c 2011-06-01 > 14:25:15 UTC (rev 59871) > +++ trunk/evas/src/lib/engines/common/evas_image_load.c 2011-06-01 > 14:32:08 UTC (rev 59872) > @@ -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 @@ > > 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; > +} > > > ------------------------------------------------------------------------------ > Simplify data backup and recovery for your virtual environment with vRanger. > Installation's a snap, and flexible recovery options mean your data is safe, > secure and there when you need it. Data protection magic? > Nope - It's vRanger. Get your free trial download today. > http://p.sf.net/sfu/quest-sfdev2dev > _______________________________________________ > enlightenment-svn mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn > > ------------------------------------------------------------------------------ Simplify data backup and recovery for your virtual environment with vRanger. Installation's a snap, and flexible recovery options mean your data is safe, secure and there when you need it. Data protection magic? Nope - It's vRanger. Get your free trial download today. http://p.sf.net/sfu/quest-sfdev2dev _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
