hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=45b475d9d4ce00d7dd2c2334e2b29d674db2fdc0

commit 45b475d9d4ce00d7dd2c2334e2b29d674db2fdc0
Author: Youngbok Shin <[email protected]>
Date:   Mon Feb 25 15:26:25 2019 +0900

    elm textpath: reduces differences between actual pos and modified pos
    
    Summary:
    In a previous patch, textpath was modified to use differences between
    prev/next values to decide next position. Actually, it improved rendering
    quality. But, the modified position could have a big difference from actual 
position.
    It caused a distortion problem.
    So, this patch was made for reducing that differences.
    @fix
    
    Test Plan:
    I'll attach some screenshots of before/after.
    
    1. Modify text in text_ui_textpath.c to see distortion of text. ex) 
"―――――――――――――――――――..."
    2. Build and install.
    3. Run
       "ELM_SCALE=0.8 ELM_ACCEL=gl elementary_test -to efl.ui.textpath"
    
    Reviewers: Hermet, raster, cedric
    
    Reviewed By: Hermet
    
    Subscribers: #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D7418
---
 src/lib/elementary/efl_ui_textpath.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_textpath.c 
b/src/lib/elementary/efl_ui_textpath.c
index 8d4076ecdc..59b85480bf 100644
--- a/src/lib/elementary/efl_ui_textpath.c
+++ b/src/lib/elementary/efl_ui_textpath.c
@@ -178,7 +178,8 @@ _segment_draw(Efl_Ui_Textpath_Data *pd, int slice_no, 
double dt, double dist,
 
         /* Set mp1, mp2 position according to difference between
          * previous points and next points.
-         * It improves smoothness of curve's slope changing. */
+         * It improves smoothness of curve's slope changing.
+         * But, it can cause huge differeces from actual positions. */
         mp0_x = *last_x1;
         mp0_y = *last_y1;
         mp1_x = *last_x1 + (int) round(vec1.x - vec0.x);
@@ -188,6 +189,12 @@ _segment_draw(Efl_Ui_Textpath_Data *pd, int slice_no, 
double dt, double dist,
         mp3_x = *last_x2;
         mp3_y = *last_y2;
 
+        /* It reduces differences between actual position and modified 
position. */
+        mp1_x += (int)round(((double)vec1.x - mp1_x) / 2);
+        mp1_y += (int)round(((double)vec1.y - mp1_y) / 2);
+        mp2_x += (int)round(((double)vec2.x - mp2_x) / 2);
+        mp2_y += (int)round(((double)vec2.y - mp2_y) / 2);
+
         evas_map_point_coord_set(map, cmp + i * 4, mp0_x, mp0_y, 0);
         evas_map_point_coord_set(map, cmp + i * 4 + 1, mp1_x, mp1_y, 0);
         evas_map_point_coord_set(map, cmp + i * 4 + 2, mp2_x, mp2_y, 0);

-- 


Reply via email to