aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/lib/engines
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/evas/src/lib/engines/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c84
-rw-r--r--libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c347
-rw-r--r--libraries/evas/src/lib/engines/common/evas_convert_yuv.c4
-rw-r--r--libraries/evas/src/lib/engines/common/evas_cpu.c4
-rw-r--r--libraries/evas/src/lib/engines/common/evas_draw_main.c68
-rw-r--r--libraries/evas/src/lib/engines/common/evas_font_draw.c135
-rw-r--r--libraries/evas/src/lib/engines/common/evas_font_main.c4
-rw-r--r--libraries/evas/src/lib/engines/common/evas_image_data.c4
-rw-r--r--libraries/evas/src/lib/engines/common/evas_image_load.c4
-rw-r--r--libraries/evas/src/lib/engines/common/evas_image_main.c56
-rw-r--r--libraries/evas/src/lib/engines/common/evas_image_scalecache.c2
-rw-r--r--libraries/evas/src/lib/engines/common/evas_line_main.c475
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c3
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c3
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c1
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_polygon_main.c40
-rw-r--r--libraries/evas/src/lib/engines/common/evas_rectangle_main.c34
-rw-r--r--libraries/evas/src/lib/engines/common/evas_scale_sample.c113
-rw-r--r--libraries/evas/src/lib/engines/common/evas_tiler.c4
-rw-r--r--libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c4
-rw-r--r--libraries/evas/src/lib/engines/common/language/evas_language_utils.c6
-rw-r--r--libraries/evas/src/lib/engines/common_16/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common_8/Makefile.in8
31 files changed, 1113 insertions, 362 deletions
diff --git a/libraries/evas/src/lib/engines/Makefile.in b/libraries/evas/src/lib/engines/Makefile.in
index 12e28c1..4c3c1da 100644
--- a/libraries/evas/src/lib/engines/Makefile.in
+++ b/libraries/evas/src/lib/engines/Makefile.in
@@ -208,8 +208,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
208PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 208PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
209PIXMAN_LIBS = @PIXMAN_LIBS@ 209PIXMAN_LIBS = @PIXMAN_LIBS@
210PKG_CONFIG = @PKG_CONFIG@ 210PKG_CONFIG = @PKG_CONFIG@
211PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
212PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
213PNG_CFLAGS = @PNG_CFLAGS@ 211PNG_CFLAGS = @PNG_CFLAGS@
214PNG_LIBS = @PNG_LIBS@ 212PNG_LIBS = @PNG_LIBS@
215RANLIB = @RANLIB@ 213RANLIB = @RANLIB@
@@ -226,6 +224,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
226VALGRIND_LIBS = @VALGRIND_LIBS@ 224VALGRIND_LIBS = @VALGRIND_LIBS@
227VERSION = @VERSION@ 225VERSION = @VERSION@
228VMAJ = @VMAJ@ 226VMAJ = @VMAJ@
227WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
228WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
229WIN32_CFLAGS = @WIN32_CFLAGS@ 229WIN32_CFLAGS = @WIN32_CFLAGS@
230WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 230WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
231XCB_CFLAGS = @XCB_CFLAGS@ 231XCB_CFLAGS = @XCB_CFLAGS@
@@ -307,6 +307,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
307evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 307evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
308evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 308evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
309evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 309evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
310evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
311evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
312evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
313evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
310evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 314evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
311evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 315evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
312evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 316evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common/Makefile.in b/libraries/evas/src/lib/engines/common/Makefile.in
index b0162df..7d1f20a 100644
--- a/libraries/evas/src/lib/engines/common/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/Makefile.in
@@ -252,8 +252,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
252PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 252PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
253PIXMAN_LIBS = @PIXMAN_LIBS@ 253PIXMAN_LIBS = @PIXMAN_LIBS@
254PKG_CONFIG = @PKG_CONFIG@ 254PKG_CONFIG = @PKG_CONFIG@
255PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
256PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
257PNG_CFLAGS = @PNG_CFLAGS@ 255PNG_CFLAGS = @PNG_CFLAGS@
258PNG_LIBS = @PNG_LIBS@ 256PNG_LIBS = @PNG_LIBS@
259RANLIB = @RANLIB@ 257RANLIB = @RANLIB@
@@ -270,6 +268,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
270VALGRIND_LIBS = @VALGRIND_LIBS@ 268VALGRIND_LIBS = @VALGRIND_LIBS@
271VERSION = @VERSION@ 269VERSION = @VERSION@
272VMAJ = @VMAJ@ 270VMAJ = @VMAJ@
271WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
272WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
273WIN32_CFLAGS = @WIN32_CFLAGS@ 273WIN32_CFLAGS = @WIN32_CFLAGS@
274WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 274WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
275XCB_CFLAGS = @XCB_CFLAGS@ 275XCB_CFLAGS = @XCB_CFLAGS@
@@ -351,6 +351,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
351evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 351evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
352evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 352evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
353evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 353evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
354evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
355evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
356evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
357evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
354evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 358evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
355evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 359evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
356evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 360evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c b/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c
index b30ec1e..796ff17 100644
--- a/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c
+++ b/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c
@@ -117,7 +117,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr
117 } 117 }
118#endif 118#endif
119 return; 119 return;
120 pal = 0; 120 (void)pal;
121#else 121#else
122 DATA16 *d = (DATA16 *)dst; 122 DATA16 *d = (DATA16 *)dst;
123 int w0 = w; 123 int w0 = w;
@@ -144,7 +144,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr
144 d += dst_jump; 144 d += dst_jump;
145 } 145 }
146 return; 146 return;
147 pal = 0; 147 (void)pal;
148#endif 148#endif
149} 149}
150#endif 150#endif
@@ -216,7 +216,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src
216 } 216 }
217#endif 217#endif
218 return; 218 return;
219 pal = 0; 219 (void)pal;
220#else 220#else
221 DATA16 *d = (DATA16 *)dst; 221 DATA16 *d = (DATA16 *)dst;
222 int w0 = w; 222 int w0 = w;
@@ -233,7 +233,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src
233 d += dst_jump; 233 d += dst_jump;
234 } 234 }
235 return; 235 return;
236 pal = 0; 236 (void)pal;
237#endif 237#endif
238} 238}
239#endif 239#endif
@@ -295,7 +295,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst
295 295
296 CONVERT_LOOP2_END_ROT_180(); 296 CONVERT_LOOP2_END_ROT_180();
297 return; 297 return;
298 pal = 0; 298 (void)pal;
299} 299}
300#endif 300#endif
301#endif 301#endif
@@ -333,7 +333,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst,
333 333
334 CONVERT_LOOP_END_ROT_180(); 334 CONVERT_LOOP_END_ROT_180();
335 return; 335 return;
336 pal = 0; 336 (void)pal;
337} 337}
338#endif 338#endif
339#endif 339#endif
@@ -394,7 +394,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst
394 394
395 CONVERT_LOOP2_END_ROT_270(); 395 CONVERT_LOOP2_END_ROT_270();
396 return; 396 return;
397 pal = 0; 397 (void)pal;
398} 398}
399#endif 399#endif
400#endif 400#endif
@@ -432,7 +432,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst,
432 432
433 CONVERT_LOOP_END_ROT_270(); 433 CONVERT_LOOP_END_ROT_270();
434 return; 434 return;
435 pal = 0; 435 (void)pal;
436} 436}
437#endif 437#endif
438#endif 438#endif
@@ -493,7 +493,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst,
493 493
494 CONVERT_LOOP2_END_ROT_90(); 494 CONVERT_LOOP2_END_ROT_90();
495 return; 495 return;
496 pal = 0; 496 (void)pal;
497} 497}
498#endif 498#endif
499#endif 499#endif
@@ -531,7 +531,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst,
531 531
532 CONVERT_LOOP_END_ROT_90(); 532 CONVERT_LOOP_END_ROT_90();
533 return; 533 return;
534 pal = 0; 534 (void)pal;
535} 535}
536#endif 536#endif
537#endif 537#endif
@@ -592,7 +592,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int sr
592 592
593 CONVERT_LOOP2_END_ROT_0(); 593 CONVERT_LOOP2_END_ROT_0();
594 return; 594 return;
595 pal = 0; 595 (void)pal;
596} 596}
597#endif 597#endif
598#endif 598#endif
@@ -630,7 +630,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int src
630 630
631 CONVERT_LOOP_END_ROT_0(); 631 CONVERT_LOOP_END_ROT_0();
632 return; 632 return;
633 pal = 0; 633 (void)pal;
634} 634}
635#endif 635#endif
636#endif 636#endif
@@ -691,7 +691,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst
691 691
692 CONVERT_LOOP2_END_ROT_180(); 692 CONVERT_LOOP2_END_ROT_180();
693 return; 693 return;
694 pal = 0; 694 (void)pal;
695} 695}
696#endif 696#endif
697#endif 697#endif
@@ -731,7 +731,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst,
731 731
732 CONVERT_LOOP_END_ROT_180(); 732 CONVERT_LOOP_END_ROT_180();
733 return; 733 return;
734 pal = 0; 734 (void)pal;
735} 735}
736#endif 736#endif
737#endif 737#endif
@@ -792,7 +792,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst
792 792
793 CONVERT_LOOP2_END_ROT_270(); 793 CONVERT_LOOP2_END_ROT_270();
794 return; 794 return;
795 pal = 0; 795 (void)pal;
796} 796}
797#endif 797#endif
798#endif 798#endif
@@ -830,7 +830,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst,
830 830
831 CONVERT_LOOP_END_ROT_270(); 831 CONVERT_LOOP_END_ROT_270();
832 return; 832 return;
833 pal = 0; 833 (void)pal;
834} 834}
835#endif 835#endif
836#endif 836#endif
@@ -891,7 +891,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst,
891 891
892 CONVERT_LOOP2_END_ROT_90(); 892 CONVERT_LOOP2_END_ROT_90();
893 return; 893 return;
894 pal = 0; 894 (void)pal;
895} 895}
896#endif 896#endif
897#endif 897#endif
@@ -929,7 +929,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst,
929 929
930 CONVERT_LOOP_END_ROT_90(); 930 CONVERT_LOOP_END_ROT_90();
931 return; 931 return;
932 pal = 0; 932 (void)pal;
933} 933}
934#endif 934#endif
935#endif 935#endif
@@ -988,7 +988,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int sr
988 988
989 CONVERT_LOOP2_END_ROT_0(); 989 CONVERT_LOOP2_END_ROT_0();
990 return; 990 return;
991 pal = 0; 991 (void)pal;
992} 992}
993#endif 993#endif
994#endif 994#endif
@@ -1025,7 +1025,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int src
1025 1025
1026 CONVERT_LOOP_END_ROT_0(); 1026 CONVERT_LOOP_END_ROT_0();
1027 return; 1027 return;
1028 pal = 0; 1028 (void)pal;
1029} 1029}
1030#endif 1030#endif
1031#endif 1031#endif
@@ -1084,7 +1084,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst
1084 1084
1085 CONVERT_LOOP2_END_ROT_180(); 1085 CONVERT_LOOP2_END_ROT_180();
1086 return; 1086 return;
1087 pal = 0; 1087 (void)pal;
1088} 1088}
1089#endif 1089#endif
1090#endif 1090#endif
@@ -1121,7 +1121,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst,
1121 1121
1122 CONVERT_LOOP_END_ROT_180(); 1122 CONVERT_LOOP_END_ROT_180();
1123 return; 1123 return;
1124 pal = 0; 1124 (void)pal;
1125} 1125}
1126#endif 1126#endif
1127#endif 1127#endif
@@ -1180,7 +1180,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst
1180 1180
1181 CONVERT_LOOP2_END_ROT_270(); 1181 CONVERT_LOOP2_END_ROT_270();
1182 return; 1182 return;
1183 pal = 0; 1183 (void)pal;
1184} 1184}
1185#endif 1185#endif
1186#endif 1186#endif
@@ -1217,7 +1217,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst,
1217 1217
1218 CONVERT_LOOP_END_ROT_270(); 1218 CONVERT_LOOP_END_ROT_270();
1219 return; 1219 return;
1220 pal = 0; 1220 (void)pal;
1221} 1221}
1222#endif 1222#endif
1223#endif 1223#endif
@@ -1276,7 +1276,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst,
1276 1276
1277 CONVERT_LOOP2_END_ROT_90(); 1277 CONVERT_LOOP2_END_ROT_90();
1278 return; 1278 return;
1279 pal = 0; 1279 (void)pal;
1280} 1280}
1281#endif 1281#endif
1282#endif 1282#endif
@@ -1313,7 +1313,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst,
1313 1313
1314 CONVERT_LOOP_END_ROT_90(); 1314 CONVERT_LOOP_END_ROT_90();
1315 return; 1315 return;
1316 pal = 0; 1316 (void)pal;
1317} 1317}
1318#endif 1318#endif
1319#endif 1319#endif
@@ -1372,7 +1372,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int
1372 1372
1373 CONVERT_LOOP2_END_ROT_0(); 1373 CONVERT_LOOP2_END_ROT_0();
1374 return; 1374 return;
1375 pal = 0; 1375 (void)pal;
1376} 1376}
1377#endif 1377#endif
1378#endif 1378#endif
@@ -1409,7 +1409,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int
1409 1409
1410 CONVERT_LOOP_END_ROT_0(); 1410 CONVERT_LOOP_END_ROT_0();
1411 return; 1411 return;
1412 pal = 0; 1412 (void)pal;
1413} 1413}
1414#endif 1414#endif
1415#endif 1415#endif
@@ -1468,7 +1468,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *
1468 1468
1469 CONVERT_LOOP2_END_ROT_180(); 1469 CONVERT_LOOP2_END_ROT_180();
1470 return; 1470 return;
1471 pal = 0; 1471 (void)pal;
1472} 1472}
1473#endif 1473#endif
1474#endif 1474#endif
@@ -1505,7 +1505,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *d
1505 1505
1506 CONVERT_LOOP_END_ROT_180(); 1506 CONVERT_LOOP_END_ROT_180();
1507 return; 1507 return;
1508 pal = 0; 1508 (void)pal;
1509} 1509}
1510#endif 1510#endif
1511#endif 1511#endif
@@ -1565,7 +1565,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *
1565 1565
1566 CONVERT_LOOP2_END_ROT_270(); 1566 CONVERT_LOOP2_END_ROT_270();
1567 return; 1567 return;
1568 pal = 0; 1568 (void)pal;
1569} 1569}
1570#endif 1570#endif
1571#endif 1571#endif
@@ -1602,7 +1602,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *d
1602 1602
1603 CONVERT_LOOP_END_ROT_270(); 1603 CONVERT_LOOP_END_ROT_270();
1604 return; 1604 return;
1605 pal = 0; 1605 (void)pal;
1606} 1606}
1607#endif 1607#endif
1608#endif 1608#endif
@@ -1661,7 +1661,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *d
1661 1661
1662 CONVERT_LOOP2_END_ROT_90(); 1662 CONVERT_LOOP2_END_ROT_90();
1663 return; 1663 return;
1664 pal = 0; 1664 (void)pal;
1665} 1665}
1666#endif 1666#endif
1667#endif 1667#endif
@@ -1698,7 +1698,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *ds
1698 1698
1699 CONVERT_LOOP_END_ROT_90(); 1699 CONVERT_LOOP_END_ROT_90();
1700 return; 1700 return;
1701 pal = 0; 1701 (void)pal;
1702} 1702}
1703#endif 1703#endif
1704#endif 1704#endif
@@ -1757,7 +1757,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int sr
1757 1757
1758 CONVERT_LOOP2_END_ROT_0(); 1758 CONVERT_LOOP2_END_ROT_0();
1759 return; 1759 return;
1760 pal = 0; 1760 (void)pal;
1761} 1761}
1762#endif 1762#endif
1763#endif 1763#endif
@@ -1794,7 +1794,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int src
1794 1794
1795 CONVERT_LOOP_END_ROT_0(); 1795 CONVERT_LOOP_END_ROT_0();
1796 return; 1796 return;
1797 pal = 0; 1797 (void)pal;
1798} 1798}
1799#endif 1799#endif
1800#endif 1800#endif
@@ -1853,7 +1853,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst
1853 1853
1854 CONVERT_LOOP2_END_ROT_180(); 1854 CONVERT_LOOP2_END_ROT_180();
1855 return; 1855 return;
1856 pal = 0; 1856 (void)pal;
1857} 1857}
1858#endif 1858#endif
1859#endif 1859#endif
@@ -1890,7 +1890,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst,
1890 1890
1891 CONVERT_LOOP_END_ROT_180(); 1891 CONVERT_LOOP_END_ROT_180();
1892 return; 1892 return;
1893 pal = 0; 1893 (void)pal;
1894} 1894}
1895#endif 1895#endif
1896#endif 1896#endif
@@ -1949,7 +1949,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst
1949 1949
1950 CONVERT_LOOP2_END_ROT_270(); 1950 CONVERT_LOOP2_END_ROT_270();
1951 return; 1951 return;
1952 pal = 0; 1952 (void)pal;
1953} 1953}
1954#endif 1954#endif
1955#endif 1955#endif
@@ -1986,7 +1986,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst,
1986 1986
1987 CONVERT_LOOP_END_ROT_270(); 1987 CONVERT_LOOP_END_ROT_270();
1988 return; 1988 return;
1989 pal = 0; 1989 (void)pal;
1990} 1990}
1991#endif 1991#endif
1992#endif 1992#endif
@@ -2045,7 +2045,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst,
2045 2045
2046 CONVERT_LOOP2_END_ROT_90(); 2046 CONVERT_LOOP2_END_ROT_90();
2047 return; 2047 return;
2048 pal = 0; 2048 (void)pal;
2049} 2049}
2050#endif 2050#endif
2051#endif 2051#endif
@@ -2082,7 +2082,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst,
2082 2082
2083 CONVERT_LOOP_END_ROT_90(); 2083 CONVERT_LOOP_END_ROT_90();
2084 return; 2084 return;
2085 pal = 0; 2085 (void)pal;
2086} 2086}
2087#endif 2087#endif
2088#endif 2088#endif
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c b/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c
index 41dac6f..0401a4a 100644
--- a/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c
+++ b/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c
@@ -48,15 +48,167 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_180 (DATA32 *src, DATA8 *dst, int
48#endif 48#endif
49#endif 49#endif
50 50
51#ifdef TILE_ROTATE
52#define FAST_SIMPLE_ROTATE(suffix, pix_type) \
53 static void \
54 blt_rotated_90_trivial_##suffix(pix_type *dst, \
55 int dst_stride, \
56 const pix_type *src, \
57 int src_stride, \
58 int w, \
59 int h) \
60 { \
61 int x, y; \
62 for (y = 0; y < h; y++) \
63 { \
64 const pix_type *s = src + (h - y - 1); \
65 pix_type *d = dst + (dst_stride * y); \
66 for (x = 0; x < w; x++) \
67 { \
68 *d++ = *s; \
69 s += src_stride; \
70 } \
71 } \
72 } \
73 static void \
74 blt_rotated_270_trivial_##suffix(pix_type *dst, \
75 int dst_stride, \
76 const pix_type *src, \
77 int src_stride, \
78 int w, \
79 int h) \
80 { \
81 int x, y; \
82 for (y = 0; y < h; y++) \
83 { \
84 const pix_type *s = src + (src_stride * (w - 1)) + y; \
85 pix_type *d = dst + (dst_stride * y); \
86 for (x = 0; x < w; x++) \
87 { \
88 *d++ = *s; \
89 s -= src_stride; \
90 } \
91 } \
92 } \
93 static void \
94 blt_rotated_90_##suffix(pix_type *dst, \
95 int dst_stride, \
96 const pix_type *src, \
97 int src_stride, \
98 int w, \
99 int h) \
100 { \
101 int x, leading_pixels = 0, trailing_pixels = 0; \
102 const int TILE_SIZE = TILE_CACHE_LINE_SIZE / sizeof(pix_type); \
103 if ((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) \
104 { \
105 leading_pixels = TILE_SIZE - \
106 (((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \
107 if (leading_pixels > w) \
108 leading_pixels = w; \
109 blt_rotated_90_trivial_##suffix(dst, \
110 dst_stride, \
111 src, \
112 src_stride, \
113 leading_pixels, \
114 h); \
115 dst += leading_pixels; \
116 src += leading_pixels * src_stride; \
117 w -= leading_pixels; \
118 } \
119 if ((uintptr_t)(dst + w) & (TILE_CACHE_LINE_SIZE - 1)) \
120 { \
121 trailing_pixels = (((uintptr_t)(dst + w) & \
122 (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \
123 if (trailing_pixels > w) \
124 trailing_pixels = w; \
125 w -= trailing_pixels; \
126 } \
127 for (x = 0; x < w; x += TILE_SIZE) \
128 { \
129 blt_rotated_90_trivial_##suffix(dst + x, \
130 dst_stride, \
131 src + (src_stride * x), \
132 src_stride, \
133 TILE_SIZE, \
134 h); \
135 } \
136 if (trailing_pixels) \
137 blt_rotated_90_trivial_##suffix(dst + w, \
138 dst_stride, \
139 src + (w * src_stride), \
140 src_stride, \
141 trailing_pixels, \
142 h); \
143 } \
144 static void \
145 blt_rotated_270_##suffix(pix_type *dst, \
146 int dst_stride, \
147 const pix_type *src, \
148 int src_stride, \
149 int w, \
150 int h) \
151 { \
152 int x, leading_pixels = 0, trailing_pixels = 0; \
153 const int TILE_SIZE = TILE_CACHE_LINE_SIZE / sizeof(pix_type); \
154 if ((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) \
155 { \
156 leading_pixels = TILE_SIZE - \
157 (((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \
158 if (leading_pixels > w) \
159 leading_pixels = w; \
160 blt_rotated_270_trivial_##suffix(dst, \
161 dst_stride, \
162 src + (src_stride * (w - leading_pixels)), \
163 src_stride, \
164 leading_pixels, \
165 h); \
166 dst += leading_pixels; \
167 w -= leading_pixels; \
168 } \
169 if ((uintptr_t)(dst + w) & (TILE_CACHE_LINE_SIZE - 1)) \
170 { \
171 trailing_pixels = (((uintptr_t)(dst + w) & \
172 (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \
173 if (trailing_pixels > w) \
174 trailing_pixels = w; \
175 w -= trailing_pixels; \
176 src += trailing_pixels * src_stride; \
177 } \
178 for (x = 0; x < w; x += TILE_SIZE) \
179 { \
180 blt_rotated_270_trivial_##suffix(dst + x, \
181 dst_stride, \
182 src + (src_stride * (w - x - TILE_SIZE)), \
183 src_stride, \
184 TILE_SIZE, \
185 h); \
186 } \
187 if (trailing_pixels) \
188 blt_rotated_270_trivial_##suffix(dst + w, \
189 dst_stride, \
190 src - (trailing_pixels * src_stride), \
191 src_stride, \
192 trailing_pixels, \
193 h); \
194 }
195
196FAST_SIMPLE_ROTATE(8888, DATA8)
197#endif
198
199
51#ifdef BUILD_CONVERT_32_RGB_8888 200#ifdef BUILD_CONVERT_32_RGB_8888
52#ifdef BUILD_CONVERT_32_RGB_ROT270 201#ifdef BUILD_CONVERT_32_RGB_ROT270
53void 202void
54evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) 203evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__)
55{ 204{
205#ifdef TILE_ROTATE
206 blt_rotated_270_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ;
207#else
56 DATA32 *src_ptr; 208 DATA32 *src_ptr;
57 DATA32 *dst_ptr; 209 DATA32 *dst_ptr;
58 int x, y; 210 int x, y;
59 211
60 dst_ptr = (DATA32 *)dst; 212 dst_ptr = (DATA32 *)dst;
61 213
62 CONVERT_LOOP_START_ROT_270(); 214 CONVERT_LOOP_START_ROT_270();
@@ -64,6 +216,7 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int
64 *dst_ptr = *src_ptr; 216 *dst_ptr = *src_ptr;
65 217
66 CONVERT_LOOP_END_ROT_270(); 218 CONVERT_LOOP_END_ROT_270();
219#endif
67 return; 220 return;
68} 221}
69#endif 222#endif
@@ -74,106 +227,118 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int
74void 227void
75evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) 228evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__)
76{ 229{
77#ifndef BUILD_NEON 230# ifndef BUILD_NEON
231# ifdef TILE_ROTATE
232 blt_rotated_90_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ;
233# else
78 DATA32 *src_ptr; 234 DATA32 *src_ptr;
79 DATA32 *dst_ptr; 235 DATA32 *dst_ptr;
80 int x, y; 236 int x, y;
81 237
82 dst_ptr = (DATA32 *)dst; 238 dst_ptr = (DATA32 *)dst;
83 CONVERT_LOOP_START_ROT_90(); 239 CONVERT_LOOP_START_ROT_90();
84 240
85 *dst_ptr = *src_ptr; 241 *dst_ptr = *src_ptr;
86 242
87 CONVERT_LOOP_END_ROT_90(); 243 CONVERT_LOOP_END_ROT_90();
88#else 244# endif
245
246# else
247
248# ifdef TILE_ROTATE
249 blt_rotated_90_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ;
250# else
89 if ((w & 1) || (h & 1)) 251 if ((w & 1) || (h & 1))
90 { 252 {
91 /* Rarely (if ever) if ever: so slow path is fine */ 253 /* Rarely (if ever) if ever: so slow path is fine */
92 DATA32 *src_ptr; 254 DATA32 *src_ptr;
93 DATA32 *dst_ptr; 255 DATA32 *dst_ptr;
94 int x, y; 256 int x, y;
95 257
96 dst_ptr = (DATA32 *)dst; 258 dst_ptr = (DATA32 *)dst;
97 CONVERT_LOOP_START_ROT_90(); 259 CONVERT_LOOP_START_ROT_90();
98 260
99 *dst_ptr = *src_ptr; 261 *dst_ptr = *src_ptr;
100 262
101 CONVERT_LOOP_END_ROT_90(); 263 CONVERT_LOOP_END_ROT_90();
102 } else { 264 }
103#define AP "convert_rgba32_rot_90_" 265 else
104 asm volatile ( 266 {
105 ".fpu neon \n\t" 267# define AP "convert_rgba32_rot_90_"
106 " mov %[s1], %[src] \n\t" 268 asm volatile (
107 " add %[s1], %[h],lsl #2 \n\t" 269 ".fpu neon \n\t"
108 " sub %[s1], #8 \n\t" 270 " mov %[s1], %[src] \n\t"
109 271 " add %[s1], %[s1], %[h],lsl #2 \n\t"
110 " mov %[s2], %[src] \n\t" 272 " sub %[s1], #8 \n\t"
111 " add %[s2], %[h], lsl #3 \n\t" 273
112 " add %[s2], %[sjmp], lsr #1 \n\t" 274 " mov %[s2], %[src] \n\t"
113 " sub %[s2], #8 \n\t" 275 " add %[s2], %[s2], %[h], lsl #3 \n\t"
114 276 " add %[s2], %[s2], %[sjmp], lsr #1 \n\t"
115 " mov %[d1], %[dst] \n\t" 277 " sub %[s2], #8 \n\t"
116 278
117 " add %[d2], %[d1], %[djmp] \n\t" 279 " mov %[d1], %[dst] \n\t"
118 " add %[d2], %[w], lsl #2 \n\t" 280
119 281 " add %[d2], %[d1], %[djmp] \n\t"
120 " mov %[sadv], %[h], lsl #3 \n\t" 282 " add %[d2], %[d2], %[w], lsl #2 \n\t"
121 " add %[sadv], %[sjmp], lsl #1 \n\t" 283
122 284 " mov %[sadv], %[h], lsl #3 \n\t"
123 " mov %[y], #0 \n\t" 285 " add %[sadv], %[sadv], %[sjmp], lsl #1\n\t"
124 " mov %[x], #0 \n\t" 286
125 AP"loop: \n\t" 287 " mov %[y], #0 \n\t"
126 " vld1.u32 d0, [%[s1]] \n\t" 288 " mov %[x], #0 \n\t"
127 " vld1.u32 d1, [%[s2]] \n\t" 289 AP"loop: \n\t"
128 " add %[x], #2 \n\t" 290 " vld1.u32 d0, [%[s1]] \n\t"
129 " add %[s1], %[sadv] \n\t" 291 " vld1.u32 d1, [%[s2]] \n\t"
130 " add %[s2], %[sadv] \n\t" 292 " add %[x], #2 \n\t"
131 " vtrn.u32 d0, d1 \n\t" 293 " add %[s1], %[sadv] \n\t"
132 " cmp %[x], %[w] \n\t" 294 " add %[s2], %[sadv] \n\t"
133 " vst1.u32 d1, [%[d1]]! \n\t" 295 " vtrn.u32 d0, d1 \n\t"
134 " vst1.u32 d0, [%[d2]]! \n\t" 296 " cmp %[x], %[w] \n\t"
135 " blt "AP"loop \n\t" 297 " vst1.u32 d1, [%[d1]]! \n\t"
136 298 " vst1.u32 d0, [%[d2]]! \n\t"
137 " mov %[x], #0 \n\t" 299 " blt "AP"loop \n\t"
138 " add %[d1], %[djmp] \n\t" 300
139 " add %[d1], %[w], lsl #2 \n\t" 301 " mov %[x], #0 \n\t"
140 " add %[d2], %[djmp] \n\t" 302 " add %[d1], %[djmp] \n\t"
141 " add %[d2], %[w], lsl #2 \n\t" 303 " add %[d1], %[d1], %[w], lsl #2 \n\t"
142 304 " add %[d2], %[djmp] \n\t"
143 " mov %[s1], %[src] \n\t" 305 " add %[d2], %[d2], %[w], lsl #2 \n\t"
144 " add %[s1], %[h], lsl #2 \n\t" 306
145 " sub %[s1], %[y], lsl #2 \n\t" 307 " mov %[s1], %[src] \n\t"
146 " sub %[s1], #16 \n\t" 308 " add %[s1], %[s1], %[h], lsl #2 \n\t"
147 309 " sub %[s1], %[s1], %[y], lsl #2 \n\t"
148 " add %[s2], %[s1], %[h], lsl #2 \n\t" 310 " sub %[s1], #16 \n\t"
149 " add %[s2], %[sjmp], lsl #2 \n\t" 311
150 312 " add %[s2], %[s1], %[h], lsl #2 \n\t"
151 " add %[y], #2 \n\t" 313 " add %[s2], %[s2], %[sjmp], lsl #2 \n\t"
152 314
153 " cmp %[y], %[h] \n\t" 315 " add %[y], #2 \n\t"
154 " blt "AP"loop \n\t" 316
155 317 " cmp %[y], %[h] \n\t"
156 : // Out 318 " blt "AP"loop \n\t"
157 : [s1] "r" (1), 319
158 [s2] "r" (11), 320 : // Out
159 [d1] "r" (2), 321 : [s1] "r" (1),
160 [d2] "r" (12), 322 [s2] "r" (11),
161 [src] "r" (src), 323 [d1] "r" (2),
162 [dst] "r" (dst), 324 [d2] "r" (12),
163 [x] "r" (3), 325 [src] "r" (src),
164 [y] "r" (4), 326 [dst] "r" (dst),
165 [w] "r" (w), 327 [x] "r" (3),
166 [h] "r" (h), 328 [y] "r" (4),
167 [sadv] "r" (5), 329 [w] "r" (w),
168 [sjmp] "r" (src_jump * 4), 330 [h] "r" (h),
169 [djmp] "r" (dst_jump * 4 * 2) 331 [sadv] "r" (5),
170 : "d0", "d1", "memory", "cc"// Clober 332 [sjmp] "r" (src_jump * 4),
171 333 [djmp] "r" (dst_jump * 4 * 2)
172 334 : "d0", "d1", "memory", "cc"// Clober
173 ); 335
174 } 336
175#undef AP 337 );
176#endif 338 }
339# undef AP
340# endif
341# endif
177 return; 342 return;
178} 343}
179#endif 344#endif
@@ -448,7 +613,7 @@ evas_common_convert_rgba_to_32bpp_rgb_666(DATA32 *src, DATA8 *dst, int src_jump,
448 613
449 CONVERT_LOOP_START_ROT_0(); 614 CONVERT_LOOP_START_ROT_0();
450 615
451 *dst_ptr = 616 *dst_ptr =
452 (((R_VAL(src_ptr) << 12) | (B_VAL(src_ptr) >> 2)) & 0x03f03f) | 617 (((R_VAL(src_ptr) << 12) | (B_VAL(src_ptr) >> 2)) & 0x03f03f) |
453 ((G_VAL(src_ptr) << 4) & 0x000fc0); 618 ((G_VAL(src_ptr) << 4) & 0x000fc0);
454 619
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_yuv.c b/libraries/evas/src/lib/engines/common/evas_convert_yuv.c
index a0d155c..000cb01 100644
--- a/libraries/evas/src/lib/engines/common/evas_convert_yuv.c
+++ b/libraries/evas/src/lib/engines/common/evas_convert_yuv.c
@@ -1091,7 +1091,7 @@ _evas_nv12tiledtorgb_raster(unsigned char **yuv, unsigned char *rgb, int w, int
1091 const int offset_value[2] = { 0, 64 * 16 }; 1091 const int offset_value[2] = { 0, 64 * 16 };
1092 int mb_x, mb_y, mb_w, mb_h; 1092 int mb_x, mb_y, mb_w, mb_h;
1093 int base_h; 1093 int base_h;
1094 int uv_x, uv_y, uv_step; 1094 int uv_x, uv_step;
1095 int stride; 1095 int stride;
1096 1096
1097 /* Idea iterate over each macroblock and convert each of them using _evas_nv12torgb_raster */ 1097 /* Idea iterate over each macroblock and convert each of them using _evas_nv12torgb_raster */
@@ -1128,7 +1128,7 @@ _evas_nv12tiledtorgb_raster(unsigned char **yuv, unsigned char *rgb, int w, int
1128 base_h = (mb_h >> 1) + (mb_h & 0x1); 1128 base_h = (mb_h >> 1) + (mb_h & 0x1);
1129 stride = w * sizeof (int); 1129 stride = w * sizeof (int);
1130 1130
1131 uv_x = 0; uv_y = 0; 1131 uv_x = 0;
1132 1132
1133 /* In this format we linearize macroblock on two line to form a Z and it's invert */ 1133 /* In this format we linearize macroblock on two line to form a Z and it's invert */
1134 for (mb_y = 0; mb_y < (mb_h >> 1); mb_y++) 1134 for (mb_y = 0; mb_y < (mb_h >> 1); mb_y++)
diff --git a/libraries/evas/src/lib/engines/common/evas_cpu.c b/libraries/evas/src/lib/engines/common/evas_cpu.c
index cff8b2b..fe90c5b 100644
--- a/libraries/evas/src/lib/engines/common/evas_cpu.c
+++ b/libraries/evas/src/lib/engines/common/evas_cpu.c
@@ -74,6 +74,7 @@ evas_common_cpu_sse3_test(void)
74#endif 74#endif
75} 75}
76 76
77#ifdef BUILD_ALTIVEC
77void 78void
78evas_common_cpu_altivec_test(void) 79evas_common_cpu_altivec_test(void)
79{ 80{
@@ -85,6 +86,7 @@ evas_common_cpu_altivec_test(void)
85#endif /* __VEC__ */ 86#endif /* __VEC__ */
86#endif /* __POWERPC__ */ 87#endif /* __POWERPC__ */
87} 88}
89#endif /* BUILD_ALTIVEC */
88 90
89void 91void
90evas_common_cpu_neon_test(void) 92evas_common_cpu_neon_test(void)
@@ -177,6 +179,7 @@ evas_common_cpu_init(void)
177#endif /* BUILD_SSE3 */ 179#endif /* BUILD_SSE3 */
178#endif /* BUILD_SSE */ 180#endif /* BUILD_SSE */
179#endif /* BUILD_MMX */ 181#endif /* BUILD_MMX */
182#ifdef BUILD_ALTIVEC
180#ifdef __POWERPC__ 183#ifdef __POWERPC__
181#ifdef __VEC__ 184#ifdef __VEC__
182 cpu_feature_mask |= CPU_FEATURE_ALTIVEC * 185 cpu_feature_mask |= CPU_FEATURE_ALTIVEC *
@@ -186,6 +189,7 @@ evas_common_cpu_init(void)
186 cpu_feature_mask &= ~CPU_FEATURE_ALTIVEC; 189 cpu_feature_mask &= ~CPU_FEATURE_ALTIVEC;
187#endif /* __VEC__ */ 190#endif /* __VEC__ */
188#endif /* __POWERPC__ */ 191#endif /* __POWERPC__ */
192#endif /* BUILD_ALTIVEC */
189#ifdef __SPARC__ 193#ifdef __SPARC__
190 cpu_feature_mask |= CPU_FEATURE_VIS * 194 cpu_feature_mask |= CPU_FEATURE_VIS *
191 evas_common_cpu_feature_test(evas_common_cpu_vis_test); 195 evas_common_cpu_feature_test(evas_common_cpu_vis_test);
diff --git a/libraries/evas/src/lib/engines/common/evas_draw_main.c b/libraries/evas/src/lib/engines/common/evas_draw_main.c
index 7652708..def19a8 100644
--- a/libraries/evas/src/lib/engines/common/evas_draw_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_draw_main.c
@@ -75,6 +75,14 @@ evas_common_draw_context_free(RGBA_Draw_Context *dc)
75{ 75{
76 if (!dc) return; 76 if (!dc) return;
77 77
78#ifdef HAVE_PIXMAN
79 if (dc->col.pixman_color_image)
80 {
81 pixman_image_unref(dc->col.pixman_color_image);
82 dc->col.pixman_color_image = NULL;
83 }
84#endif
85
78 evas_common_draw_context_apply_clean_cutouts(&dc->cutout); 86 evas_common_draw_context_apply_clean_cutouts(&dc->cutout);
79 free(dc); 87 free(dc);
80} 88}
@@ -133,6 +141,20 @@ evas_common_draw_context_set_color(RGBA_Draw_Context *dc, int r, int g, int b, i
133 G_VAL(&(dc->col.col)) = (DATA8)g; 141 G_VAL(&(dc->col.col)) = (DATA8)g;
134 B_VAL(&(dc->col.col)) = (DATA8)b; 142 B_VAL(&(dc->col.col)) = (DATA8)b;
135 A_VAL(&(dc->col.col)) = (DATA8)a; 143 A_VAL(&(dc->col.col)) = (DATA8)a;
144#ifdef HAVE_PIXMAN
145 if (dc && dc->col.pixman_color_image)
146 pixman_image_unref(dc->col.pixman_color_image);
147
148 pixman_color_t pixman_color;
149
150 pixman_color.alpha = (dc->col.col & 0xff000000) >> 16;
151 pixman_color.red = (dc->col.col & 0x00ff0000) >> 8;
152 pixman_color.green = (dc->col.col & 0x0000ff00);
153 pixman_color.blue = (dc->col.col & 0x000000ff) << 8;
154
155 dc->col.pixman_color_image = pixman_image_create_solid_fill(&pixman_color);
156#endif
157
136} 158}
137 159
138EAPI void 160EAPI void
@@ -159,12 +181,42 @@ evas_common_draw_context_set_mask(RGBA_Draw_Context *dc, RGBA_Image *mask, int x
159 dc->mask.y = y; 181 dc->mask.y = y;
160 dc->mask.w = w; 182 dc->mask.w = w;
161 dc->mask.h = h; 183 dc->mask.h = h;
184
185#ifdef HAVE_PIXMAN
186 if (mask->pixman.im)
187 pixman_image_unref(mask->pixman.im);
188
189 if (mask->cache_entry.flags.alpha)
190 {
191 mask->pixman.im = pixman_image_create_bits(PIXMAN_a8r8g8b8, w, h,
192 (uint32_t *)mask->mask.mask,
193 w * 4);
194 }
195 else
196 {
197 mask->pixman.im = pixman_image_create_bits(PIXMAN_x8r8g8b8, w, h,
198 (uint32_t *)mask->mask.mask,
199 w * 4);
200 }
201#endif
202
162} 203}
163 204
164EAPI void 205EAPI void
165evas_common_draw_context_unset_mask(RGBA_Draw_Context *dc) 206evas_common_draw_context_unset_mask(RGBA_Draw_Context *dc)
166{ 207{
167 dc->mask.mask = NULL; 208 dc->mask.mask = NULL;
209
210#ifdef HAVE_PIXMAN
211 RGBA_Image *mask;
212 mask = (RGBA_Image *)dc->mask.mask;
213
214 if (mask && mask->pixman.im)
215 {
216 pixman_image_unref(mask->pixman.im);
217 mask->pixman.im = NULL;
218 }
219#endif
168} 220}
169 221
170 222
@@ -179,32 +231,32 @@ evas_common_draw_context_add_cutout(RGBA_Draw_Context *dc, int x, int y, int w,
179 { 231 {
180#if 1 // this is a bit faster 232#if 1 // this is a bit faster
181 int xa1, xa2, xb1, xb2; 233 int xa1, xa2, xb1, xb2;
182 234
183 xa1 = x; 235 xa1 = x;
184 xa2 = xa1 + w - 1; 236 xa2 = xa1 + w - 1;
185 xb1 = dc->clip.x; 237 xb1 = dc->clip.x;
186 if (xa2 < xb1) return; 238 if (xa2 < xb1) return;
187 xb2 = xb1 + dc->clip.w - 1; 239 xb2 = xb1 + dc->clip.w - 1;
188 if (xa1 >= xb2) return; 240 if (xa1 >= xb2) return;
189 if (xa2 > xb2) xa2 = xb2; 241 if (xa2 > xb2) xa2 = xb2;
190 if (xb1 > xa1) xa1 = xb1; 242 if (xb1 > xa1) xa1 = xb1;
191 x = xa1; 243 x = xa1;
192 w = xa2 - xa1 + 1; 244 w = xa2 - xa1 + 1;
193 245
194 xa1 = y; 246 xa1 = y;
195 xa2 = xa1 + h - 1; 247 xa2 = xa1 + h - 1;
196 xb1 = dc->clip.y; 248 xb1 = dc->clip.y;
197 if (xa2 < xb1) return; 249 if (xa2 < xb1) return;
198 xb2 = xb1 + dc->clip.h - 1; 250 xb2 = xb1 + dc->clip.h - 1;
199 if (xa1 >= xb2) return; 251 if (xa1 >= xb2) return;
200 if (xa2 > xb2) xa2 = xb2; 252 if (xa2 > xb2) xa2 = xb2;
201 if (xb1 > xa1) xa1 = xb1; 253 if (xb1 > xa1) xa1 = xb1;
202 y = xa1; 254 y = xa1;
203 h = xa2 - xa1 + 1; 255 h = xa2 - xa1 + 1;
204#else 256#else
205 RECTS_CLIP_TO_RECT(x, y, w, h, 257 RECTS_CLIP_TO_RECT(x, y, w, h,
206 dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); 258 dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
207#endif 259#endif
208 if ((w < 1) || (h < 1)) return; 260 if ((w < 1) || (h < 1)) return;
209 } 261 }
210 evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h); 262 evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h);
@@ -513,7 +565,7 @@ evas_common_draw_context_apply_cutouts(RGBA_Draw_Context *dc)
513 565
514 if (!dc->clip.use) return NULL; 566 if (!dc->clip.use) return NULL;
515 if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) return NULL; 567 if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) return NULL;
516 568
517 569
518 res = evas_common_draw_context_cutouts_new(); 570 res = evas_common_draw_context_cutouts_new();
519 evas_common_draw_context_cutouts_add(res, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); 571 evas_common_draw_context_cutouts_add(res, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
diff --git a/libraries/evas/src/lib/engines/common/evas_font_draw.c b/libraries/evas/src/lib/engines/common/evas_font_draw.c
index 94aa085..638cdfe 100644
--- a/libraries/evas/src/lib/engines/common/evas_font_draw.c
+++ b/libraries/evas/src/lib/engines/common/evas_font_draw.c
@@ -22,7 +22,7 @@
22 22
23static int max_cached_words = WORD_CACHE_NWORDS; 23static int max_cached_words = WORD_CACHE_NWORDS;
24 24
25struct prword 25struct prword
26{ 26{
27 EINA_INLIST; 27 EINA_INLIST;
28 struct cinfo *cinfo; 28 struct cinfo *cinfo;
@@ -34,16 +34,16 @@ struct prword
34 int baseline; 34 int baseline;
35}; 35};
36 36
37struct cinfo 37struct cinfo
38{ 38{
39 FT_UInt index; 39 FT_UInt index;
40 struct 40 struct
41 { 41 {
42 int x, y; 42 int x, y;
43 } pos; 43 } pos;
44 int posx; 44 int posx;
45 RGBA_Font_Glyph *fg; 45 RGBA_Font_Glyph *fg;
46 struct 46 struct
47 { 47 {
48 int w,h; 48 int w,h;
49 int rows; 49 int rows;
@@ -77,11 +77,11 @@ evas_common_font_draw_init(void)
77#ifdef EVAS_FRAME_QUEUING 77#ifdef EVAS_FRAME_QUEUING
78EAPI void 78EAPI void
79evas_common_font_draw_finish(void) 79evas_common_font_draw_finish(void)
80{ 80{
81} 81}
82#endif 82#endif
83 83
84/* 84/*
85 * BiDi handling: We receive the shaped string + other props from text_props, 85 * BiDi handling: We receive the shaped string + other props from text_props,
86 * we need to reorder it so we'll have the visual string (the way we draw) 86 * we need to reorder it so we'll have the visual string (the way we draw)
87 * and then for kerning we have to switch the order of the kerning query (as the prev 87 * and then for kerning we have to switch the order of the kerning query (as the prev
@@ -89,7 +89,7 @@ evas_common_font_draw_finish(void)
89 */ 89 */
90static void 90static void
91evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn __UNUSED__, int x, int y, 91evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn __UNUSED__, int x, int y,
92 const Evas_Text_Props *text_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w, 92 const Evas_Text_Props *text_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w,
93 int ext_h, int im_w, int im_h __UNUSED__) 93 int ext_h, int im_w, int im_h __UNUSED__)
94{ 94{
95 DATA32 *im; 95 DATA32 *im;
@@ -136,7 +136,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
136 { 136 {
137 xrun -= x + xrun - ext_x - ext_w; 137 xrun -= x + xrun - ext_x - ext_w;
138 } 138 }
139 if (x < ext_x) 139 if (x < ext_x)
140 { 140 {
141 int excess = ext_x - x; 141 int excess = ext_x - x;
142 xstart = excess - 1; 142 xstart = excess - 1;
@@ -244,10 +244,29 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
244 if (j < w) j = w; 244 if (j < w) j = w;
245 h = fg->glyph_out->bitmap.rows; 245 h = fg->glyph_out->bitmap.rows;
246 /* 246 /*
247 if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays) 247 if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays)
248 && (fg->glyph_out->bitmap.num_grays == 256) 248 && (fg->glyph_out->bitmap.num_grays == 256)
249 ) 249 )
250 */ 250 */
251
252#ifdef HAVE_PIXMAN
253# ifdef PIXMAN_FONT
254 int index;
255 DATA32 *font_alpha_buffer;
256 pixman_image_t *font_mask_image;
257
258 font_alpha_buffer = alloca(w * h * sizeof(DATA32));
259 for (index = 0; index < (w * h); index++)
260 font_alpha_buffer[index] = data[index] << 24;
261
262 font_mask_image = pixman_image_create_bits(PIXMAN_a8r8g8b8, w, h,
263 font_alpha_buffer,
264 w * sizeof(DATA32));
265
266 if (!font_mask_image) return;
267# endif
268#endif
269
251 { 270 {
252 if ((j > 0) && (chr_x + w > ext_x)) 271 if ((j > 0) && (chr_x + w > ext_x))
253 { 272 {
@@ -255,44 +274,63 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
255 { 274 {
256 /* ext glyph draw */ 275 /* ext glyph draw */
257 dc->font_ext.func.gl_draw(dc->font_ext.data, 276 dc->font_ext.func.gl_draw(dc->font_ext.data,
258 (void *)dst, 277 (void *)dst,
259 dc, fg, chr_x, 278 dc, fg, chr_x,
260 y - (chr_y - y)); 279 y - (chr_y - y));
261 } 280 }
262 else 281 else
263 { 282 {
264 if ((fg->glyph_out->bitmap.num_grays == 256) && 283 if ((fg->glyph_out->bitmap.num_grays == 256) &&
265 (fg->glyph_out->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY)) 284 (fg->glyph_out->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY))
266 { 285 {
267 for (i = 0; i < h; i++) 286#ifdef HAVE_PIXMAN
287# ifdef PIXMAN_FONT
288 if ((dst->pixman.im) &&
289 (dc->col.pixman_color_image))
290 pixman_image_composite(PIXMAN_OP_OVER,
291 dc->col.pixman_color_image,
292 font_mask_image,
293 dst->pixman.im,
294 chr_x,
295 y - (chr_y - y),
296 0, 0,
297 chr_x,
298 y - (chr_y - y),
299 w, h);
300 else
301# endif
302#endif
268 { 303 {
269 int dx, dy; 304 for (i = 0; i < h; i++)
270 int in_x, in_w; 305 {
271 306 int dx, dy;
272 in_x = 0; 307 int in_x, in_w;
273 in_w = 0; 308
274 dx = chr_x; 309 in_x = 0;
275 dy = y - (chr_y - i - y); 310 in_w = 0;
311 dx = chr_x;
312 dy = y - (chr_y - i - y);
276#ifdef EVAS_SLI 313#ifdef EVAS_SLI
277 if (((dy) % dc->sli.h) == dc->sli.y) 314 if (((dy) % dc->sli.h) == dc->sli.y)
278#endif 315#endif
279 {
280 if ((dx < (ext_x + ext_w)) &&
281 (dy >= (ext_y)) &&
282 (dy < (ext_y + ext_h)))
283 { 316 {
284 if (dx + w > (ext_x + ext_w)) 317 if ((dx < (ext_x + ext_w)) &&
285 in_w += (dx + w) - (ext_x + ext_w); 318 (dy >= (ext_y)) &&
286 if (dx < ext_x) 319 (dy < (ext_y + ext_h)))
287 { 320 {
288 in_w += ext_x - dx; 321 if (dx + w > (ext_x + ext_w))
289 in_x = ext_x - dx; 322 in_w += (dx + w) - (ext_x + ext_w);
290 dx = ext_x; 323 if (dx < ext_x)
291 } 324 {
292 if (in_w < w) 325 in_w += ext_x - dx;
293 { 326 in_x = ext_x - dx;
294 func(NULL, data + (i * j) + in_x, dc->col.col, 327 dx = ext_x;
295 im + (dy * im_w) + dx, w - in_w); 328 }
329 if (in_w < w)
330 {
331 func(NULL, data + (i * j) + in_x, dc->col.col,
332 im + (dy * im_w) + dx, w - in_w);
333 }
296 } 334 }
297 } 335 }
298 } 336 }
@@ -309,7 +347,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
309 { 347 {
310 int dx, dy; 348 int dx, dy;
311 int in_x, in_w, end; 349 int in_x, in_w, end;
312 350
313 in_x = 0; 351 in_x = 0;
314 in_w = 0; 352 in_w = 0;
315 dx = chr_x; 353 dx = chr_x;
@@ -333,8 +371,8 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
333 dp++; 371 dp++;
334 } 372 }
335 if ((dx < (ext_x + ext_w)) && 373 if ((dx < (ext_x + ext_w)) &&
336 (dy >= (ext_y)) && 374 (dy >= (ext_y)) &&
337 (dy < (ext_y + ext_h))) 375 (dy < (ext_y + ext_h)))
338 { 376 {
339 if (dx + w > (ext_x + ext_w)) 377 if (dx + w > (ext_x + ext_w))
340 in_w += (dx + w) - (ext_x + ext_w); 378 in_w += (dx + w) - (ext_x + ext_w);
@@ -347,7 +385,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
347 if (in_w < w) 385 if (in_w < w)
348 { 386 {
349 func(NULL, tmpbuf + in_x, dc->col.col, 387 func(NULL, tmpbuf + in_x, dc->col.col,
350 im + (dy * im_w) + dx, w - in_w); 388 im + (dy * im_w) + dx, w - in_w);
351 } 389 }
352 } 390 }
353 } 391 }
@@ -356,6 +394,11 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
356 } 394 }
357 } 395 }
358 } 396 }
397#ifdef HAVE_PIXMAN
398# ifdef PIXMAN_FONT
399 pixman_image_unref(font_mask_image);
400# endif
401#endif
359 } 402 }
360 else 403 else
361 break; 404 break;
@@ -573,7 +616,7 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Evas_Text_Props *text_prop
573 } 616 }
574 } 617 }
575 } 618 }
576 else 619 else
577 { 620 {
578 im = NULL; 621 im = NULL;
579 } 622 }
@@ -599,7 +642,7 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Evas_Text_Props *text_prop
599 { 642 {
600 struct prword *last = (struct prword *)(words->last); 643 struct prword *last = (struct prword *)(words->last);
601 644
602 if (last) 645 if (last)
603 { 646 {
604 if (last->im) free(last->im); 647 if (last->im) free(last->im);
605 if (last->cinfo) free(last->cinfo); 648 if (last->cinfo) free(last->cinfo);
diff --git a/libraries/evas/src/lib/engines/common/evas_font_main.c b/libraries/evas/src/lib/engines/common/evas_font_main.c
index 64b1d5e..7b3dabe 100644
--- a/libraries/evas/src/lib/engines/common/evas_font_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_font_main.c
@@ -39,8 +39,6 @@ evas_common_font_init(void)
39EAPI void 39EAPI void
40evas_common_font_shutdown(void) 40evas_common_font_shutdown(void)
41{ 41{
42 int error;
43
44 if (initialised < 1) return; 42 if (initialised < 1) return;
45 initialised--; 43 initialised--;
46 if (initialised != 0) return; 44 if (initialised != 0) return;
@@ -53,7 +51,7 @@ evas_common_font_shutdown(void)
53 evas_common_font_cache_set(0); 51 evas_common_font_cache_set(0);
54 evas_common_font_flush(); 52 evas_common_font_flush();
55 53
56 error = FT_Done_FreeType(evas_ft_lib); 54 FT_Done_FreeType(evas_ft_lib);
57#ifdef EVAS_FRAME_QUEUING 55#ifdef EVAS_FRAME_QUEUING
58 evas_common_font_draw_finish(); 56 evas_common_font_draw_finish();
59#endif 57#endif
diff --git a/libraries/evas/src/lib/engines/common/evas_image_data.c b/libraries/evas/src/lib/engines/common/evas_image_data.c
index 10b3988..2815ff8 100644
--- a/libraries/evas/src/lib/engines/common/evas_image_data.c
+++ b/libraries/evas/src/lib/engines/common/evas_image_data.c
@@ -1,3 +1,7 @@
1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
1#include <assert.h> 5#include <assert.h>
2 6
3#include "evas_common.h" 7#include "evas_common.h"
diff --git a/libraries/evas/src/lib/engines/common/evas_image_load.c b/libraries/evas/src/lib/engines/common/evas_image_load.c
index c7eff3f..21ac5d4 100644
--- a/libraries/evas/src/lib/engines/common/evas_image_load.c
+++ b/libraries/evas/src/lib/engines/common/evas_image_load.c
@@ -1,3 +1,7 @@
1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
1#include <sys/types.h> 5#include <sys/types.h>
2#include <sys/stat.h> 6#include <sys/stat.h>
3#include <unistd.h> 7#include <unistd.h>
diff --git a/libraries/evas/src/lib/engines/common/evas_image_main.c b/libraries/evas/src/lib/engines/common/evas_image_main.c
index d4d847c..d2f8c0b 100644
--- a/libraries/evas/src/lib/engines/common/evas_image_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_image_main.c
@@ -145,7 +145,7 @@ _evas_common_rgba_image_new(void)
145#endif 145#endif
146 146
147 evas_common_rgba_image_scalecache_init(&im->cache_entry); 147 evas_common_rgba_image_scalecache_init(&im->cache_entry);
148 148
149 return &im->cache_entry; 149 return &im->cache_entry;
150} 150}
151 151
@@ -161,7 +161,7 @@ _evas_common_rgba_image_delete(Image_Entry *ie)
161 LKD(im->cache_entry.ref_fq_del); 161 LKD(im->cache_entry.ref_fq_del);
162 eina_condition_free(&(im->cache_entry.cond_fq_del)); 162 eina_condition_free(&(im->cache_entry.cond_fq_del));
163# endif 163# endif
164#endif 164#endif
165 evas_common_rgba_image_scalecache_shutdown(&im->cache_entry); 165 evas_common_rgba_image_scalecache_shutdown(&im->cache_entry);
166 if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module); 166 if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module);
167 /* memset the image to 0x99 because i recently saw a segv where an 167 /* memset the image to 0x99 because i recently saw a segv where an
@@ -173,13 +173,13 @@ _evas_common_rgba_image_delete(Image_Entry *ie)
173// memset(im, 0x99, sizeof(im)); 173// memset(im, 0x99, sizeof(im));
174#ifdef EVAS_CSERVE 174#ifdef EVAS_CSERVE
175 if (ie->data1) evas_cserve_image_free(ie); 175 if (ie->data1) evas_cserve_image_free(ie);
176#endif 176#endif
177/* 177/*
178 * FIXME: This doesn't seem to be needed... But I'm not sure why. 178 * FIXME: This doesn't seem to be needed... But I'm not sure why.
179 * -- nash 179 * -- nash
180 { 180 {
181 Filtered_Image *fi; 181 Filtered_Image *fi;
182 182
183 EINA_LIST_FREE(im->filtered, fi) 183 EINA_LIST_FREE(im->filtered, fi)
184 { 184 {
185 free(fi->key); 185 free(fi->key);
@@ -249,8 +249,8 @@ evas_common_rgba_image_unload(Image_Entry *ie)
249#endif 249#endif
250 return; 250 return;
251 } 251 }
252#endif 252#endif
253 253
254 if (im->image.data && !im->image.no_free) 254 if (im->image.data && !im->image.no_free)
255 free(im->image.data); 255 free(im->image.data);
256 im->image.data = NULL; 256 im->image.data = NULL;
@@ -266,18 +266,19 @@ void
266_evas_common_rgba_image_post_surface(Image_Entry *ie) 266_evas_common_rgba_image_post_surface(Image_Entry *ie)
267{ 267{
268#ifdef HAVE_PIXMAN 268#ifdef HAVE_PIXMAN
269 RGBA_Image *im = (RGBA_Image *) ie; 269# ifdef PIXMAN_IMAGE
270 270 RGBA_Image *im = (RGBA_Image *)ie;
271
271 if (im->pixman.im) pixman_image_unref(im->pixman.im); 272 if (im->pixman.im) pixman_image_unref(im->pixman.im);
272 if (im->cache_entry.flags.alpha) 273 if (im->cache_entry.flags.alpha)
273 { 274 {
274 im->pixman.im = pixman_image_create_bits 275 im->pixman.im = pixman_image_create_bits
275 ( 276 (
276// FIXME: endianess determines this 277// FIXME: endianess determines this
277 PIXMAN_a8r8g8b8, 278 PIXMAN_a8r8g8b8,
278// PIXMAN_b8g8r8a8, 279// PIXMAN_b8g8r8a8,
279 im->cache_entry.w, im->cache_entry.h, 280 im->cache_entry.w, im->cache_entry.h,
280 im->image.data, 281 im->image.data,
281 im->cache_entry.w * 4 282 im->cache_entry.w * 4
282 ); 283 );
283 } 284 }
@@ -285,16 +286,19 @@ _evas_common_rgba_image_post_surface(Image_Entry *ie)
285 { 286 {
286 im->pixman.im = pixman_image_create_bits 287 im->pixman.im = pixman_image_create_bits
287 ( 288 (
288// FIXME: endianess determines this 289// FIXME: endianess determines this
289 PIXMAN_x8r8g8b8, 290 PIXMAN_x8r8g8b8,
290// PIXMAN_b8g8r8x8, 291// PIXMAN_b8g8r8x8,
291 im->cache_entry.w, im->cache_entry.h, 292 im->cache_entry.w, im->cache_entry.h,
292 im->image.data, 293 im->image.data,
293 im->cache_entry.w * 4 294 im->cache_entry.w * 4
294 ); 295 );
295 } 296 }
297# else
298 (void)ie;
299# endif
296#else 300#else
297 ie = NULL; 301 (void)ie;
298#endif 302#endif
299} 303}
300 304
@@ -306,7 +310,7 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned
306 310
307#ifdef EVAS_CSERVE 311#ifdef EVAS_CSERVE
308 if (ie->data1) return 0; 312 if (ie->data1) return 0;
309#endif 313#endif
310 if (im->image.no_free) return 0; 314 if (im->image.no_free) return 0;
311 315
312 if (im->flags & RGBA_IMAGE_ALPHA_ONLY) 316 if (im->flags & RGBA_IMAGE_ALPHA_ONLY)
@@ -328,7 +332,7 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned
328# endif 332# endif
329#endif 333#endif
330 _evas_common_rgba_image_post_surface(ie); 334 _evas_common_rgba_image_post_surface(ie);
331 335
332 return 0; 336 return 0;
333} 337}
334 338
@@ -338,12 +342,14 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie)
338 RGBA_Image *im = (RGBA_Image *) ie; 342 RGBA_Image *im = (RGBA_Image *) ie;
339 343
340#ifdef HAVE_PIXMAN 344#ifdef HAVE_PIXMAN
345# ifdef PIXMAN_IMAGE
341 if (im->pixman.im) 346 if (im->pixman.im)
342 { 347 {
343 pixman_image_unref(im->pixman.im); 348 pixman_image_unref(im->pixman.im);
344 im->pixman.im = NULL; 349 im->pixman.im = NULL;
345 } 350 }
346#endif 351# endif
352#endif
347 if (ie->file) 353 if (ie->file)
348 DBG("unload: [%p] %s %s", ie, ie->file, ie->key); 354 DBG("unload: [%p] %s %s", ie, ie->file, ie->key);
349 if ((im->cs.data) && (im->image.data)) 355 if ((im->cs.data) && (im->image.data))
@@ -364,7 +370,7 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie)
364#ifdef EVAS_CSERVE 370#ifdef EVAS_CSERVE
365 else if (ie->data1) 371 else if (ie->data1)
366 evas_cserve_image_free(ie); 372 evas_cserve_image_free(ie);
367#endif 373#endif
368 374
369 im->image.data = NULL; 375 im->image.data = NULL;
370 ie->allocated.w = 0; 376 ie->allocated.w = 0;
@@ -391,7 +397,7 @@ _evas_common_rgba_image_dirty_region(Image_Entry* ie, unsigned int x __UNUSED__,
391 397
392#ifdef EVAS_CSERVE 398#ifdef EVAS_CSERVE
393 if (ie->data1) evas_cserve_image_free(ie); 399 if (ie->data1) evas_cserve_image_free(ie);
394#endif 400#endif
395 im->flags |= RGBA_IMAGE_IS_DIRTY; 401 im->flags |= RGBA_IMAGE_IS_DIRTY;
396 evas_common_rgba_image_scalecache_dirty(&im->cache_entry); 402 evas_common_rgba_image_scalecache_dirty(&im->cache_entry);
397} 403}
@@ -411,13 +417,13 @@ _evas_common_rgba_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src)
411 { 417 {
412#ifdef EVAS_CSERVE 418#ifdef EVAS_CSERVE
413 if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); 419 if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src);
414#endif 420#endif
415 return 1; 421 return 1;
416 } 422 }
417 423
418#ifdef EVAS_CSERVE 424#ifdef EVAS_CSERVE
419 if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); 425 if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src);
420#endif 426#endif
421 evas_common_image_colorspace_normalize(src); 427 evas_common_image_colorspace_normalize(src);
422 evas_common_image_colorspace_normalize(dst); 428 evas_common_image_colorspace_normalize(dst);
423/* evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */ 429/* evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */
@@ -431,18 +437,18 @@ _evas_common_rgba_image_ram_usage(Image_Entry *ie)
431{ 437{
432 RGBA_Image *im = (RGBA_Image *)ie; 438 RGBA_Image *im = (RGBA_Image *)ie;
433 int size = sizeof(struct _RGBA_Image); 439 int size = sizeof(struct _RGBA_Image);
434 440
435 if (ie->cache_key) size += strlen(ie->cache_key); 441 if (ie->cache_key) size += strlen(ie->cache_key);
436 if (ie->file) size += strlen(ie->file); 442 if (ie->file) size += strlen(ie->file);
437 if (ie->key) size += strlen(ie->key); 443 if (ie->key) size += strlen(ie->key);
438 444
439 if (im->image.data) 445 if (im->image.data)
440 { 446 {
441#ifdef EVAS_CSERVE 447#ifdef EVAS_CSERVE
442 if ((!im->image.no_free) || (ie->data1)) 448 if ((!im->image.no_free) || (ie->data1))
443#else 449#else
444 if ((!im->image.no_free)) 450 if ((!im->image.no_free))
445#endif 451#endif
446 size += im->cache_entry.w * im->cache_entry.h * sizeof(DATA32); 452 size += im->cache_entry.w * im->cache_entry.h * sizeof(DATA32);
447 } 453 }
448 size += evas_common_rgba_image_scalecache_usage_get(&im->cache_entry); 454 size += evas_common_rgba_image_scalecache_usage_get(&im->cache_entry);
@@ -590,7 +596,7 @@ evas_common_image_colorspace_normalize(RGBA_Image *im)
590 { 596 {
591#ifdef EVAS_CSERVE 597#ifdef EVAS_CSERVE
592 if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry); 598 if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry);
593#endif 599#endif
594 if (!im->image.no_free) free(im->image.data); 600 if (!im->image.no_free) free(im->image.data);
595 im->image.data = im->cs.data; 601 im->image.data = im->cs.data;
596 im->cs.no_free = im->image.no_free; 602 im->cs.no_free = im->image.no_free;
diff --git a/libraries/evas/src/lib/engines/common/evas_image_scalecache.c b/libraries/evas/src/lib/engines/common/evas_image_scalecache.c
index 24a4f2d..e4e4790 100644
--- a/libraries/evas/src/lib/engines/common/evas_image_scalecache.c
+++ b/libraries/evas/src/lib/engines/common/evas_image_scalecache.c
@@ -48,9 +48,7 @@ struct _Scaleitem
48#ifdef SCALECACHE 48#ifdef SCALECACHE
49static unsigned long long use_counter = 0; 49static unsigned long long use_counter = 0;
50 50
51#ifdef BUILD_PTHREAD
52static LK(cache_lock); 51static LK(cache_lock);
53#endif
54static Eina_Inlist *cache_list = NULL; 52static Eina_Inlist *cache_list = NULL;
55static unsigned int cache_size = 0; 53static unsigned int cache_size = 0;
56static int init = 0; 54static int init = 0;
diff --git a/libraries/evas/src/lib/engines/common/evas_line_main.c b/libraries/evas/src/lib/engines/common/evas_line_main.c
index 04401cb..aacf805 100644
--- a/libraries/evas/src/lib/engines/common/evas_line_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_line_main.c
@@ -109,9 +109,24 @@ _evas_draw_point(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y)
109 return; 109 return;
110 if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h))) 110 if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h)))
111 return; 111 return;
112 pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op); 112#ifdef HAVE_PIXMAN
113 if (pfunc) 113# ifdef PIXMAN_LINE
114 pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x); 114 pixman_op_t op = PIXMAN_OP_SRC;
115
116 if (dc->render_op == _EVAS_RENDER_BLEND)
117 op = PIXMAN_OP_OVER;
118
119 if ((dst->pixman.im) && (dc->col.pixman_color_image))
120 pixman_image_composite(op, dc->col.pixman_color_image, NULL,
121 dst->pixman.im, x, y, 0, 0, x, y, 1, 1);
122 else
123# endif
124#endif
125 {
126 pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op);
127 if (pfunc)
128 pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x);
129 }
115} 130}
116 131
117/* 132/*
@@ -130,6 +145,14 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
130 RGBA_Gfx_Pt_Func pfunc; 145 RGBA_Gfx_Pt_Func pfunc;
131 RGBA_Gfx_Func sfunc; 146 RGBA_Gfx_Func sfunc;
132 147
148#ifdef HAVE_PIXMAN
149# ifdef PIXMAN_LINE
150 pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
151 if (dc->render_op == _EVAS_RENDER_BLEND)
152 op = PIXMAN_OP_OVER;
153# endif
154#endif
155
133 dstw = dst->cache_entry.w; 156 dstw = dst->cache_entry.w;
134 color = dc->col.col; 157 color = dc->col.col;
135 158
@@ -172,12 +195,30 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
172 195
173 len = x1 - x0 + 1; 196 len = x1 - x0 + 1;
174 p = dst->image.data + (dstw * y0) + x0; 197 p = dst->image.data + (dstw * y0) + x0;
175 sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op); 198#ifdef HAVE_PIXMAN
176 if (sfunc) 199# ifdef PIXMAN_LINE
177 sfunc(NULL, NULL, color, p, len); 200 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
178 } 201 (!dc->mask.mask))
179 } 202 pixman_image_composite(op, dc->col.pixman_color_image,
180 return; 203 NULL, dst->pixman.im,
204 x0, y0, 0, 0, x0, y0, len, 1);
205 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
206 (dc->mask.mask))
207 pixman_image_composite(op, dc->col.pixman_color_image,
208 dc->mask.mask->pixman.im,
209 dst->pixman.im,
210 x0, y0, 0, 0, x0, y0, len, 1);
211 else
212# endif
213#endif
214 {
215 sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op);
216 if (sfunc)
217 sfunc(NULL, NULL, color, p, len);
218 }
219 }
220 }
221 return;
181 } 222 }
182 223
183 pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op); 224 pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op);
@@ -192,17 +233,34 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
192 233
193 len = y1 - y0 + 1; 234 len = y1 - y0 + 1;
194 p = dst->image.data + (dstw * y0) + x0; 235 p = dst->image.data + (dstw * y0) + x0;
195 while (len--) 236#ifdef HAVE_PIXMAN
196 { 237# ifdef PIXMAN_LINE
238 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
239 (!dc->mask.mask))
240 pixman_image_composite(op, dc->col.pixman_color_image,
241 NULL, dst->pixman.im,
242 x0, y0, 0, 0, x0, y0, 1, len);
243 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
244 (dc->mask.mask))
245 pixman_image_composite(op, dc->col.pixman_color_image,
246 dc->mask.mask->pixman.im, dst->pixman.im,
247 x0, y0, 0, 0, x0, y0, 1, len);
248 else
249# endif
250#endif
251 {
252 while (len--)
253 {
197#ifdef EVAS_SLI 254#ifdef EVAS_SLI
198 if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) 255 if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y)
199#endif 256#endif
200 { 257 {
201 pfunc(0, 255, color, p); 258 pfunc(0, 255, color, p);
202 } 259 }
203 p += dstw; 260 p += dstw;
204 } 261 }
205 } 262 }
263 }
206 return; 264 return;
207 } 265 }
208 266
@@ -281,16 +339,52 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
281 if (dx > 0) dstw--; 339 if (dx > 0) dstw--;
282 else dstw++; 340 else dstw++;
283 } 341 }
284 342#ifdef HAVE_PIXMAN
343# ifdef PIXMAN_LINE
344 int pixman_x_position = x0;
345 int pixman_y_position = y0;
346 int x_unit = dstw - dst->cache_entry.w;
347# endif
348#endif
349
350
285 while (len--) 351 while (len--)
286 { 352 {
287#ifdef EVAS_SLI 353#ifdef EVAS_SLI
288 if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) 354 if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y)
289#endif 355#endif
290 { 356 {
291 pfunc(0, 255, color, p); 357#ifdef HAVE_PIXMAN
292 } 358# ifdef PIXMAN_LINE
293 p += dstw; 359 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
360 (!dc->mask.mask))
361 pixman_image_composite(op, dc->col.pixman_color_image,
362 NULL, dst->pixman.im,
363 pixman_x_position,
364 pixman_y_position,
365 0, 0, pixman_x_position,
366 pixman_y_position, 1, 1);
367 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
368 (dc->mask.mask))
369 pixman_image_composite(op, dc->col.pixman_color_image,
370 dc->mask.mask->pixman.im,
371 dst->pixman.im,
372 pixman_x_position,
373 pixman_y_position, 0, 0,
374 pixman_x_position,
375 pixman_y_position, 1, 1);
376 else
377# endif
378#endif
379 pfunc(0, 255, color, p);
380 }
381#ifdef HAVE_PIXMAN
382# ifdef PIXMAN_LINE
383 pixman_x_position += x_unit;
384 pixman_y_position += 1;
385# endif
386#endif
387 p += dstw;
294 } 388 }
295 } 389 }
296} 390}
@@ -456,6 +550,31 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
456 dx = x1 - x0; 550 dx = x1 - x0;
457 dy = y1 - y0; 551 dy = y1 - y0;
458 552
553#ifdef HAVE_PIXMAN
554# ifdef PIXMAN_LINE
555 int pix_x;
556 int pix_y;
557 int pix_x_unit;
558 int pix_y_unit;
559
560 pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
561 if (dc->render_op == _EVAS_RENDER_BLEND)
562 op = PIXMAN_OP_OVER;
563 pix_x = x0;
564 pix_y = y0;
565
566 if (dx < 0)
567 pix_x_unit = -1;
568 else
569 pix_x_unit = 1;
570
571 if (dy < 0)
572 pix_y_unit = -1;
573 else
574 pix_y_unit = 1;
575# endif
576#endif
577
459 if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) 578 if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) )
460 { 579 {
461 _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); 580 _evas_draw_simple_line(dst, dc, x0, y0, x1, y1);
@@ -494,6 +613,11 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
494 prev_y = y; 613 prev_y = y;
495 p += dh; 614 p += dh;
496 py += dely; 615 py += dely;
616#ifdef HAVE_PIXMAN
617# ifdef PIXMAN_LINE
618 pix_y += pix_y_unit;
619# endif
620#endif
497 } 621 }
498 if (!p1_in) 622 if (!p1_in)
499 { 623 {
@@ -509,12 +633,37 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
509#endif 633#endif
510 { 634 {
511 if (IN_RANGE(px, py, clw, clh)) 635 if (IN_RANGE(px, py, clw, clh))
512 pfunc(0, 255, color, p); 636 {
513 } 637#ifdef HAVE_PIXMAN
514 next_x: 638# ifdef PIXMAN_LINE
515 yy += dyy; 639 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
516 px++; 640 (!dc->mask.mask))
517 p++; 641 pixman_image_composite(op, dc->col.pixman_color_image,
642 NULL, dst->pixman.im,
643 pix_x, pix_y, 0, 0,
644 pix_x, pix_y, 1, 1);
645 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
646 (dc->mask.mask))
647 pixman_image_composite(op, dc->col.pixman_color_image,
648 dc->mask.mask->pixman.im,
649 dst->pixman.im,
650 pix_x, pix_y, 0, 0,
651 pix_x, pix_y, 1, 1);
652 else
653# endif
654#endif
655 pfunc(0, 255, color, p);
656 }
657 }
658next_x:
659 yy += dyy;
660 px++;
661 p++;
662#ifdef HAVE_PIXMAN
663# ifdef PIXMAN_LINE
664 pix_x += pix_x_unit;
665# endif
666#endif
518 } 667 }
519 return; 668 return;
520 } 669 }
@@ -529,9 +678,14 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
529 x += ((xx - (x << 16)) >> 15); 678 x += ((xx - (x << 16)) >> 15);
530 if (prev_x != x) 679 if (prev_x != x)
531 { 680 {
532 prev_x = x; 681 prev_x = x;
533 px += delx; 682 px += delx;
534 p += delx; 683 p += delx;
684#ifdef HAVE_PIXMAN
685# ifdef PIXMAN_LINE
686 pix_x += pix_x_unit;
687# endif
688#endif
535 } 689 }
536 if (!p1_in) 690 if (!p1_in)
537 { 691 {
@@ -547,12 +701,38 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
547#endif 701#endif
548 { 702 {
549 if (IN_RANGE(px, py, clw, clh)) 703 if (IN_RANGE(px, py, clw, clh))
550 pfunc(0, 255, color, p); 704 {
551 } 705#ifdef HAVE_PIXMAN
552 next_y: 706# ifdef PIXMAN_LINE
707 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
708 (!dc->mask.mask))
709 pixman_image_composite(op, dc->col.pixman_color_image,
710 NULL, dst->pixman.im,
711 pix_x, pix_y, 0, 0,
712 pix_x, pix_y, 1, 1);
713 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
714 (dc->mask.mask))
715 pixman_image_composite(op, dc->col.pixman_color_image,
716 dc->mask.mask->pixman.im,
717 dst->pixman.im,
718 pix_x, pix_y, 0, 0,
719 pix_x, pix_y, 1, 1);
720 else
721# endif
722#endif
723 pfunc(0, 255, color, p);
724 }
725 }
726next_y:
553 xx += dxx; 727 xx += dxx;
554 py++; 728 py++;
555 p += dstw; 729 p += dstw;
730#ifdef HAVE_PIXMAN
731# ifdef PIXMAN_LINE
732 pix_y += pix_y_unit;
733# endif
734#endif
735
556 } 736 }
557} 737}
558 738
@@ -568,12 +748,43 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
568 DATA32 *p, *data, color; 748 DATA32 *p, *data, color;
569 RGBA_Gfx_Pt_Func pfunc; 749 RGBA_Gfx_Pt_Func pfunc;
570 750
751 dx = x1 - x0;
752 dy = y1 - y0;
753
754#ifdef HAVE_PIXMAN
755# ifdef PIXMAN_LINE
756 int pix_x;
757 int pix_y;
758 int pix_x_unit;
759 int pix_y_unit;
760
761 pixman_image_t *aa_mask_image;
762 int alpha_data_buffer;
763
764 pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
765 if (dc->render_op == _EVAS_RENDER_BLEND)
766 op = PIXMAN_OP_OVER;
767 pix_x = x0;
768 pix_y = y0;
769
770 if (dx < 0)
771 pix_x_unit = -1;
772 else
773 pix_x_unit = 1;
774
775 if (dy < 0)
776 pix_y_unit = -1;
777 else
778 pix_y_unit = 1;
779# endif
780#endif
571 if (y0 > y1) 781 if (y0 > y1)
572 EXCHANGE_POINTS(x0, y0, x1, y1); 782 EXCHANGE_POINTS(x0, y0, x1, y1);
783
573 dx = x1 - x0; 784 dx = x1 - x0;
574 dy = y1 - y0; 785 dy = y1 - y0;
575 786
576 if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) 787 if ((dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy))
577 { 788 {
578 _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); 789 _evas_draw_simple_line(dst, dc, x0, y0, x1, y1);
579 return; 790 return;
@@ -609,9 +820,14 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
609 y = (yy >> 16); 820 y = (yy >> 16);
610 if (prev_y != y) 821 if (prev_y != y)
611 { 822 {
612 prev_y = y; 823 prev_y = y;
613 p += dh; 824 p += dh;
614 py += dely; 825 py += dely;
826#ifdef HAVE_PIXMAN
827# ifdef PIXMAN_LINE
828 pix_y += pix_y_unit;
829# endif
830#endif
615 } 831 }
616 if (!p1_in) 832 if (!p1_in)
617 { 833 {
@@ -624,39 +840,109 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
624 } 840 }
625 if (px < clw) 841 if (px < clw)
626 { 842 {
627 aa = ((yy - (y << 16)) >> 8); 843 aa = ((yy - (y << 16)) >> 8);
628 if ((py) < clh) 844 if ((py) < clh)
629 pfunc(0, 255 - aa, color, p); 845 {
630 if ((py + 1) < clh) 846#ifdef HAVE_PIXMAN
631 pfunc(0, aa, color, p + dstw); 847# ifdef PIXMAN_LINE
632 } 848 alpha_data_buffer = 255 - aa;
633 849 aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
634 next_x: 850 (uint32_t *)&alpha_data_buffer, 4);
635 yy += dyy; 851
636 px++; 852 if ((dst->pixman.im) && (dc->col.pixman_color_image ) &&
637 p++; 853 (!dc->mask.mask))
854 pixman_image_composite(PIXMAN_OP_OVER,
855 dc->col.pixman_color_image,
856 aa_mask_image, dst->pixman.im,
857 pix_x, pix_y, 0, 0,
858 pix_x, pix_y, 1, 1);
859 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
860 (dc->mask.mask) )
861 pixman_image_composite(op, dc->col.pixman_color_image,
862 dc->mask.mask->pixman.im,
863 dst->pixman.im,
864 pix_x, pix_y, 0, 0,
865 pix_x, pix_y, 1, 1);
866 else
867# endif
868#endif
869 pfunc(0, 255 - aa, color, p);
870#ifdef HAVE_PIXMAN
871# ifdef PIXMAN_LINE
872 pixman_image_unref(aa_mask_image);
873# endif
874#endif
875 }
876 if ((py + 1) < clh)
877 {
878#ifdef HAVE_PIXMAN
879# ifdef PIXMAN_LINE
880 alpha_data_buffer = aa;
881 aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
882 (uint32_t *)&alpha_data_buffer, 4);
883
884 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
885 (!dc->mask.mask))
886 pixman_image_composite(PIXMAN_OP_OVER,
887 dc->col.pixman_color_image,
888 aa_mask_image, dst->pixman.im,
889 pix_x, pix_y + 1, 0, 0,
890 pix_x, pix_y + 1, 1, 1);
891 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
892 (dc->mask.mask))
893 pixman_image_composite(op, dc->col.pixman_color_image,
894 dc->mask.mask->pixman.im,
895 dst->pixman.im,
896 pix_x, pix_y + 1, 0, 0,
897 pix_x, pix_y + 1, 1, 1);
898 else
899# endif
900#endif
901 pfunc(0, aa, color, p + dstw);
902#ifdef HAVE_PIXMAN
903# ifdef PIXMAN_LINE
904 pixman_image_unref(aa_mask_image);
905# endif
906#endif
907 }
908 }
909
910next_x:
911 yy += dyy;
912 px++;
913 p++;
914#ifdef HAVE_PIXMAN
915# ifdef PIXMAN_LINE
916 pix_x += pix_x_unit;
917# endif
918#endif
638 } 919 }
639 return; 920 return;
640 } 921 }
641 922
642 /* steep: y-parametric */ 923 /* steep: y-parametric */
643 SETUP_LINE_STEEP; 924 SETUP_LINE_STEEP;
644 925
645 while (py < by) 926 while (py < by)
646 { 927 {
647 DATA8 aa; 928 DATA8 aa;
648 929
649 x = (xx >> 16); 930 x = (xx >> 16);
650 if (prev_x != x) 931 if (prev_x != x)
651 { 932 {
652 prev_x = x; 933 prev_x = x;
653 px += delx; 934 px += delx;
654 p += delx; 935 p += delx;
936#ifdef HAVE_PIXMAN
937# ifdef PIXMAN_LINE
938 pix_x += pix_x_unit;
939# endif
940#endif
655 } 941 }
656 if (!p1_in) 942 if (!p1_in)
657 { 943 {
658 if ((px < 0) && (delx < 0)) return; 944 if ((px < 0) && (delx < 0)) return;
659 if ((px > rx) && (delx > 0)) return; 945 if ((px > rx) && (delx > 0)) return;
660 } 946 }
661 if (!p0_in) 947 if (!p0_in)
662 { 948 {
@@ -664,15 +950,80 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
664 } 950 }
665 if (py < clh) 951 if (py < clh)
666 { 952 {
667 aa = ((xx - (x << 16)) >> 8); 953 aa = ((xx - (x << 16)) >> 8);
668 if ((px) < clw) 954 if ((px) < clw)
669 pfunc(0, 255 - aa, color, p); 955 {
670 if ((px + 1) < clw) 956#ifdef HAVE_PIXMAN
671 pfunc(0, aa, color, p + 1); 957# ifdef PIXMAN_LINE
672 } 958 alpha_data_buffer = 255 - aa;
959 aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, (uint32_t *)&alpha_data_buffer, 4);
960
961 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
962 (!dc->mask.mask))
963 pixman_image_composite(PIXMAN_OP_OVER,
964 dc->col.pixman_color_image,
965 aa_mask_image, dst->pixman.im,
966 pix_x, pix_y, 0, 0,
967 pix_x, pix_y, 1, 1);
968 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
969 (dc->mask.mask))
970 pixman_image_composite(op, dc->col.pixman_color_image,
971 dc->mask.mask->pixman.im,
972 dst->pixman.im,
973 pix_x, pix_y, 0, 0,
974 pix_x, pix_y, 1, 1);
975 else
976# endif
977#endif
978 pfunc(0, 255 - aa, color, p);
979#ifdef HAVE_PIXMAN
980# ifdef PIXMAN_LINE
981 pixman_image_unref(aa_mask_image);
982# endif
983#endif
984
985 }
986 if ((px + 1) < clw)
987 {
988#ifdef HAVE_PIXMAN
989# ifdef PIXMAN_LINE
990 alpha_data_buffer = aa;
991 aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
992 (uint32_t *)&alpha_data_buffer, 4);
993
994 if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
995 (!dc->mask.mask))
996 pixman_image_composite(PIXMAN_OP_OVER,
997 dc->col.pixman_color_image,
998 aa_mask_image, dst->pixman.im,
999 pix_x + 1, pix_y, 0, 0,
1000 pix_x + 1, pix_y, 1, 1);
1001 else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
1002 (dc->mask.mask))
1003 pixman_image_composite(op, dc->col.pixman_color_image,
1004 dc->mask.mask->pixman.im,
1005 dst->pixman.im,
1006 pix_x + 1, pix_y, 0, 0,
1007 pix_x + 1, pix_y, 1, 1);
1008 else
1009# endif
1010#endif
1011 pfunc(0, aa, color, p + 1);
1012#ifdef HAVE_PIXMAN
1013# ifdef PIXMAN_LINE
1014 pixman_image_unref(aa_mask_image);
1015# endif
1016#endif
1017 }
1018 }
673 next_y: 1019 next_y:
674 xx += dxx; 1020 xx += dxx;
675 py++; 1021 py++;
676 p += dstw; 1022 p += dstw;
1023#ifdef HAVE_PIXMAN
1024# ifdef PIXMAN_LINE
1025 pix_y += pix_y_unit;
1026# endif
1027#endif
677 } 1028 }
678} 1029}
diff --git a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in
index 4c721f9..78e893d 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 167PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 168PKG_CONFIG = @PKG_CONFIG@
169PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
170PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
171PNG_CFLAGS = @PNG_CFLAGS@ 169PNG_CFLAGS = @PNG_CFLAGS@
172PNG_LIBS = @PNG_LIBS@ 170PNG_LIBS = @PNG_LIBS@
173RANLIB = @RANLIB@ 171RANLIB = @RANLIB@
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
184VALGRIND_LIBS = @VALGRIND_LIBS@ 182VALGRIND_LIBS = @VALGRIND_LIBS@
185VERSION = @VERSION@ 183VERSION = @VERSION@
186VMAJ = @VMAJ@ 184VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@ 187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 189XCB_CFLAGS = @XCB_CFLAGS@
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
268evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
269evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
270evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
271evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
268evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 272evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
269evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 273evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
270evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 274evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in
index e796ef2..e00dac8 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in
@@ -203,8 +203,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
203PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 203PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
204PIXMAN_LIBS = @PIXMAN_LIBS@ 204PIXMAN_LIBS = @PIXMAN_LIBS@
205PKG_CONFIG = @PKG_CONFIG@ 205PKG_CONFIG = @PKG_CONFIG@
206PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
207PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
208PNG_CFLAGS = @PNG_CFLAGS@ 206PNG_CFLAGS = @PNG_CFLAGS@
209PNG_LIBS = @PNG_LIBS@ 207PNG_LIBS = @PNG_LIBS@
210RANLIB = @RANLIB@ 208RANLIB = @RANLIB@
@@ -221,6 +219,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
221VALGRIND_LIBS = @VALGRIND_LIBS@ 219VALGRIND_LIBS = @VALGRIND_LIBS@
222VERSION = @VERSION@ 220VERSION = @VERSION@
223VMAJ = @VMAJ@ 221VMAJ = @VMAJ@
222WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
223WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
224WIN32_CFLAGS = @WIN32_CFLAGS@ 224WIN32_CFLAGS = @WIN32_CFLAGS@
225WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 225WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
226XCB_CFLAGS = @XCB_CFLAGS@ 226XCB_CFLAGS = @XCB_CFLAGS@
@@ -302,6 +302,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
302evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 302evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
303evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 303evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
304evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 304evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
305evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
306evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
307evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
308evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
305evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 309evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
306evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 310evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
307evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 311evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c
index 64d5a86..1843265 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c
+++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c
@@ -53,7 +53,8 @@ _op_blend_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32
53static void 53static void
54init_blend_color_span_funcs_sse3(void) 54init_blend_color_span_funcs_sse3(void)
55{ 55{
56 op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3; 56// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle)
57// op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3;
57 op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3; 58 op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3;
58 59
59// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) 60// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle)
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c
index 83230e5..5883d15 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c
+++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c
@@ -168,7 +168,8 @@ _op_blend_mas_can_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, i
168static void 168static void
169init_blend_mask_color_span_funcs_sse3(void) 169init_blend_mask_color_span_funcs_sse3(void)
170{ 170{
171 op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_mas_c_dp_sse3; 171// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle)
172// op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_mas_c_dp_sse3;
172 op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_mas_cn_dp_sse3; 173 op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_mas_cn_dp_sse3;
173 op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3; 174 op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3;
174 op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3; 175 op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3;
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c
index 2e72fec..69c597c 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c
+++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c
@@ -146,7 +146,6 @@ init_blend_pixel_span_funcs_sse3(void)
146 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pas_dp_sse3; 146 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pas_dp_sse3;
147 op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pan_dp_sse3; 147 op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pan_dp_sse3;
148 148
149
150// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) 149// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle)
151// op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_dpan_sse3; 150// op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_dpan_sse3;
152 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_dpan_sse3; 151 op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_dpan_sse3;
diff --git a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in
index 52658a4..40536c0 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 167PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 168PKG_CONFIG = @PKG_CONFIG@
169PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
170PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
171PNG_CFLAGS = @PNG_CFLAGS@ 169PNG_CFLAGS = @PNG_CFLAGS@
172PNG_LIBS = @PNG_LIBS@ 170PNG_LIBS = @PNG_LIBS@
173RANLIB = @RANLIB@ 171RANLIB = @RANLIB@
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
184VALGRIND_LIBS = @VALGRIND_LIBS@ 182VALGRIND_LIBS = @VALGRIND_LIBS@
185VERSION = @VERSION@ 183VERSION = @VERSION@
186VMAJ = @VMAJ@ 184VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@ 187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 189XCB_CFLAGS = @XCB_CFLAGS@
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
268evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
269evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
270evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
271evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
268evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 272evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
269evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 273evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
270evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 274evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in
index 0ccd7f3..d5764b1 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 167PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 168PKG_CONFIG = @PKG_CONFIG@
169PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
170PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
171PNG_CFLAGS = @PNG_CFLAGS@ 169PNG_CFLAGS = @PNG_CFLAGS@
172PNG_LIBS = @PNG_LIBS@ 170PNG_LIBS = @PNG_LIBS@
173RANLIB = @RANLIB@ 171RANLIB = @RANLIB@
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
184VALGRIND_LIBS = @VALGRIND_LIBS@ 182VALGRIND_LIBS = @VALGRIND_LIBS@
185VERSION = @VERSION@ 183VERSION = @VERSION@
186VMAJ = @VMAJ@ 184VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@ 187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 189XCB_CFLAGS = @XCB_CFLAGS@
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
268evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
269evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
270evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
271evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
268evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 272evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
269evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 273evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
270evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 274evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in
index f239cf7..d5452fe 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 167PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 168PKG_CONFIG = @PKG_CONFIG@
169PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
170PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
171PNG_CFLAGS = @PNG_CFLAGS@ 169PNG_CFLAGS = @PNG_CFLAGS@
172PNG_LIBS = @PNG_LIBS@ 170PNG_LIBS = @PNG_LIBS@
173RANLIB = @RANLIB@ 171RANLIB = @RANLIB@
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
184VALGRIND_LIBS = @VALGRIND_LIBS@ 182VALGRIND_LIBS = @VALGRIND_LIBS@
185VERSION = @VERSION@ 183VERSION = @VERSION@
186VMAJ = @VMAJ@ 184VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@ 187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 189XCB_CFLAGS = @XCB_CFLAGS@
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
268evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
269evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
270evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
271evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
268evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 272evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
269evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 273evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
270evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 274evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in
index b68ed3b..4b93b1b 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 167PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 168PKG_CONFIG = @PKG_CONFIG@
169PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
170PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
171PNG_CFLAGS = @PNG_CFLAGS@ 169PNG_CFLAGS = @PNG_CFLAGS@
172PNG_LIBS = @PNG_LIBS@ 170PNG_LIBS = @PNG_LIBS@
173RANLIB = @RANLIB@ 171RANLIB = @RANLIB@
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
184VALGRIND_LIBS = @VALGRIND_LIBS@ 182VALGRIND_LIBS = @VALGRIND_LIBS@
185VERSION = @VERSION@ 183VERSION = @VERSION@
186VMAJ = @VMAJ@ 184VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@ 187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 189XCB_CFLAGS = @XCB_CFLAGS@
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 267evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
268evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
269evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
270evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
271evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
268evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 272evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
269evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 273evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
270evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 274evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
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;
diff --git a/libraries/evas/src/lib/engines/common/evas_rectangle_main.c b/libraries/evas/src/lib/engines/common/evas_rectangle_main.c
index 28aaf16..fc25fd0 100644
--- a/libraries/evas/src/lib/engines/common/evas_rectangle_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_rectangle_main.c
@@ -58,16 +58,34 @@ rectangle_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, in
58 RECTS_CLIP_TO_RECT(x, y, w, h, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); 58 RECTS_CLIP_TO_RECT(x, y, w, h, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
59 if ((w <= 0) || (h <= 0)) return; 59 if ((w <= 0) || (h <= 0)) return;
60 60
61 func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op); 61#ifdef HAVE_PIXMAN
62 ptr = dst->image.data + (y * dst->cache_entry.w) + x; 62# ifdef PIXMAN_RECT
63 for (yy = 0; yy < h; yy++) 63 pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
64
65 if (dc->render_op == _EVAS_RENDER_BLEND)
66 op = PIXMAN_OP_OVER;
67
68 if ((dst->pixman.im) && (dc->col.pixman_color_image))
64 { 69 {
70 pixman_image_composite(op, dc->col.pixman_color_image, NULL,
71 dst->pixman.im, x, y, 0, 0,
72 x, y, w, h);
73 }
74 else
75# endif
76#endif
77 {
78 func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op);
79 ptr = dst->image.data + (y * dst->cache_entry.w) + x;
80 for (yy = 0; yy < h; yy++)
81 {
65#ifdef EVAS_SLI 82#ifdef EVAS_SLI
66 if (((yy + y) % dc->sli.h) == dc->sli.y) 83 if (((yy + y) % dc->sli.h) == dc->sli.y)
67#endif 84#endif
68 { 85 {
69 func(NULL, NULL, dc->col.col, ptr, w); 86 func(NULL, NULL, dc->col.col, ptr, w);
70 } 87 }
71 ptr += dst->cache_entry.w; 88 ptr += dst->cache_entry.w;
89 }
72 } 90 }
73} 91}
diff --git a/libraries/evas/src/lib/engines/common/evas_scale_sample.c b/libraries/evas/src/lib/engines/common/evas_scale_sample.c
index 54b8e92..a8951b8 100644
--- a/libraries/evas/src/lib/engines/common/evas_scale_sample.c
+++ b/libraries/evas/src/lib/engines/common/evas_scale_sample.c
@@ -154,7 +154,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
154 dst_clip_w = m_clip_w; 154 dst_clip_w = m_clip_w;
155 dst_clip_h = m_clip_h; 155 dst_clip_h = m_clip_h;
156 } 156 }
157 157
158 if (dst_clip_x < dst_region_x) 158 if (dst_clip_x < dst_region_x)
159 { 159 {
160 dst_clip_w += dst_clip_x - dst_region_x; 160 dst_clip_w += dst_clip_x - dst_region_x;
@@ -258,7 +258,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
258 func = evas_common_gfx_func_composite_pixel_mask_span_get(src, dst, dst_clip_w, dc->render_op); 258 func = evas_common_gfx_func_composite_pixel_mask_span_get(src, dst, dst_clip_w, dc->render_op);
259 maskobj = dc->mask.mask; 259 maskobj = dc->mask.mask;
260 mask = maskobj->mask.mask; 260 mask = maskobj->mask.mask;
261/* 261/*
262 if (1 || dst_region_w > src_region_w || dst_region_h > src_region_h){ 262 if (1 || dst_region_w > src_region_w || dst_region_h > src_region_h){
263 printf("Mask w/h: %d/%d\n",maskobj->cache_entry.w, 263 printf("Mask w/h: %d/%d\n",maskobj->cache_entry.w,
264 maskobj->cache_entry.h); 264 maskobj->cache_entry.h);
@@ -276,26 +276,47 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
276 if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h)) 276 if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h))
277 { 277 {
278#ifdef HAVE_PIXMAN 278#ifdef HAVE_PIXMAN
279 if ((1) && 279# ifdef PIXMAN_IMAGE_SCALE_SAMPLE
280 (src->pixman.im) && (dst->pixman.im) && 280 if ((src->pixman.im) && (dst->pixman.im) && (!dc->mask.mask) &&
281 ((!dc->mul.use) || 281 ((!dc->mul.use) ||
282 ((dc->mul.use) && (dc->mul.col == 0xffffffff))) && 282 ((dc->mul.use) && (dc->mul.col == 0xffffffff))) &&
283 ((dc->render_op == _EVAS_RENDER_COPY) || 283 ((dc->render_op == _EVAS_RENDER_COPY) ||
284 (dc->render_op == _EVAS_RENDER_BLEND)) 284 (dc->render_op == _EVAS_RENDER_BLEND)))
285 )
286 { 285 {
287 pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY 286 pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
288 if (dc->render_op == _EVAS_RENDER_BLEND) op = PIXMAN_OP_OVER; 287 if (dc->render_op == _EVAS_RENDER_BLEND)
288 op = PIXMAN_OP_OVER;
289
289 pixman_image_composite(op, 290 pixman_image_composite(op,
290 src->pixman.im, NULL, 291 src->pixman.im, NULL,
291 dst->pixman.im, 292 dst->pixman.im,
292 (dst_clip_x - dst_region_x) + src_region_x, 293 (dst_clip_x - dst_region_x) + src_region_x,
293 (dst_clip_y - dst_region_y) + src_region_y, 294 (dst_clip_y - dst_region_y) + src_region_y,
294 0, 0, 295 0, 0,
295 dst_clip_x, dst_clip_y, 296 dst_clip_x, dst_clip_y,
297 dst_clip_w, dst_clip_h);
298 }
299 else if ((src->pixman.im) && (dst->pixman.im) &&
300 (dc->mask.mask) && (dc->mask.mask->pixman.im) &&
301 ((dc->render_op == _EVAS_RENDER_COPY) ||
302 (dc->render_op == _EVAS_RENDER_BLEND)))
303 {
304 // In case of pixel and color operation.
305 pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
306 if (dc->render_op == _EVAS_RENDER_BLEND)
307 op = PIXMAN_OP_OVER;
308
309 pixman_image_composite(op,
310 src->pixman.im, dc->mask.mask->pixman.im,
311 dst->pixman.im,
312 (dst_clip_x - dst_region_x) + src_region_x,
313 (dst_clip_y - dst_region_y) + src_region_y,
314 0, 0,
315 dst_clip_x, dst_clip_y,
296 dst_clip_w, dst_clip_h); 316 dst_clip_w, dst_clip_h);
297 } 317 }
298 else 318 else
319# endif
299#endif 320#endif
300 { 321 {
301 ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x; 322 ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x;
@@ -322,59 +343,59 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
322 } 343 }
323 else 344 else
324 { 345 {
325 /* fill scale tables */ 346 /* fill scale tables */
326 for (x = 0; x < dst_clip_w; x++) 347 for (x = 0; x < dst_clip_w; x++)
327 lin_ptr[x] = (((x + dst_clip_x - dst_region_x) * src_region_w) / dst_region_w) + src_region_x; 348 lin_ptr[x] = (((x + dst_clip_x - dst_region_x) * src_region_w) / dst_region_w) + src_region_x;
328 for (y = 0; y < dst_clip_h; y++) 349 for (y = 0; y < dst_clip_h; y++)
329 row_ptr[y] = src_data + (((((y + dst_clip_y - dst_region_y) * src_region_h) / dst_region_h) 350 row_ptr[y] = src_data + (((((y + dst_clip_y - dst_region_y) * src_region_h) / dst_region_h)
330 + src_region_y) * src_w); 351 + src_region_y) * src_w);
331 /* scale to dst */ 352 /* scale to dst */
332 dptr = dst_ptr; 353 dptr = dst_ptr;
333#ifdef DIRECT_SCALE 354#ifdef DIRECT_SCALE
334 if ((!src->cache_entry.flags.alpha) && 355 if ((!src->cache_entry.flags.alpha) &&
335 (!dst->cache_entry.flags.alpha) && 356 (!dst->cache_entry.flags.alpha) &&
336 (!dc->mul.use)) 357 (!dc->mul.use))
337 { 358 {
338 for (y = 0; y < dst_clip_h; y++) 359 for (y = 0; y < dst_clip_h; y++)
339 { 360 {
340#ifdef EVAS_SLI 361# ifdef EVAS_SLI
341 if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) 362 if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
342#endif 363# endif
343 { 364 {
344 dst_ptr = dptr; 365 dst_ptr = dptr;
345 for (x = 0; x < dst_clip_w; x++) 366 for (x = 0; x < dst_clip_w; x++)
346 { 367 {
347 ptr = row_ptr[y] + lin_ptr[x]; 368 ptr = row_ptr[y] + lin_ptr[x];
348 *dst_ptr = *ptr; 369 *dst_ptr = *ptr;
349 dst_ptr++; 370 dst_ptr++;
350 } 371 }
351 } 372 }
352 dptr += dst_w; 373 dptr += dst_w;
353 } 374 }
354 } 375 }
355 else 376 else
356#endif 377#endif
357 { 378 {
358 /* a scanline buffer */ 379 /* a scanline buffer */
359 buf = alloca(dst_clip_w * sizeof(DATA32)); 380 buf = alloca(dst_clip_w * sizeof(DATA32));
360 for (y = 0; y < dst_clip_h; y++) 381 for (y = 0; y < dst_clip_h; y++)
361 { 382 {
362#ifdef EVAS_SLI 383#ifdef EVAS_SLI
363 if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) 384 if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
364#endif 385#endif
365 { 386 {
366 dst_ptr = buf; 387 dst_ptr = buf;
367 for (x = 0; x < dst_clip_w; x++) 388 for (x = 0; x < dst_clip_w; x++)
368 { 389 {
369 ptr = row_ptr[y] + lin_ptr[x]; 390 ptr = row_ptr[y] + lin_ptr[x];
370 *dst_ptr = *ptr; 391 *dst_ptr = *ptr;
371 dst_ptr++; 392 dst_ptr++;
372 } 393 }
373 /* * blend here [clip_w *] buf -> dptr * */ 394 /* * blend here [clip_w *] buf -> dptr * */
374 func(buf, NULL, dc->mul.col, dptr, dst_clip_w); 395 func(buf, NULL, dc->mul.col, dptr, dst_clip_w);
375 } 396 }
376 dptr += dst_w; 397 dptr += dst_w;
377 } 398 }
378 } 399 }
379 } 400 }
380} 401}
diff --git a/libraries/evas/src/lib/engines/common/evas_tiler.c b/libraries/evas/src/lib/engines/common/evas_tiler.c
index 0bbe811..ff359a4 100644
--- a/libraries/evas/src/lib/engines/common/evas_tiler.c
+++ b/libraries/evas/src/lib/engines/common/evas_tiler.c
@@ -19,7 +19,9 @@ static inline list_node_t *rect_list_add_split_fuzzy(list_t *rects, list_node_t
19static inline void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error); 19static inline void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error);
20static inline void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error); 20static inline void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error);
21static inline void rect_print(const rect_t r); 21static inline void rect_print(const rect_t r);
22#if 0
22static inline void rect_list_print(const list_t rects); 23static inline void rect_list_print(const list_t rects);
24#endif
23 25
24static const list_node_t list_node_zeroed = { NULL }; 26static const list_node_t list_node_zeroed = { NULL };
25static const list_t list_zeroed = { NULL, NULL }; 27static const list_t list_zeroed = { NULL, NULL };
@@ -117,6 +119,7 @@ rect_print(const rect_t r)
117 INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height); 119 INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height);
118} 120}
119 121
122#if 0
120static inline void 123static inline void
121rect_list_print(const list_t rects) 124rect_list_print(const list_t rects)
122{ 125{
@@ -143,6 +146,7 @@ rect_list_print(const list_t rects)
143 } 146 }
144 putchar(']'); 147 putchar(']');
145} 148}
149#endif
146 150
147static inline void 151static inline void
148rect_list_append_node(list_t *rects, list_node_t *node) 152rect_list_append_node(list_t *rects, list_node_t *node)
diff --git a/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c b/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c
index 9f7859b..002cfbe 100644
--- a/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c
+++ b/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c
@@ -1,3 +1,7 @@
1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
1#include <string.h> 5#include <string.h>
2#include <stdlib.h> 6#include <stdlib.h>
3 7
diff --git a/libraries/evas/src/lib/engines/common/language/evas_language_utils.c b/libraries/evas/src/lib/engines/common/language/evas_language_utils.c
index 9c9b3e3..b362f10 100644
--- a/libraries/evas/src/lib/engines/common/language/evas_language_utils.c
+++ b/libraries/evas/src/lib/engines/common/language/evas_language_utils.c
@@ -13,6 +13,12 @@
13 * 13 *
14 * @{ 14 * @{
15 */ 15 */
16#ifdef HAVE_CONFIG_H
17# include <config.h>
18#endif
19
20#include <stdlib.h>
21
16#include <Eina.h> 22#include <Eina.h>
17 23
18#include "evas_language_utils.h" 24#include "evas_language_utils.h"
diff --git a/libraries/evas/src/lib/engines/common_16/Makefile.in b/libraries/evas/src/lib/engines/common_16/Makefile.in
index 9097a8d..313cbda 100644
--- a/libraries/evas/src/lib/engines/common_16/Makefile.in
+++ b/libraries/evas/src/lib/engines/common_16/Makefile.in
@@ -201,8 +201,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
201PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 201PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
202PIXMAN_LIBS = @PIXMAN_LIBS@ 202PIXMAN_LIBS = @PIXMAN_LIBS@
203PKG_CONFIG = @PKG_CONFIG@ 203PKG_CONFIG = @PKG_CONFIG@
204PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
205PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
206PNG_CFLAGS = @PNG_CFLAGS@ 204PNG_CFLAGS = @PNG_CFLAGS@
207PNG_LIBS = @PNG_LIBS@ 205PNG_LIBS = @PNG_LIBS@
208RANLIB = @RANLIB@ 206RANLIB = @RANLIB@
@@ -219,6 +217,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
219VALGRIND_LIBS = @VALGRIND_LIBS@ 217VALGRIND_LIBS = @VALGRIND_LIBS@
220VERSION = @VERSION@ 218VERSION = @VERSION@
221VMAJ = @VMAJ@ 219VMAJ = @VMAJ@
220WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
221WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
222WIN32_CFLAGS = @WIN32_CFLAGS@ 222WIN32_CFLAGS = @WIN32_CFLAGS@
223WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 223WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
224XCB_CFLAGS = @XCB_CFLAGS@ 224XCB_CFLAGS = @XCB_CFLAGS@
@@ -300,6 +300,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
300evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 300evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
301evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 301evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
302evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 302evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
303evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
304evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
305evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
306evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
303evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 307evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
304evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 308evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
305evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 309evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@
diff --git a/libraries/evas/src/lib/engines/common_8/Makefile.in b/libraries/evas/src/lib/engines/common_8/Makefile.in
index 06c13de..7fa4fbb 100644
--- a/libraries/evas/src/lib/engines/common_8/Makefile.in
+++ b/libraries/evas/src/lib/engines/common_8/Makefile.in
@@ -200,8 +200,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
200PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 200PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
201PIXMAN_LIBS = @PIXMAN_LIBS@ 201PIXMAN_LIBS = @PIXMAN_LIBS@
202PKG_CONFIG = @PKG_CONFIG@ 202PKG_CONFIG = @PKG_CONFIG@
203PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
204PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
205PNG_CFLAGS = @PNG_CFLAGS@ 203PNG_CFLAGS = @PNG_CFLAGS@
206PNG_LIBS = @PNG_LIBS@ 204PNG_LIBS = @PNG_LIBS@
207RANLIB = @RANLIB@ 205RANLIB = @RANLIB@
@@ -218,6 +216,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
218VALGRIND_LIBS = @VALGRIND_LIBS@ 216VALGRIND_LIBS = @VALGRIND_LIBS@
219VERSION = @VERSION@ 217VERSION = @VERSION@
220VMAJ = @VMAJ@ 218VMAJ = @VMAJ@
219WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
220WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
221WIN32_CFLAGS = @WIN32_CFLAGS@ 221WIN32_CFLAGS = @WIN32_CFLAGS@
222WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ 222WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
223XCB_CFLAGS = @XCB_CFLAGS@ 223XCB_CFLAGS = @XCB_CFLAGS@
@@ -299,6 +299,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
299evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 299evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
300evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 300evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
301evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ 301evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@
302evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@
303evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@
304evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@
305evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@
302evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ 306evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@
303evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ 307evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@
304evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ 308evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@