hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9c66a4751ce350d9fa5fce1207b596d21884d859

commit 9c66a4751ce350d9fa5fce1207b596d21884d859
Author: Hermet Park <[email protected]>
Date:   Thu Apr 18 19:30:33 2019 +0900

    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)
---
 src/lib/evas/common/evas_map_image_internal_high.c      | 4 ++--
 src/modules/evas/engines/software_generic/evas_engine.c | 3 ++-
 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,
       Check alpha transparency. */
    for (int i = 0; i < 4; i++)
      {
-        x[i] = ((float) (p[i].x >> FP)) + 0.5;
-        y[i] = ((float) (p[i].y >> FP)) + 0.5;
+        x[i] = p[i].fx + 0.5;
+        y[i] = p[i].fy + 0.5;
         u[i] = (p[i].u >> FP);
         v[i] = (p[i].v >> FP);
         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)
              continue;
           }
 
-        if ((m->pts[0 + offset].x == m->pts[3 + offset].x) &&
+        if (!(map->anti_alias && map->smooth) &&    //For sub-pixel rendering
+            (m->pts[0 + offset].x == m->pts[3 + offset].x) &&
             (m->pts[1 + offset].x == m->pts[2 + offset].x) &&
             (m->pts[0 + offset].y == m->pts[1 + offset].y) &&
             (m->pts[3 + offset].y == m->pts[2 + offset].y) &&

-- 


Reply via email to