diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/evas/src/lib/engines/common/evas_polygon_main.c | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_polygon_main.c b/libraries/evas/src/lib/engines/common/evas_polygon_main.c index bca3f83..ea0bf13 100644 --- a/libraries/evas/src/lib/engines/common/evas_polygon_main.c +++ b/libraries/evas/src/lib/engines/common/evas_polygon_main.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <math.h> | 5 | #include <math.h> |
2 | 6 | ||
3 | #include "evas_common.h" | 7 | #include "evas_common.h" |
@@ -133,6 +137,14 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po | |||
133 | int ext_x, ext_y, ext_w, ext_h; | 137 | int ext_x, ext_y, ext_w, ext_h; |
134 | int *sorted_index; | 138 | int *sorted_index; |
135 | 139 | ||
140 | #ifdef HAVE_PIXMAN | ||
141 | # ifdef PIXMAN_POLY | ||
142 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
143 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
144 | op = PIXMAN_OP_OVER; | ||
145 | # endif | ||
146 | #endif | ||
147 | |||
136 | ext_x = 0; | 148 | ext_x = 0; |
137 | ext_y = 0; | 149 | ext_y = 0; |
138 | ext_w = dst->cache_entry.w; | 150 | ext_w = dst->cache_entry.w; |
@@ -279,10 +291,30 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po | |||
279 | if (((span->y) % dc->sli.h) == dc->sli.y) | 291 | if (((span->y) % dc->sli.h) == dc->sli.y) |
280 | #endif | 292 | #endif |
281 | { | 293 | { |
282 | ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x; | 294 | #ifdef HAVE_PIXMAN |
283 | func(NULL, NULL, dc->col.col, ptr, span->w); | 295 | # ifdef PIXMAN_POLY |
284 | } | 296 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
285 | } | 297 | (!dc->mask.mask)) |
298 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
299 | NULL, dst->pixman.im, | ||
300 | span->x, span->y, 0, 0, | ||
301 | span->x, span->y, span->w, 1); | ||
302 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
303 | (dc->mask.mask)) | ||
304 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
305 | dc->mask.mask->pixman.im, | ||
306 | dst->pixman.im, | ||
307 | span->x, span->y, 0, 0, | ||
308 | span->x, span->y, span->w, 1); | ||
309 | else | ||
310 | # endif | ||
311 | #endif | ||
312 | { | ||
313 | ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x; | ||
314 | func(NULL, NULL, dc->col.col, ptr, span->w); | ||
315 | } | ||
316 | } | ||
317 | } | ||
286 | while (spans) | 318 | while (spans) |
287 | { | 319 | { |
288 | span = (RGBA_Span *)spans; | 320 | span = (RGBA_Span *)spans; |