Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/evas
Dir : e17/libs/evas/src/lib/engines/common
Modified Files:
evas_image_load.c
Log Message:
dont need fmemopen suppor tin evas now... just sue eet directly and dont
duplicate code...
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_image_load.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_image_load.c 10 Jan 2003 02:05:37 -0000 1.3
+++ evas_image_load.c 13 Jan 2003 07:38:08 -0000 1.4
@@ -553,115 +553,28 @@
}
#endif
-/* NB: look into:
- * fmemopen();
- * open_memstream();
- */
-
#ifdef BUILD_LOADER_EET
static int load_image_file_head_eet(RGBA_Image *im, const char *file, const char
*key);
static int
load_image_file_head_eet(RGBA_Image *im, const char *file, const char *key)
{
- int w, h, alpha, compression, size;
+ int w, h, alpha, compression, size, quality, lossy;
Eet_File *ef;
- DATA32 *ret;
DATA32 *body;
- DATA32 header[8];
if ((!file) || (!key)) return -1;
ef = eet_open((char *)file, EET_FILE_MODE_READ);
if (!ef) return -1;
- ret = eet_read(ef, (char *)key, &size);
- if (!ret)
- {
- eet_close(ef);
- return -1;
- }
- if (size < 32)
+ body = eet_data_image_read(ef, (char *)key,
+ &w, &h, &alpha, &compression, &quality, &lossy);
+ if (!body)
{
- free(ret);
eet_close(ef);
return -1;
}
- memcpy(header, ret, 32);
-#ifdef WORDS_BIGENDIAN
- {
- int i;
-
- for (i = 0; i < 8; i++) SWAP32(header[i]);
- }
-#endif
- if (header[0] != 0xac1dfeed)
- {
- int val = -1;
-
-#ifdef BUILD_LOADER_JPEG
-#ifdef BUILD_FMEMOPEN
- /* if we built the jpeg loader in.. try load an inlined jpeg */
- if (header[0] == 0xbeeff00d)
- /* magic number for 2 jpegs. 1 color, 1 gray. gray is alpha */
- {
- FILE *f;
- int sz1, sz2;
-
- /* next int is byte size of first jpg */
- /* then next int is byte size of 2nd jpeg */
- /* all bytes after the first 12 are jpeg data */
- sz1 = header[1];
- sz2 = header[2];
-
- if ((sz1 <= 0) || (sz2 <= 0) ||
- ((sz1 + sz2 + 12) > size))
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- f = fmemopen(((DATA8 *)ret) + 12, (size_t)sz1, "r");
- if (!f)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- val = load_image_file_head_jpeg_internal(im, f);
- fclose(f);
- im->flags |= RGBA_IMAGE_HAS_ALPHA;
- }
- else
- {
- FILE *f;
-
- f = fmemopen(ret, (size_t)size, "r");
- if (!f)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- val = load_image_file_head_jpeg_internal(im, f);
- fclose(f);
- }
-#endif
-#endif
- free(ret);
- eet_close(ef);
- return val;
- }
- w = header[1];
- h = header[2];
- alpha = header[3];
- compression = header[4];
if ((w > 8192) || (h > 8192))
{
- free(ret);
- eet_close(ef);
- return -1;
- }
- if ((compression == 0) && (size < ((w * h * 4) + 32)))
- {
- free(ret);
+ free(body);
eet_close(ef);
return -1;
}
@@ -670,13 +583,14 @@
im->image = evas_common_image_surface_new();
if (!im->image)
{
- free(ret);
+ free(body);
eet_close(ef);
return -1;
}
im->image->w = w;
im->image->h = h;
- free(ret);
+ im->image->data = body;
+ im->image->no_free = 0;
eet_close(ef);
return 1;
}
@@ -685,166 +599,6 @@
static int
load_image_file_data_eet(RGBA_Image *im, const char *file, const char *key)
{
- int w, h, alpha, compression, size;
- Eet_File *ef;
- DATA32 *ret;
- DATA32 *body;
- DATA32 header[8];
-
- if ((!file) || (!key)) return -1;
- ef = eet_open((char *)file, EET_FILE_MODE_READ);
- if (!ef) return -1;
- ret = eet_read(ef, (char *)key, &size);
- if (!ret)
- {
- eet_close(ef);
- return -1;
- }
- if (size < 32)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- memcpy(header, ret, 32);
-#ifdef WORDS_BIGENDIAN
- {
- int i;
-
- for (i = 0; i < 8; i++) SWAP32(header[i]);
- }
-#endif
- if (header[0] != 0xac1dfeed)
- {
- int val = -1;
-
-#ifdef BUILD_LOADER_JPEG
-#ifdef BUILD_FMEMOPEN
- /* if we built the jpeg loader in.. try load an inlined jpeg */
- if (header[0] == 0xbeeff00d)
- /* magic number for 2 jpegs. 1 color, 1 gray. gray is alpha */
- {
- FILE *f;
- int sz1, sz2;
-
- /* next int is byte size of first jpg */
- /* then next int is byte size of 2nd jpeg */
- /* all bytes after the first 12 are jpeg data */
- sz1 = header[1];
- sz2 = header[2];
-
- if ((sz1 <= 0) || (sz2 <= 0) ||
- ((sz1 + sz2 + 12) > size))
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- f = fmemopen(((DATA8 *)ret) + 12, (size_t)sz1, "r");
- if (!f)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- val = load_image_file_data_jpeg_internal(im, f);
- fclose(f);
- f = fmemopen(((DATA8 *)ret) + 12 + sz1, (size_t)sz2, "r");
- if (!f)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- val = load_image_file_data_jpeg_alpha_internal(im, f);
- fclose(f);
- im->flags |= RGBA_IMAGE_HAS_ALPHA;
- }
- else
- {
- FILE *f;
-
- f = fmemopen(ret, (size_t)size, "r");
- if (!f)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- val = load_image_file_data_jpeg_internal(im, f);
- fclose(f);
- }
-#endif
-#endif
- free(ret);
- eet_close(ef);
- return val;
- }
- w = header[1];
- h = header[2];
- alpha = header[3];
- compression = header[4];
- if ((w > 8192) || (h > 8192))
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- if ((compression == 0) && (size < ((w * h * 4) + 32)))
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- if (alpha) im->flags |= RGBA_IMAGE_HAS_ALPHA;
- if (!im->image)
- im->image = evas_common_image_surface_new();
- if (!im->image)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- im->image->w = w;
- im->image->h = h;
- body = &(ret[8]);
- evas_common_image_surface_alloc(im->image);
- if (!im->image->data)
- {
- free(ret);
- eet_close(ef);
- return -1;
- }
- if (!compression)
- {
-#ifdef WORDS_BIGENDIAN
- {
- int x;
-
- memcpy(im->image->data, body, w * h * sizeof(DATA32));
- for (x = 0; x < (w * h); x++) SWAP32(im->image->data[x]);
- }
-#else
- memcpy(im->image->data, body, w * h * sizeof(DATA32));
-#endif
- }
- else
- {
- uLongf dlen;
-
- dlen = w * h * sizeof(DATA32);
- uncompress((Bytef *)im->image->data, &dlen, (Bytef *)body,
- (uLongf)(size - 32));
-#ifdef WORDS_BIGENDIAN
- {
- int x;
-
- for (x = 0; x < (w * h); x++) SWAP32(im->image->data[x]);
- }
-#endif
- }
- free(ret);
- eet_close(ef);
return 1;
}
#endif
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs