Fix cairo_get_dash and cairo_get_dash_count APIs

Make these functions consistent with other cairo_get functions
by making cairo_get_dash_count return the count directly, and
removing the cairo_status_t return value from cairo_get_dash.
This commit is contained in:
Carl Worth 2007-01-18 13:01:53 -08:00
parent bc7072064e
commit 28d6a228f0
3 changed files with 20 additions and 40 deletions

View file

@ -953,26 +953,18 @@ cairo_set_dash (cairo_t *cr,
/** /**
* cairo_get_dash_count: * cairo_get_dash_count:
* @cr: a #cairo_t * @cr: a #cairo_t
* @count: return value for the number of dash values, or %NULL
* *
* Gets the length of the dash array in @cr. * Returns the length of the dash array in @cr (0 if dashing is not
* currently in effect).
* *
* Return value: %CAIRO_STATUS_SUCCESS, or error status set on * See also cairo_set_dash() and cairo_get_dash().
* @cr.
* *
* Since: 1.4 * Since: 1.4
*/ */
cairo_status_t int
cairo_get_dash_count (cairo_t *cr, cairo_get_dash_count (cairo_t *cr)
int *count)
{ {
if (cr->status) return cr->gstate->stroke_style.num_dashes;
return cr->status;
if (count)
*count = cr->gstate->stroke_style.num_dashes;
return CAIRO_STATUS_SUCCESS;
} }
/** /**
@ -985,27 +977,20 @@ cairo_get_dash_count (cairo_t *cr,
* enough to hold at least the number of values returned by * enough to hold at least the number of values returned by
* cairo_get_dash_count(). * cairo_get_dash_count().
* *
* Return value: %CAIRO_STATUS_SUCCESS, or error status set on
* @cr.
*
* Since: 1.4 * Since: 1.4
**/ **/
cairo_status_t void
cairo_get_dash (cairo_t *cr, cairo_get_dash (cairo_t *cr,
double *dashes, double *dashes,
double *offset) double *offset)
{ {
if (cr->status) if (dashes)
return cr->status; memcpy (dashes,
cr->gstate->stroke_style.dash,
memcpy (dashes, sizeof (double) * cr->gstate->stroke_style.num_dashes);
cr->gstate->stroke_style.dash,
sizeof(double) * cr->gstate->stroke_style.num_dashes);
if (offset) if (offset)
*offset = cr->gstate->stroke_style.dash_offset; *offset = cr->gstate->stroke_style.dash_offset;
return CAIRO_STATUS_SUCCESS;
} }
void void

View file

@ -1113,10 +1113,10 @@ cairo_get_line_join (cairo_t *cr);
cairo_public double cairo_public double
cairo_get_miter_limit (cairo_t *cr); cairo_get_miter_limit (cairo_t *cr);
cairo_public cairo_status_t cairo_public int
cairo_get_dash_count (cairo_t *cr, int *count); cairo_get_dash_count (cairo_t *cr);
cairo_public cairo_status_t cairo_public void
cairo_get_dash (cairo_t *cr, double *dashes, double *offset); cairo_get_dash (cairo_t *cr, double *dashes, double *offset);
cairo_public void cairo_public void

View file

@ -93,6 +93,8 @@ settings_set (cairo_t *cr, settings_t *settings)
static int static int
settings_get (cairo_t *cr, settings_t *settings) settings_get (cairo_t *cr, settings_t *settings)
{ {
int count;
settings->op = cairo_get_operator (cr); settings->op = cairo_get_operator (cr);
settings->tolerance = cairo_get_tolerance (cr); settings->tolerance = cairo_get_tolerance (cr);
settings->fill_rule = cairo_get_fill_rule (cr); settings->fill_rule = cairo_get_fill_rule (cr);
@ -102,18 +104,11 @@ settings_get (cairo_t *cr, settings_t *settings)
settings->miter_limit = cairo_get_miter_limit (cr); settings->miter_limit = cairo_get_miter_limit (cr);
cairo_get_matrix (cr, &settings->matrix); cairo_get_matrix (cr, &settings->matrix);
{ count = cairo_get_dash_count (cr);
cairo_status_t status; if (count != 5)
int count; return -1;
status = cairo_get_dash_count (cr, &count); cairo_get_dash (cr, settings->dash, &settings->dash_offset);
if (status || count != 5)
return -1;
status = cairo_get_dash (cr, settings->dash, &settings->dash_offset);
if (status)
return -1;
}
return 0; return 0;
} }