[cairo] On cairo_get_dash and cairo_get_dash_count
behdad at behdad.org
Wed Mar 21 12:11:37 PDT 2007
I was cleaning up cairo.c to not access gstate members directly, and
stumbled upon cairo_get_dash and cairo_get_dash_count. Those two access
gstate directly. So I thought Ok, I move the meat to gstate and make
cairo.c call it. But instead of adding two functions, I just added one.
So the cairo.c interface looks like:
cairo_set_dash (cairo_t *cr,
const double *dashes,
cairo_get_dash_count (cairo_t *cr);
cairo_get_dash (cairo_t *cr, double *dashes, double *offset);
While my gstate interface looks like:
_cairo_gstate_set_dash (cairo_gstate_t *gstate, const double *dash, int
num_dashes, double offset);
_cairo_gstate_get_dash (cairo_gstate_t *gstate, double *dash, int
*num_dashes, double *offset);
Immediate benefits in this interface:
- exactly same arguments and order in setter and getter
- One fewer call to remember
- It's a common idiom: call it first with NULL buffer to get the
length, call again to feel the buffers.
I cannot remember, why did we turn that down?
"Those who would give up Essential Liberty to purchase a little
Temporary Safety, deserve neither Liberty nor Safety."
-- Benjamin Franklin, 1759
More information about the cairo