diff options
author | JunsuChoi <jsuya.choi@samsung.com> | 2019-07-17 17:15:23 +0900 |
---|---|---|
committer | Hermet Park <hermetpark@gmail.com> | 2019-07-17 17:15:23 +0900 |
commit | baf1fcdb916d0142e1d0652549d658751486a534 (patch) | |
tree | f6ce85da81fb0eb793e7fd981cbad4521ad4b996 | |
parent | b25c9f613728c478590f6d7e97e5bcdc5f6e5472 (diff) | |
download | efl-baf1fcdb916d0142e1d0652549d658751486a534.tar.gz |
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
-rw-r--r-- | src/static_libs/vg_common/vg_common_svg.c | 9 |
1 files 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++; |