summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHermet Park <hermetpark@gmail.com>2019-04-18 19:30:33 +0900
committerHermet Park <hermetpark@gmail.com>2019-04-18 19:47:54 +0900
commit9c66a4751ce350d9fa5fce1207b596d21884d859 (patch)
tree39f3e5f81fc818160e0bbed3b6d4fb84e6bf24b5
parent70a7dfff461cf78e283824ab4fc77bcc59547c59 (diff)
evas map: move to floating point coordinate system in high-quality drawing.
evas map has used integer coodinate system since it's born, since object's transition is jiggled, not perfectly smooth. It's obvious because Positioning must be stepping with integer units without any subpixel rendering. Currently, this patch is a sort of preparatory to improve this, only valid for high-quality evas map (smooth + anti-aliasing)
-rw-r--r--src/lib/evas/common/evas_map_image_internal_high.c4
-rw-r--r--src/modules/evas/engines/software_generic/evas_engine.c3
2 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/evas/common/evas_map_image_internal_high.c b/src/lib/evas/common/evas_map_image_internal_high.c
index b3945f94df..0fd3ce40a7 100644
--- a/src/lib/evas/common/evas_map_image_internal_high.c
+++ b/src/lib/evas/common/evas_map_image_internal_high.c
@@ -774,8 +774,8 @@ _evas_common_map_rgba_internal_high(RGBA_Image *src, RGBA_Image *dst,
774 Check alpha transparency. */ 774 Check alpha transparency. */
775 for (int i = 0; i < 4; i++) 775 for (int i = 0; i < 4; i++)
776 { 776 {
777 x[i] = ((float) (p[i].x >> FP)) + 0.5; 777 x[i] = p[i].fx + 0.5;
778 y[i] = ((float) (p[i].y >> FP)) + 0.5; 778 y[i] = p[i].fy + 0.5;
779 u[i] = (p[i].u >> FP); 779 u[i] = (p[i].u >> FP);
780 v[i] = (p[i].v >> FP); 780 v[i] = (p[i].v >> FP);
781 c[i] = p[i].col; 781 c[i] = p[i].col;
diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c
index 7007f3a2fd..1b9aeed1c3 100644
--- a/src/modules/evas/engines/software_generic/evas_engine.c
+++ b/src/modules/evas/engines/software_generic/evas_engine.c
@@ -2494,7 +2494,8 @@ _draw_thread_map_draw(void *data)
2494 continue; 2494 continue;
2495 } 2495 }
2496 2496
2497 if ((m->pts[0 + offset].x == m->pts[3 + offset].x) && 2497 if (!(map->anti_alias && map->smooth) && //For sub-pixel rendering
2498 (m->pts[0 + offset].x == m->pts[3 + offset].x) &&
2498 (m->pts[1 + offset].x == m->pts[2 + offset].x) && 2499 (m->pts[1 + offset].x == m->pts[2 + offset].x) &&
2499 (m->pts[0 + offset].y == m->pts[1 + offset].y) && 2500 (m->pts[0 + offset].y == m->pts[1 + offset].y) &&
2500 (m->pts[3 + offset].y == m->pts[2 + offset].y) && 2501 (m->pts[3 + offset].y == m->pts[2 + offset].y) &&