[cairo] add solid/gradient pattern info getters
Carl Worth
cworth at cworth.org
Wed Sep 13 16:52:47 PDT 2006
On Wed, 13 Sep 2006 19:37:28 -0400, Behdad Esfahbod wrote:
>
> I prefer "rgba" instead of color here.
Agreed.
> > cairo_status_t
> > cairo_gradient_pattern_get_color_stop (cairo_pattern_t *pattern,
> > int index, double *offset,
> > double *r, double *g, double *b, double *a);
> > cairo_status_t
> > cairo_linear_gradient_pattern_get_endpoints (cairo_pattern_t *pattern,
> > double *x0, double *y0,
> > double *x1, double *y1);
> >
> > cairo_status_t
> > cairo_linear_gradient_pattern_get_endpoints (cairo_pattern_t *pattern,
> > double *x0, double *y0, double *r0,
> > double *x1, double *y1, double *r1);
>
> These all should be renamed to cairo_pattern_get_... We have
> cairo_pattern_create_linear(), not cairo_linear_pattern_create().
Yes, it should certainly be:
cairo_pattern_get_color_stop
to parallel cairo_pattern_add_color_stop. But we do need to
distinguish the linear and radial function names. But I wouldn't put
the name gradient in there. I would propose:
cairo_linear_pattern_get_endpoints
cairo_radial_pattern_get_endpoints
I'm not sure I love "endpoints". It lays a one-word-or-two trap for
the user. What instead though? ... get_geometry maybe?
> > They all return CAIRO_STATUS_PATTERN_TYPE_MISMATCH on error. The only
> > oddball here is get_color_stop, where the expected usage is to start
> > index at 0 and keep incrementing it until the function returns
> > CAIRO_STATUS_INVALID_INDEX (a new error code). This seemed simpler
> > than having an explicit getter for the number of color stops,
You could add cairo_pattern_get_num_color_stops and still provide the
above approach. I can imagine cases where not being able to ask for
the number in advance of iterating over them would be quite painful.
But, this is a tricky things to do. I've basically never added
cairo_get_dash only because it was too annoying to try to think of a
good way to expose a variable-sized getter function.
> We already have cairo_svg_get_versions() that uses the other convention.
> For svg that may make sense since the return value is constant and
> should not be freed.
Yeah, that's a pretty big difference I think. Enough to not justify
following it for consistency's sake along.
-Carl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20060913/2d11f412/attachment.pgp
More information about the cairo
mailing list