From 42aa3066e91a8291668db27265a8697b4ae18d2b Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 2 Oct 2006 11:24:26 +0000 Subject: [PATCH] check sparseness when doing eet loads. SVN revision: 26300 --- legacy/evas/src/lib/engines/common/evas_image_main.c | 2 -- legacy/evas/src/lib/include/evas_common.h | 4 ++++ legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/legacy/evas/src/lib/engines/common/evas_image_main.c b/legacy/evas/src/lib/engines/common/evas_image_main.c index ef6fbfa4c8..ba89418b71 100644 --- a/legacy/evas/src/lib/engines/common/evas_image_main.c +++ b/legacy/evas/src/lib/engines/common/evas_image_main.c @@ -594,8 +594,6 @@ evas_common_image_alpha_line_buffer_free(void) evas_alpha_line_buffer = NULL; } -#define ALPHA_SPARSE_INV_FRACTION 3 - EAPI void evas_common_image_premul(RGBA_Image *im) { diff --git a/legacy/evas/src/lib/include/evas_common.h b/legacy/evas/src/lib/include/evas_common.h index 074a299e66..5ecc1c4b4b 100644 --- a/legacy/evas/src/lib/include/evas_common.h +++ b/legacy/evas/src/lib/include/evas_common.h @@ -65,6 +65,10 @@ # define DM_SHF(_b) (DM_BITS - (8 - _b)) #endif +/* if more than 1/ALPHA_SPARSE_INV_FRACTION is "alpha" (1-254) then sparse + * alpha flag gets set */ +#define ALPHA_SPARSE_INV_FRACTION 3 + /*****************************************************************************/ /*****************************************************************************/ diff --git a/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c b/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c index 528fb55c9c..b008011671 100644 --- a/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c +++ b/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c @@ -48,7 +48,6 @@ evas_image_load_file_head_eet(RGBA_Image *im, const char *file, const char *key) im->image->w = w; im->image->h = h; eet_close(ef); - evas_common_image_set_alpha_sparse(im); return 1; } @@ -59,6 +58,7 @@ evas_image_load_file_data_eet(RGBA_Image *im, const char *file, const char *key) int alpha, compression, quality, lossy; Eet_File *ef; DATA32 *body, *p, *end; + DATA32 nas = 0; if ((!file) || (!key)) return 0; if ((im->image) && (im->image->data)) return 1; @@ -101,11 +101,14 @@ evas_image_load_file_data_eet(RGBA_Image *im, const char *file, const char *key) r = R_VAL(p); g = G_VAL(p); b = B_VAL(p); + if ((a == 0) || (a == 255)) nas++; if (r > a) r = a; if (g > a) g = a; if (b > a) b = a; *p = ARGB_JOIN(a, r, g, b); } + if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (im->image->w * im->image->h)) + im->flags |= RGBA_IMAGE_ALPHA_SPARSE; } // result is already premultiplied now if u compile with edje // evas_common_image_premul(im);