check sparseness when doing eet loads.

SVN revision: 26300
This commit is contained in:
Carsten Haitzler 2006-10-02 11:24:26 +00:00
parent 3df80d676c
commit 42aa3066e9
3 changed files with 8 additions and 3 deletions

View File

@ -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)
{

View File

@ -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
/*****************************************************************************/
/*****************************************************************************/

View File

@ -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);