[pattern] Report the true error status from getters.

As the getters actually return an error status, use it to report any
pre-existing error status on the pattern.
This commit is contained in:
Chris Wilson 2009-03-17 14:56:42 +00:00
parent 496bbcf582
commit a4b44ca89e

View file

@ -2597,6 +2597,9 @@ cairo_pattern_get_rgba (cairo_pattern_t *pattern,
cairo_solid_pattern_t *solid = (cairo_solid_pattern_t*) pattern;
double r0, g0, b0, a0;
if (pattern->status)
return pattern->status;
if (pattern->type != CAIRO_PATTERN_TYPE_SOLID)
return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH);
@ -2635,6 +2638,9 @@ cairo_pattern_get_surface (cairo_pattern_t *pattern,
{
cairo_surface_pattern_t *spat = (cairo_surface_pattern_t*) pattern;
if (pattern->status)
return pattern->status;
if (pattern->type != CAIRO_PATTERN_TYPE_SURFACE)
return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH);
@ -2673,6 +2679,9 @@ cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern,
{
cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t*) pattern;
if (pattern->status)
return pattern->status;
if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR &&
pattern->type != CAIRO_PATTERN_TYPE_RADIAL)
return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH);
@ -2714,6 +2723,9 @@ cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern,
{
cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t*) pattern;
if (pattern->status)
return pattern->status;
if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR &&
pattern->type != CAIRO_PATTERN_TYPE_RADIAL)
return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH);
@ -2747,6 +2759,9 @@ cairo_pattern_get_linear_points (cairo_pattern_t *pattern,
{
cairo_linear_pattern_t *linear = (cairo_linear_pattern_t*) pattern;
if (pattern->status)
return pattern->status;
if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR)
return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH);
@ -2788,6 +2803,9 @@ cairo_pattern_get_radial_circles (cairo_pattern_t *pattern,
{
cairo_radial_pattern_t *radial = (cairo_radial_pattern_t*) pattern;
if (pattern->status)
return pattern->status;
if (pattern->type != CAIRO_PATTERN_TYPE_RADIAL)
return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH);