Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/modules/engines/software_16 Modified Files: Makefile.am evas_soft16.h evas_soft16_main.c Added Files: evas_soft16_image_scaled_sampled.c evas_soft16_image_unscaled.c Log Message: Clean up structure, split image operations into files. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Makefile.am 20 Jun 2007 19:10:15 -0000 1.3 +++ Makefile.am 21 Jun 2007 19:57:56 -0000 1.4 @@ -13,6 +13,8 @@ evas_engine.c \ evas_soft16.h \ evas_soft16_main.c \ +evas_soft16_image_unscaled.c \ +evas_soft16_image_scaled_sampled.c \ evas_soft16_font.c \ evas_soft16_rectangle.c @@ -26,6 +28,8 @@ evas_engine.c \ evas_soft16.h \ evas_soft16_main.c \ +evas_soft16_image_unscaled.c \ +evas_soft16_image_scaled_sampled.c \ evas_soft16_font.c \ evas_soft16_rectangle.c \ evas_soft16_scanline_fill.c \ =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16/evas_soft16.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- evas_soft16.h 20 Jun 2007 19:10:15 -0000 1.4 +++ evas_soft16.h 21 Jun 2007 19:57:56 -0000 1.5 @@ -65,11 +65,14 @@ void soft16_image_load_data(Soft16_Image *im); void soft16_image_draw(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h, int smooth); +void soft16_image_draw_unscaled(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, const Evas_Rectangle sr, const Evas_Rectangle dr, const Evas_Rectangle cr); +void soft16_image_draw_scaled_sampled(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, const Evas_Rectangle sr, const Evas_Rectangle dr, const Evas_Rectangle cr); + + /** * Rectangle (evas_soft16_rectangle.c) */ -void soft16_rectangle_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, - int x, int y, int w, int h); +void soft16_rectangle_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h); /** @@ -78,4 +81,5 @@ void *soft16_font_glyph_new(void *data, RGBA_Font_Glyph *fg); void soft16_font_glyph_free(void *ext_dat); void soft16_font_glyph_draw(Soft16_Image *dst, void *data, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y); + #endif =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16/evas_soft16_main.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- evas_soft16_main.c 21 Jun 2007 19:56:32 -0000 1.7 +++ evas_soft16_main.c 21 Jun 2007 19:57:56 -0000 1.8 @@ -1,5 +1,4 @@ #include "evas_soft16.h" -#include "evas_soft16_scanline_blend.c" #define IMG_BYTE_SIZE(stride, height, has_alpha) \ ((stride) * (height) * (!(has_alpha) ? 2 : 3)) @@ -396,770 +395,6 @@ return 1; } -/*********************************************************************** - * Unscaled - **********************************************************************/ -static void -_soft16_image_draw_unscaled_solid_solid(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, int dst_offset, - int w, int h) -{ - DATA16 *src_itr, *dst_itr; - int y; - - src_itr = src->pixels + src_offset; - dst_itr = dst->pixels + dst_offset; - - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_solid_solid(src_itr, dst_itr, w); - src_itr += src->stride; - dst_itr += dst->stride; - } -} - -static void -_soft16_image_draw_unscaled_transp_solid(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, int dst_offset, - int w, int h) - -{ - DATA16 *src_itr, *dst_itr; - DATA8 *alpha_itr; - int y; - - src_itr = src->pixels + src_offset; - alpha_itr = src->alpha + src_offset; - dst_itr = dst->pixels + dst_offset; - - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_transp_solid(src_itr, alpha_itr, dst_itr, w); - src_itr += src->stride; - alpha_itr += src->stride; - dst_itr += dst->stride; - } -} - -static inline void -_soft16_image_draw_unscaled_no_mul(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, int dst_offset, - int width, int height) -{ - if (src->have_alpha && (!dst->have_alpha)) - _soft16_image_draw_unscaled_transp_solid(src, dst, dc, - src_offset, dst_offset, - width, height); - else if ((!src->have_alpha) && (!dst->have_alpha)) - _soft16_image_draw_unscaled_solid_solid(src, dst, dc, - src_offset, dst_offset, - width, height); - else - fprintf(stderr, - "Unsupported draw of unscaled images src->have_alpha=%d, " - "dst->have_alpha=%d, WITHOUT COLOR MUL\n", - src->have_alpha, dst->have_alpha); -} - -static void -_soft16_image_draw_unscaled_solid_solid_mul_alpha(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, - int dst_offset, - int w, int h) -{ - DATA16 *src_itr, *dst_itr; - int y, rel_alpha; - - src_itr = src->pixels + src_offset; - dst_itr = dst->pixels + dst_offset; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - rel_alpha = 31 - rel_alpha; - - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_solid_solid_mul_alpha(src_itr, dst_itr, w, - rel_alpha); - src_itr += src->stride; - dst_itr += dst->stride; - } -} - -static void -_soft16_image_draw_unscaled_transp_solid_mul_alpha(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, - int dst_offset, - int w, int h) - -{ - DATA16 *src_itr, *dst_itr; - DATA8 *alpha_itr; - int y, rel_alpha; - - src_itr = src->pixels + src_offset; - alpha_itr = src->alpha + src_offset; - dst_itr = dst->pixels + dst_offset; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - rel_alpha = 31 - rel_alpha; - - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_transp_solid_mul_alpha(src_itr, alpha_itr, - dst_itr, w, rel_alpha); - src_itr += src->stride; - alpha_itr += src->stride; - dst_itr += dst->stride; - } -} - -static inline void -_soft16_image_draw_unscaled_mul_alpha(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, int dst_offset, - int width, int height) -{ - if (src->have_alpha && (!dst->have_alpha)) - _soft16_image_draw_unscaled_transp_solid_mul_alpha - (src, dst, dc, src_offset, dst_offset, width, height); - else if ((!src->have_alpha) && (!dst->have_alpha)) - _soft16_image_draw_unscaled_solid_solid_mul_alpha - (src, dst, dc, src_offset, dst_offset, width, height); - else - fprintf(stderr, - "Unsupported draw of unscaled images src->have_alpha=%d, " - "dst->have_alpha=%d, WITH ALPHA MUL %d\n", - src->have_alpha, dst->have_alpha, A_VAL(&dc->mul.col)); -} - -static void -_soft16_image_draw_unscaled_solid_solid_mul_color(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, - int dst_offset, - int w, int h) -{ - DATA16 *src_itr, *dst_itr; - int y, rel_alpha, r, g, b; - - src_itr = src->pixels + src_offset; - dst_itr = dst->pixels + dst_offset; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - - r = R_VAL(&dc->mul.col); - g = G_VAL(&dc->mul.col); - b = B_VAL(&dc->mul.col); - /* we'll divide by 256 to make it faster, try to improve things a bit */ - if (r > 127) r++; - if (g > 127) g++; - if (b > 127) b++; - - if (rel_alpha == 31) - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_solid_solid_mul_color_solid - (src_itr, dst_itr, w, r, g, b); - src_itr += src->stride; - dst_itr += dst->stride; - } - else - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_solid_solid_mul_color_transp - (src_itr, dst_itr, w, rel_alpha, r, g, b); - src_itr += src->stride; - dst_itr += dst->stride; - } -} - -static void -_soft16_image_draw_unscaled_transp_solid_mul_color(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, - int dst_offset, - int w, int h) - -{ - DATA16 *src_itr, *dst_itr; - DATA8 *alpha_itr; - int y, rel_alpha, r, g, b; - - src_itr = src->pixels + src_offset; - alpha_itr = src->alpha + src_offset; - dst_itr = dst->pixels + dst_offset; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - rel_alpha = 31 - rel_alpha; - - r = R_VAL(&dc->mul.col); - g = G_VAL(&dc->mul.col); - b = B_VAL(&dc->mul.col); - /* we'll divide by 256 to make it faster, try to improve things a bit */ - if (r > 127) r++; - if (g > 127) g++; - if (b > 127) b++; - - if (rel_alpha == 0) - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_transp_solid_mul_color_solid - (src_itr, alpha_itr, dst_itr, w, r, g, b); - src_itr += src->stride; - alpha_itr += src->stride; - dst_itr += dst->stride; - } - else - for (y = 0; y < h; y++) - { - _soft16_scanline_blend_transp_solid_mul_color_transp - (src_itr, alpha_itr, dst_itr, w, rel_alpha, r, g, b); - src_itr += src->stride; - alpha_itr += src->stride; - dst_itr += dst->stride; - } -} - -static inline void -_soft16_image_draw_unscaled_mul_color(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, int dst_offset, - int width, int height) -{ - if (src->have_alpha && (!dst->have_alpha)) - _soft16_image_draw_unscaled_transp_solid_mul_color - (src, dst, dc, src_offset, dst_offset, width, height); - else if ((!src->have_alpha) && (!dst->have_alpha)) - _soft16_image_draw_unscaled_solid_solid_mul_color - (src, dst, dc, src_offset, dst_offset, width, height); - else - fprintf(stderr, - "Unsupported draw of unscaled images src->have_alpha=%d, " - "dst->have_alpha=%d, WITH COLOR MUL 0x%08x\n", - src->have_alpha, dst->have_alpha, dc->mul.col); -} - -static inline void -_soft16_image_draw_unscaled_mul(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int src_offset, int dst_offset, - int width, int height) -{ - if ((A_VAL(&dc->mul.col) == R_VAL(&dc->mul.col)) && - (A_VAL(&dc->mul.col) == G_VAL(&dc->mul.col)) && - (A_VAL(&dc->mul.col) == B_VAL(&dc->mul.col))) - _soft16_image_draw_unscaled_mul_alpha(src, dst, dc, src_offset, - dst_offset, width, height); - else - _soft16_image_draw_unscaled_mul_color(src, dst, dc, src_offset, - dst_offset, width, height); -} - -static void -_soft16_image_draw_unscaled(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - const Evas_Rectangle sr, - const Evas_Rectangle dr, - const Evas_Rectangle cr) -{ - int src_offset_rows, src_offset, dst_offset; - - src_offset_rows = (cr.y - dr.y) + sr.y; - src_offset = (src_offset_rows * src->stride) + (cr.x - dr.x) + sr.x; - - dst_offset = cr.x + (cr.y * dst->stride); - - if ((!dc->mul.use) || (dc->mul.col == 0xffffffff)) - _soft16_image_draw_unscaled_no_mul(src, dst, dc, src_offset, dst_offset, - cr.w, cr.h); - else if (dc->mul.col != 0x00000000) - _soft16_image_draw_unscaled_mul(src, dst, dc, src_offset, dst_offset, - cr.w, cr.h); -} - -/*********************************************************************** - * Scaled - ***********************************************************************/ -static void -_soft16_image_draw_scaled_solid_solid(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - DATA16 *dst_itr; - int y, w_align; - - w_align = w & ~7; - - dst_itr = dst->pixels + dst_offset; - for (y = 0; y < h; y++, dst_itr += dst->stride) - { - DATA16 *d, *s; - int x; - - s = src->pixels + offset_y[y]; - pld(s, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(offset_x + x, 32); - - UNROLL8({ - _soft16_pt_blend_solid_solid(d, s[offset_x[x]]); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_solid_solid(d, s[offset_x[x]]); - } -} -static void -_soft16_image_draw_scaled_transp_solid(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - DATA16 *dst_itr; - int y, w_align; - - w_align = w & ~7; - - dst_itr = dst->pixels + dst_offset; - for (y = 0; y < h; y++, dst_itr += dst->stride) - { - DATA16 *d, *s; - DATA8 *a; - int x; - - s = src->pixels + offset_y[y]; - a = src->alpha + offset_y[y]; - pld(s, 0); - pld(a, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(a, 8); - pld(offset_x + x, 32); - - UNROLL8({ - int off_x = offset_x[x]; - _soft16_pt_blend_transp_solid(d, s[off_x], a[off_x]); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_transp_solid(d, s[offset_x[x]], a[offset_x[x]]); - } -} - -static inline void -_soft16_image_draw_scaled_no_mul(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - if (src->have_alpha && (!dst->have_alpha)) - _soft16_image_draw_scaled_transp_solid - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); - else if ((!src->have_alpha) && (!dst->have_alpha)) - _soft16_image_draw_scaled_solid_solid - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); - else - fprintf(stderr, - "Unsupported draw of scaled images src->have_alpha=%d, " - "dst->have_alpha=%d, WITHOUT COLOR MUL\n", - src->have_alpha, dst->have_alpha); -} - -static void -_soft16_image_draw_scaled_solid_solid_mul_alpha(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - DATA16 *dst_itr; - int y, w_align, rel_alpha; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - rel_alpha = 31 - rel_alpha; - - w_align = w & ~7; - - dst_itr = dst->pixels + dst_offset; - for (y = 0; y < h; y++, dst_itr += dst->stride) - { - DATA16 *d, *s; - int x; - - s = src->pixels + offset_y[y]; - pld(s, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(offset_x + x, 32); - - UNROLL8({ - _soft16_pt_blend_solid_solid_mul_alpha - (d, s[offset_x[x]], rel_alpha); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_solid_solid_mul_alpha - (d, s[offset_x[x]], rel_alpha); - } -} - -static void -_soft16_image_draw_scaled_transp_solid_mul_alpha(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - DATA16 *dst_itr; - int y, w_align, rel_alpha; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - rel_alpha = 31 - rel_alpha; - - w_align = w & ~7; - - dst_itr = dst->pixels + dst_offset; - for (y = 0; y < h; y++, dst_itr += dst->stride) - { - DATA16 *d, *s; - DATA8 *a; - int x; - - s = src->pixels + offset_y[y]; - a = src->alpha + offset_y[y]; - pld(s, 0); - pld(a, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(a, 8); - pld(offset_x + x, 32); - - UNROLL8({ - int off_x = offset_x[x]; - _soft16_pt_blend_transp_solid_mul_alpha - (d, s[off_x], a[off_x], rel_alpha); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_transp_solid_mul_alpha - (d, s[offset_x[x]], a[offset_x[x]], rel_alpha); - } -} - -static inline void -_soft16_image_draw_scaled_mul_alpha(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - if (src->have_alpha && (!dst->have_alpha)) - _soft16_image_draw_scaled_transp_solid_mul_alpha - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); - else if ((!src->have_alpha) && (!dst->have_alpha)) - _soft16_image_draw_scaled_solid_solid_mul_alpha - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); - else - fprintf(stderr, - "Unsupported draw of scaled images src->have_alpha=%d, " - "dst->have_alpha=%d, WITH ALPHA MUL %d\n", - src->have_alpha, dst->have_alpha, A_VAL(&dc->mul.col)); -} - -static void -_soft16_image_draw_scaled_solid_solid_mul_color(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - DATA16 *dst_itr; - int y, w_align, rel_alpha, r, g, b; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - - r = R_VAL(&dc->mul.col); - g = G_VAL(&dc->mul.col); - b = B_VAL(&dc->mul.col); - /* we'll divide by 256 to make it faster, try to improve things a bit */ - if (r > 127) r++; - if (g > 127) g++; - if (b > 127) b++; - - w_align = w & ~7; - - dst_itr = dst->pixels + dst_offset; - - if (rel_alpha == 31) - for (y = 0; y < h; y++, dst_itr += dst->stride) - { - DATA16 *d, *s; - int x; - - s = src->pixels + offset_y[y]; - pld(s, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(offset_x + x, 32); - - UNROLL8({ - _soft16_pt_blend_solid_solid_mul_color_solid - (d, s[offset_x[x]], r, g, b); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_solid_solid_mul_color_solid - (d, s[offset_x[x]], r, g, b); - } - else - for (y = 0; y < h; y++, dst_itr += dst->stride) - { - DATA16 *d, *s; - int x; - - s = src->pixels + offset_y[y]; - pld(s, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(offset_x + x, 32); - - UNROLL8({ - _soft16_pt_blend_solid_solid_mul_color_transp - (d, s[offset_x[x]], rel_alpha, r, g, b); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_solid_solid_mul_color_transp - (d, s[offset_x[x]], rel_alpha, r, g, b); - } -} - -static void -_soft16_image_draw_scaled_transp_solid_mul_color(Soft16_Image *src, - Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - DATA16 *dst_itr; - int y, w_align, rel_alpha, r, g, b; - - rel_alpha = A_VAL(&dc->mul.col) >> 3; - if ((rel_alpha < 1) || (rel_alpha > 31)) return; - rel_alpha = 31 - rel_alpha; - - r = R_VAL(&dc->mul.col); - g = G_VAL(&dc->mul.col); - b = B_VAL(&dc->mul.col); - /* we'll divide by 256 to make it faster, try to improve things a bit */ - if (r > 127) r++; - if (g > 127) g++; - if (b > 127) b++; - - w_align = w & ~7; - - dst_itr = dst->pixels + dst_offset; - - if (rel_alpha == 0) - for (y = 0; y < h; y++, dst_itr += dst->stride) - { - DATA16 *d, *s; - DATA8 *a; - int x; - - s = src->pixels + offset_y[y]; - a = src->alpha + offset_y[y]; - pld(s, 0); - pld(a, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(a, 8); - pld(offset_x + x, 32); - - UNROLL8({ - int off_x = offset_x[x]; - _soft16_pt_blend_transp_solid_mul_color_solid - (d, s[off_x], a[off_x], r, g, b); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_transp_solid_mul_color_solid - (d, s[offset_x[x]], a[offset_x[x]], r, g, b); - } - else - { - DATA16 *d, *s; - DATA8 *a; - int x; - - s = src->pixels + offset_y[y]; - a = src->alpha + offset_y[y]; - pld(s, 0); - pld(a, 0); - pld(offset_x, 0); - - d = dst_itr; - x = 0; - while (x < w_align) - { - pld(s, 32); - pld(a, 8); - pld(offset_x + x, 32); - - UNROLL8({ - int off_x = offset_x[x]; - _soft16_pt_blend_transp_solid_mul_color_transp - (d, s[off_x], a[off_x], rel_alpha, r, g, b); - x++; - d++; - }); - } - - for (; x < w; x++, d++) - _soft16_pt_blend_transp_solid_mul_color_transp - (d, s[offset_x[x]], a[offset_x[x]], rel_alpha, r, g, b); - } -} - -static inline void -_soft16_image_draw_scaled_mul_color(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - if (src->have_alpha && (!dst->have_alpha)) - _soft16_image_draw_scaled_transp_solid_mul_color - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); - else if ((!src->have_alpha) && (!dst->have_alpha)) - _soft16_image_draw_scaled_solid_solid_mul_color - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); - else - fprintf(stderr, - "Unsupported draw of scaled images src->have_alpha=%d, " - "dst->have_alpha=%d, WITH COLOR MUL 0x%08x\n", - src->have_alpha, dst->have_alpha, dc->mul.col); -} - -static inline void -_soft16_image_draw_scaled_mul(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - int dst_offset, int w, int h, - int *offset_x, int *offset_y) -{ - if ((A_VAL(&dc->mul.col) == R_VAL(&dc->mul.col)) && - (A_VAL(&dc->mul.col) == G_VAL(&dc->mul.col)) && - (A_VAL(&dc->mul.col) == B_VAL(&dc->mul.col))) - _soft16_image_draw_scaled_mul_alpha - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); - else - _soft16_image_draw_scaled_mul_color - (src, dst, dc, dst_offset, w, h, offset_x, offset_y); -} - -static void -_soft16_image_draw_scaled(Soft16_Image *src, Soft16_Image *dst, - RGBA_Draw_Context *dc, - const Evas_Rectangle sr, - const Evas_Rectangle dr, - const Evas_Rectangle cr) -{ - int x, y, dst_offset, *offset_x, *offset_y; - - /* pre-calculated scale tables */ - offset_x = alloca(cr.w * sizeof(*offset_x)); - for (x = 0; x < cr.w; x++) - offset_x[x] = (((x + cr.x - dr.x) * sr.w) / dr.w) + sr.x; - - offset_y = alloca(cr.h * sizeof(*offset_y)); - for (y = 0; y < cr.h; y++) - offset_y[y] = (((((y + cr.y - dr.y) * sr.h) / dr.h) + sr.y) - * src->stride); - - dst_offset = cr.x + (cr.y * dst->stride); - - if ((!dc->mul.use) || (dc->mul.col == 0xffffffff)) - _soft16_image_draw_scaled_no_mul - (src, dst, dc, dst_offset, cr.w, cr.h, offset_x, offset_y); - else if (dc->mul.col != 0x00000000) - _soft16_image_draw_scaled_mul - (src, dst, dc, dst_offset, cr.w, cr.h, offset_x, offset_y); -} - static void _soft16_image_draw_sampled_int(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, @@ -1174,12 +409,12 @@ _get_clip(dc, dst, &cr); if (!_soft16_adjust_areas(&sr, src->w, src->h, &dr, dst->w, dst->h, &cr)) - return; + return; if ((dr.w == sr.w) && (dr.h == sr.h)) - _soft16_image_draw_unscaled(src, dst, dc, sr, dr, cr); + soft16_image_draw_unscaled(src, dst, dc, sr, dr, cr); else - _soft16_image_draw_scaled(src, dst, dc, sr, dr, cr); + soft16_image_draw_scaled_sampled(src, dst, dc, sr, dr, cr); } void ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs