[cairo] API Shakeup: cairo_begin_group, cairo_end_group, cairo_get_group

Bill Spitzak spitzak at d2.com
Thu Jun 23 10:19:38 PDT 2005

Carl Worth wrote:
> On Thu, 16 Jun 2005 14:35:09 -0700, Bill Spitzak wrote:
>>>	void
>>>	cairo_begin_pattern_with_format (cairo_t *cr, cairo_format_t format);
>>Is the purpose of the format so that you can choose whether alpha is 
>>stored or not? From a user's point of view it would help a lot if 
>>drawing an opaque rectangular image in the default format resulted in 
>>equal speed and efficiency as doing this.
> Here, the format is intended to specify one of three different modes
> for what the pattern will store:
> 	Color only
> 	Alpha only
> 	Color and alpha

That's what I thought. What I was asking is that the API figure this out 
automatically from what is drawn. If the resulting image is opaque 
everywhere, it should be equally efficient to use this result as to use 
one that is specified ahead of time (alpha-only is indicated by the 
resulting image being black everywhere). If this is not true it is a 
real pain for some cases where other code is drawing the pattern. In my 
example I want to draw images from files, and whether they have alpha is 
not determined until after the file is opened and drawn.

But furthermore, it may be that there is no need for the with-format 
call. I would expect that making the drawing check to see if the 
destination has less than 4 channels may be less efficient that using 
those 4 channels and throwing away the unnecessary ones later. So the 
implementation would probably not do anything with the format until the 
pattern is done. In this case it would be much more useful for that API 
if this decision was done after the drawing. But rather than add another 
call, using cairo_paint to clear the color to black or the alpha to 
white could be used to indicate this.

This would remove one API from Cairo, which you seem to be interested in 
doing, and would remove the need to add this new type to indicate the 
necessary channels. It would also mean that users would not worry about 
whether they have to use this call to get the most efficient result.

More information about the cairo mailing list