This is the second in a series of patches to Evas files. The main thrust of these is to "improve" the drawing/blending C functions in the "engines/common" dir via the following:
1) Replace the current formula for the new destination alpha (when blending to rgba) by the formula BLEND_COLOR(a, A_VAL(dst), 255, A_VAL(dst), tmp) where "a" is the relevant alpha value. 2) Add tests, where appropiate, for the blending alpha value cases 0 and 255, and replace the latter with simpler 'copy' type equations. 3) Improve the accuracy of the "blend_alpha_color_pixel" and "blend_pixel_mult_pixel" types of functions by replacing equations of the form nc = ((c + 1) * cc) >> 8 with a macro defined by MULT_COLOR(nc, c, cc, tmp) \ { \ (tmp) = (c) * (cc); \ (nc) = ((tmp) + ((tmp) >> 8) + 0x80) >> 8; \ } This can also be defined as BLEND_COLOR(c, nc, cc, 0, tmp), but I believe it merits its own separate definition. The macro has been added to the file "evas_common.h" of the "include" dir, and is used by some of the subsequent patches. This patch involves the above mentioned file, and the file "evas_blend_ops.h" jose. ------------------------------------------------------------------------- ---------------------------- ---------------------------------------------- for evas_blend_ops.h ---------------------------------------------- Index: cvs/e17/libs/evas/src/lib/engines/common/evas_blend_ops.h =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_blend_op s.h,v retrieving revision 1.1 diff -u -r1.1 evas_blend_ops.h --- cvs/e17/libs/evas/src/lib/engines/common/evas_blend_ops.h 30 Jan 2004 05:46:57 -0000 1.1 +++ cvs/e17/libs/evas/src/lib/engines/common/evas_blend_ops.h 17 Mar 2004 07:32:45 -0000 @@ -9,6 +9,9 @@ if (A_VAL(src)) /* hmmm - do we need this? */ \ { \ __a = _evas_pow_lut[A_VAL(src)][A_VAL(dst)]; \ + BLEND_COLOR(A_VAL(src), A_VAL(dst), \ + 255, A_VAL(dst), \ + __tmp); \ BLEND_COLOR(__a, R_VAL(dst), \ R_VAL(src), R_VAL(dst), \ __tmp); \ @@ -18,7 +21,6 @@ BLEND_COLOR(__a, B_VAL(dst), \ B_VAL(src), B_VAL(dst), \ __tmp); \ - A_VAL(dst) = A_VAL(dst) + ((A_VAL(src) * (255 - A_VAL(dst))) / 255);\ } \ } ---------------------------------------------- for evas_common.h ---------------------------------------------- Index: cvs/e17/libs/evas/src/lib/include/evas_common.h =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/include/evas_common.h,v retrieving revision 1.23 diff -u -r1.23 evas_common.h --- cvs/e17/libs/evas/src/lib/include/evas_common.h 30 Jan 2004 05:46:57 -0000 1.23 +++ cvs/e17/libs/evas/src/lib/include/evas_common.h 17 Mar 2004 07:17:19 -0000 @@ -545,6 +545,12 @@ #define PIXEL_SOLID_ALPHA 0xff000000 +#define MULT_COLOR(nc, c, cc, tmp) \ +{ \ + (tmp) = (c) * (cc); \ + (nc) = ((tmp) + ((tmp) >> 8) + 0x80) >> 8; \ +} + #define SPANS_COMMON(x1, w1, x2, w2) \ (!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1))))) #define RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) \ ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ enlightenment-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel