hermet pushed a commit to branch master.

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

commit baf1fcdb916d0142e1d0652549d658751486a534
Author: JunsuChoi <jsuya.c...@samsung.com>
Date:   Wed Jul 17 17:15:23 2019 +0900

    vg_common_svg: Gradient stop color use premultiplied color.
    
    Summary:
    The parsed color is straight color.
    evas use premultiplied color.
    
    Test Plan:
    Sample SVG
    <svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 100 100">
      <defs>
        <linearGradient id="linearGradient1" x1="0" y1="0" x2="0.2" y2="0.2" 
spreadMethod="reflect">
          <stop style="stop-color:#ff0000;stop-opacity:1;" offset="0"/>
          <stop style="stop-color:#0000ff;stop-opacity:1;" offset="1"/>
        </linearGradient>
        <radialGradient id="radialGradient222" r="0.2" cx="0.3" cy="0.3" 
spreadMethod="reflect">
          <stop style="stop-color:#ffFF00;stop-opacity:0.1;" offset="0"/>
          <stop style="stop-color:#00FFff;stop-opacity:1;"   offset="1"/>
        </radialGradient>
        <radialGradient id="radialGradient333" r="0.2" cx="0.3" cy="0.3" 
spreadMethod="reflect">
          <stop style="stop-color:#00FF00;stop-opacity:0.1;" offset="0"/>
          <stop style="stop-color:#FF00ff;stop-opacity:1;"   offset="1"/>
        </radialGradient>
       </defs>
      <rect x="0" y="0" width="100" height="100" fill="url(#linearGradient1)"/>
      <rect x="50" y="50" width="50" height="50" 
fill="url(#radialGradient222)"/>
      <rect x="0" y="0" width="50" height="50" fill="url(#radialGradient333)"/>
    </svg>
    
    Reviewers: Hermet, kimcinoo, smohanty
    
    Reviewed By: Hermet
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D9338
---
 src/static_libs/vg_common/vg_common_svg.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/static_libs/vg_common/vg_common_svg.c 
b/src/static_libs/vg_common/vg_common_svg.c
index 20a167c806..e3866e2018 100644
--- a/src/static_libs/vg_common/vg_common_svg.c
+++ b/src/static_libs/vg_common/vg_common_svg.c
@@ -683,13 +683,16 @@ _apply_gradient_property(Svg_Style_Gradient *g, Efl_VG 
*vg, Efl_VG *parent, Vg_F
    stop_count = eina_list_count(g->stops);
    if (stop_count)
      {
+        double opacity;
         stops = calloc(stop_count, sizeof(Efl_Gfx_Gradient_Stop));
         i = 0;
         EINA_LIST_FOREACH(g->stops, l, stop)
           {
-             stops[i].r = stop->r;
-             stops[i].g = stop->g;
-             stops[i].b = stop->b;
+             // Use premultiplied color
+             opacity = (double)stop->a / 255;
+             stops[i].r = stop->r * opacity;
+             stops[i].g = stop->g * opacity;
+             stops[i].b = stop->b * opacity;
              stops[i].a = stop->a;
              stops[i].offset = stop->offset;
              i++;

-- 


Reply via email to