[cairo] Cairo and OpenVG Radial Gradient

Emmanuel Pacaud emmanuel.pacaud at lapp.in2p3.fr
Sat Sep 29 01:05:11 PDT 2007


Le samedi 29 septembre 2007 à 06:57 +0000, KULBHUSHAN PACHAURI a écrit :
>  As per your reply for my query cairo to openvg radial gradient
> conversion i looked at the how cairo radial gradient is mapped to svg.
>  But i have some doubt about that mapping..
>  for the case if two circle radius are equal  and extend is not equal
> to cairo_extend_none and no of stops is greater than 2.  in that case
> that mapping works or ot. 
>  (line no: 1466 & file name cairo-svg-surface.c)

It looks like there's a bug here. stops[1] should probably be
stops[pattern->base.n_stops - 1] lines 1498 - 1500. Apart from that,
it's supposed to work.

> Also the offset for both the stops are 0. (??) (lineno: 1494 & file
> name cairo-svg_surface.c)

That's fine. SVG says:

"If two gradient stops have the same offset value, then the latter
gradient stop controls the color value at the overlap point. In
<stop offset="0" stop-color="white"/>
<stop offset=".2" stop-color="red"/>
<stop offset=".2" stop-color="blue"/>
<stop offset="1" stop-color="black"/>
will have approximately the same effect as: 
<stop offset="0" stop-color="white"/>
<stop offset=".1999999999" stop-color="red"/>
<stop offset=".2" stop-color="blue"/>
<stop offset="1" stop-color="black"/>
which is a gradient that goes smoothly from white to red, then abruptly
shifts from red to blue, and then goes smoothly from blue to black."


More information about the cairo mailing list