[cairo] Path Gradients

Bill Spitzak spitzak at thefoundry.co.uk
Fri Jan 4 11:12:11 PST 2008


Behdad Esfahbod wrote:

>> It was unclear what happens with multiple-step gradients, which some
>> of 
>> the examples show. Does it only change the last step, or is there an
>> api 
>> to change all the steps?
> 
> The actual radial stops where done in the code using a Blend object,
> that's like just having stops for alpha value.  That is, instead of the
> linear interpolation between the two ends, user can provide a detailed
> blend function.  No separate color stops.

I'm sorry, I thought you were talking about the example where the color 
along the edge changes, as shown by the top-left triangle in this picture:

http://www.java2s.com/Code/VBImages/PathGradientBrushesDiamondRectangleCirlceandquad.PNG

It is apparent from the examples that they support multi-stop gradients, 
but there is no example of what happens if you specify *both* this and 
if you change the colors along the path. Does it only change the last 
stop? Or is there an api to change all the stops? Or does it just not work?

>> I am still very interested in any explanation why the path needs to
>> be 
>> specified twice and what happens if the two paths are different.
> 
> What do you mean by twice?  Where?
> 

All the examples in this paper send the path twice, once to construct 
the "path gradient brush" and again to fill the shape:

http://www.bobpowell.net/pgb.htm

My best guess is that this really is similar to how Cairo does the 
radial brush. The "path gradient" specifies a pattern that can then be 
masked by a different path. Unfortunately it appears that they define 
the pattern as transparent outside the path, which makes it pretty 
useless for any path that is outside the source path. I think defining 
the outside as being equal to the last stop would be much more useful.


More information about the cairo mailing list