mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-09 04:58:04 +02:00
Add an extents argument to the high level surface backend functions
Add a "cairo_rectangle_int_t *extents" argument to to the following backend functions: paint mask, stroke fill show_glyphs show_text_glyphs This will be used to pass the extents of each operation computed by the analysis surface to the backend. This is required for implementing EXTEND_PAD.
This commit is contained in:
parent
ed2081d974
commit
d682d275b9
17 changed files with 223 additions and 138 deletions
|
|
@ -322,7 +322,8 @@ _cairo_analysis_surface_get_extents (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_analysis_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *paint_extents)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status, backend_status;
|
||||
|
|
@ -333,7 +334,7 @@ _cairo_analysis_surface_paint (void *abstract_surface,
|
|||
backend_status = CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
else
|
||||
backend_status = (*surface->target->backend->paint) (surface->target, op,
|
||||
source);
|
||||
source, NULL);
|
||||
|
||||
if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN)
|
||||
backend_status = _analyze_meta_surface_pattern (surface, source);
|
||||
|
|
@ -363,7 +364,8 @@ static cairo_int_status_t
|
|||
_cairo_analysis_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *mask_extents)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status, backend_status;
|
||||
|
|
@ -374,7 +376,7 @@ _cairo_analysis_surface_mask (void *abstract_surface,
|
|||
backend_status = CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
else
|
||||
backend_status = (*surface->target->backend->mask) (surface->target, op,
|
||||
source, mask);
|
||||
source, mask, NULL);
|
||||
|
||||
if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN) {
|
||||
cairo_int_status_t backend_source_status = CAIRO_STATUS_SUCCESS;
|
||||
|
|
@ -445,7 +447,8 @@ _cairo_analysis_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *stroke_extents)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status, backend_status;
|
||||
|
|
@ -459,7 +462,7 @@ _cairo_analysis_surface_stroke (void *abstract_surface,
|
|||
backend_status = (*surface->target->backend->stroke) (surface->target, op,
|
||||
source, path, style,
|
||||
ctm, ctm_inverse,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, NULL);
|
||||
|
||||
if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN)
|
||||
backend_status = _analyze_meta_surface_pattern (surface, source);
|
||||
|
|
@ -515,7 +518,8 @@ _cairo_analysis_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *fill_extents)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status, backend_status;
|
||||
|
|
@ -528,7 +532,7 @@ _cairo_analysis_surface_fill (void *abstract_surface,
|
|||
else
|
||||
backend_status = (*surface->target->backend->fill) (surface->target, op,
|
||||
source, path, fill_rule,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, NULL);
|
||||
|
||||
if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN)
|
||||
backend_status = _analyze_meta_surface_pattern (surface, source);
|
||||
|
|
@ -583,7 +587,8 @@ _cairo_analysis_surface_show_glyphs (void *abstract_surface,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *show_glyphs_extents)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status, backend_status;
|
||||
|
|
@ -596,7 +601,7 @@ _cairo_analysis_surface_show_glyphs (void *abstract_surface,
|
|||
source,
|
||||
glyphs, num_glyphs,
|
||||
scaled_font,
|
||||
remaining_glyphs);
|
||||
remaining_glyphs, NULL);
|
||||
else if (surface->target->backend->show_text_glyphs)
|
||||
backend_status = surface->target->backend->show_text_glyphs (surface->target, op,
|
||||
source,
|
||||
|
|
@ -604,7 +609,7 @@ _cairo_analysis_surface_show_glyphs (void *abstract_surface,
|
|||
glyphs, num_glyphs,
|
||||
NULL, 0,
|
||||
FALSE,
|
||||
scaled_font);
|
||||
scaled_font, NULL);
|
||||
else
|
||||
backend_status = CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
|
||||
|
|
@ -662,7 +667,8 @@ _cairo_analysis_surface_show_text_glyphs (void *abstract_surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *show_text_glyphs_extents)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status, backend_status;
|
||||
|
|
@ -677,14 +683,14 @@ _cairo_analysis_surface_show_text_glyphs (void *abstract_surface,
|
|||
utf8, utf8_len,
|
||||
glyphs, num_glyphs,
|
||||
clusters, num_clusters, cluster_flags,
|
||||
scaled_font);
|
||||
scaled_font, NULL);
|
||||
if (backend_status == CAIRO_INT_STATUS_UNSUPPORTED && surface->target->backend->show_glyphs) {
|
||||
int remaining_glyphs = num_glyphs;
|
||||
backend_status = surface->target->backend->show_glyphs (surface->target, op,
|
||||
source,
|
||||
glyphs, num_glyphs,
|
||||
scaled_font,
|
||||
&remaining_glyphs);
|
||||
&remaining_glyphs, NULL);
|
||||
glyphs += num_glyphs - remaining_glyphs;
|
||||
num_glyphs = remaining_glyphs;
|
||||
if (remaining_glyphs == 0)
|
||||
|
|
@ -898,13 +904,15 @@ typedef cairo_int_status_t
|
|||
typedef cairo_int_status_t
|
||||
(*_paint_func) (void *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source);
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
typedef cairo_int_status_t
|
||||
(*_mask_func) (void *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask);
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
typedef cairo_int_status_t
|
||||
(*_stroke_func) (void *surface,
|
||||
|
|
@ -915,7 +923,8 @@ typedef cairo_int_status_t
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias);
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
typedef cairo_int_status_t
|
||||
(*_fill_func) (void *surface,
|
||||
|
|
@ -924,7 +933,8 @@ typedef cairo_int_status_t
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias);
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
typedef cairo_int_status_t
|
||||
(*_show_glyphs_func) (void *surface,
|
||||
|
|
@ -933,7 +943,8 @@ typedef cairo_int_status_t
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs);
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
static const cairo_surface_backend_t cairo_null_surface_backend = {
|
||||
CAIRO_INTERNAL_SURFACE_TYPE_NULL,
|
||||
|
|
|
|||
|
|
@ -1687,7 +1687,8 @@ _cairo_directfb_surface_show_glyphs (void *abstract_dst,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_directfb_surface_t *dst = abstract_dst;
|
||||
cairo_directfb_font_cache_t *cache;
|
||||
|
|
|
|||
|
|
@ -899,7 +899,7 @@ _cairo_gstate_paint (cairo_gstate_t *gstate)
|
|||
|
||||
status = _cairo_surface_paint (gstate->target,
|
||||
gstate->op,
|
||||
pattern);
|
||||
pattern, NULL);
|
||||
|
||||
if (pattern == &pattern_stack.base)
|
||||
_cairo_pattern_fini (pattern);
|
||||
|
|
@ -938,7 +938,7 @@ _cairo_gstate_mask (cairo_gstate_t *gstate,
|
|||
status = _cairo_surface_mask (gstate->target,
|
||||
gstate->op,
|
||||
source_pattern,
|
||||
mask_pattern);
|
||||
mask_pattern, NULL);
|
||||
|
||||
if (mask_pattern == &mask_pattern_stack.base)
|
||||
_cairo_pattern_fini (&mask_pattern_stack.base);
|
||||
|
|
@ -980,7 +980,7 @@ _cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path)
|
|||
&gstate->ctm,
|
||||
&gstate->ctm_inverse,
|
||||
gstate->tolerance,
|
||||
gstate->antialias);
|
||||
gstate->antialias, NULL);
|
||||
|
||||
if (source_pattern == &source_pattern_stack.base)
|
||||
_cairo_pattern_fini (&source_pattern_stack.base);
|
||||
|
|
@ -1056,7 +1056,7 @@ _cairo_gstate_fill (cairo_gstate_t *gstate, cairo_path_fixed_t *path)
|
|||
path,
|
||||
gstate->fill_rule,
|
||||
gstate->tolerance,
|
||||
gstate->antialias);
|
||||
gstate->antialias, NULL);
|
||||
|
||||
if (pattern == &pattern_stack.base)
|
||||
_cairo_pattern_fini (&pattern_stack.base);
|
||||
|
|
@ -1679,7 +1679,7 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
|
|||
transformed_glyphs, num_glyphs,
|
||||
clusters, num_clusters,
|
||||
cluster_flags,
|
||||
gstate->scaled_font);
|
||||
gstate->scaled_font, NULL);
|
||||
} else {
|
||||
cairo_path_fixed_t path;
|
||||
|
||||
|
|
@ -1696,7 +1696,7 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
|
|||
&path,
|
||||
CAIRO_FILL_RULE_WINDING,
|
||||
gstate->tolerance,
|
||||
gstate->scaled_font->options.antialias);
|
||||
gstate->scaled_font->options.antialias, NULL);
|
||||
|
||||
_cairo_path_fixed_fini (&path);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,7 +219,8 @@ _cairo_meta_surface_release_source_image (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_meta_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_meta_surface_t *meta = abstract_surface;
|
||||
|
|
@ -260,7 +261,8 @@ static cairo_int_status_t
|
|||
_cairo_meta_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_meta_surface_t *meta = abstract_surface;
|
||||
|
|
@ -306,7 +308,8 @@ _cairo_meta_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_meta_surface_t *meta = abstract_surface;
|
||||
|
|
@ -361,7 +364,8 @@ _cairo_meta_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_meta_surface_t *meta = abstract_surface;
|
||||
|
|
@ -419,7 +423,8 @@ _cairo_meta_surface_show_text_glyphs (void *abstract_surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_meta_surface_t *meta = abstract_surface;
|
||||
|
|
@ -806,13 +811,13 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface,
|
|||
case CAIRO_COMMAND_PAINT:
|
||||
status = _cairo_surface_paint (target,
|
||||
command->paint.op,
|
||||
&command->paint.source.base);
|
||||
&command->paint.source.base, NULL);
|
||||
break;
|
||||
case CAIRO_COMMAND_MASK:
|
||||
status = _cairo_surface_mask (target,
|
||||
command->mask.op,
|
||||
&command->mask.source.base,
|
||||
&command->mask.mask.base);
|
||||
&command->mask.mask.base, NULL);
|
||||
break;
|
||||
case CAIRO_COMMAND_STROKE:
|
||||
{
|
||||
|
|
@ -834,7 +839,7 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface,
|
|||
&dev_ctm,
|
||||
&dev_ctm_inverse,
|
||||
command->stroke.tolerance,
|
||||
command->stroke.antialias);
|
||||
command->stroke.antialias, NULL);
|
||||
break;
|
||||
}
|
||||
case CAIRO_COMMAND_FILL:
|
||||
|
|
@ -881,7 +886,7 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface,
|
|||
&dev_ctm,
|
||||
&dev_ctm_inverse,
|
||||
stroke_command->stroke.tolerance,
|
||||
stroke_command->stroke.antialias);
|
||||
stroke_command->stroke.antialias, NULL);
|
||||
i++;
|
||||
} else
|
||||
status = _cairo_surface_fill (target,
|
||||
|
|
@ -890,7 +895,7 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface,
|
|||
dev_path,
|
||||
command->fill.fill_rule,
|
||||
command->fill.tolerance,
|
||||
command->fill.antialias);
|
||||
command->fill.antialias, NULL);
|
||||
break;
|
||||
}
|
||||
case CAIRO_COMMAND_SHOW_TEXT_GLYPHS:
|
||||
|
|
@ -927,7 +932,7 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface,
|
|||
dev_glyphs, num_glyphs,
|
||||
command->show_text_glyphs.clusters, command->show_text_glyphs.num_clusters,
|
||||
command->show_text_glyphs.cluster_flags,
|
||||
command->show_text_glyphs.scaled_font);
|
||||
command->show_text_glyphs.scaled_font, NULL);
|
||||
|
||||
free (dev_glyphs);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ _paint_fallback_image (cairo_paginated_surface_t *surface,
|
|||
|
||||
status = _cairo_surface_paint (surface->target,
|
||||
CAIRO_OPERATOR_SOURCE,
|
||||
&pattern.base);
|
||||
&pattern.base, NULL);
|
||||
|
||||
_cairo_pattern_fini (&pattern.base);
|
||||
CLEANUP_IMAGE:
|
||||
|
|
@ -529,7 +529,8 @@ _cairo_paginated_surface_get_font_options (void *abstract_surfa
|
|||
static cairo_int_status_t
|
||||
_cairo_paginated_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -539,18 +540,19 @@ _cairo_paginated_surface_paint (void *abstract_surface,
|
|||
|
||||
surface->page_is_blank = FALSE;
|
||||
|
||||
return _cairo_surface_paint (surface->meta, op, source);
|
||||
return _cairo_surface_paint (surface->meta, op, source, NULL);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_paginated_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
return _cairo_surface_mask (surface->meta, op, source, mask);
|
||||
return _cairo_surface_mask (surface->meta, op, source, mask, NULL);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
|
|
@ -562,7 +564,8 @@ _cairo_paginated_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -575,7 +578,7 @@ _cairo_paginated_surface_stroke (void *abstract_surface,
|
|||
return _cairo_surface_stroke (surface->meta, op, source,
|
||||
path, style,
|
||||
ctm, ctm_inverse,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, NULL);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
|
|
@ -585,7 +588,8 @@ _cairo_paginated_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -597,7 +601,7 @@ _cairo_paginated_surface_fill (void *abstract_surface,
|
|||
|
||||
return _cairo_surface_fill (surface->meta, op, source,
|
||||
path, fill_rule,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, NULL);
|
||||
}
|
||||
|
||||
static cairo_bool_t
|
||||
|
|
@ -619,7 +623,8 @@ _cairo_paginated_surface_show_text_glyphs (void *abstract_surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_paginated_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -645,7 +650,7 @@ _cairo_paginated_surface_show_text_glyphs (void *abstract_surface,
|
|||
glyphs, num_glyphs,
|
||||
clusters, num_clusters,
|
||||
cluster_flags,
|
||||
scaled_font);
|
||||
scaled_font, NULL);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4420,7 +4420,8 @@ _cairo_pdf_surface_start_fallback (cairo_pdf_surface_t *surface)
|
|||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
@ -4500,7 +4501,8 @@ static cairo_int_status_t
|
|||
_cairo_pdf_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_pdf_smask_group_t *group;
|
||||
|
|
@ -4584,7 +4586,8 @@ _cairo_pdf_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
@ -4675,7 +4678,8 @@ _cairo_pdf_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
@ -4774,7 +4778,8 @@ _cairo_pdf_surface_fill_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double stroke_tolerance,
|
||||
cairo_antialias_t stroke_antialias)
|
||||
cairo_antialias_t stroke_antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
@ -4865,7 +4870,8 @@ _cairo_pdf_surface_show_text_glyphs (void *abstract_surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
|
|||
|
|
@ -3043,7 +3043,8 @@ _cairo_ps_surface_get_font_options (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_ps_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *paint_extents)
|
||||
{
|
||||
cairo_ps_surface_t *surface = abstract_surface;
|
||||
cairo_output_stream_t *stream = surface->stream;
|
||||
|
|
@ -3108,7 +3109,8 @@ _cairo_ps_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_ps_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -3141,7 +3143,8 @@ _cairo_ps_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_ps_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -3203,7 +3206,8 @@ _cairo_ps_surface_show_glyphs (void *abstract_surface,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_ps_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
|
|||
|
|
@ -1667,7 +1667,8 @@ _cairo_quartz_surface_get_extents (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_quartz_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface;
|
||||
cairo_int_status_t rv = CAIRO_STATUS_SUCCESS;
|
||||
|
|
@ -1722,7 +1723,8 @@ _cairo_quartz_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface;
|
||||
cairo_int_status_t rv = CAIRO_STATUS_SUCCESS;
|
||||
|
|
@ -1829,7 +1831,8 @@ _cairo_quartz_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface;
|
||||
cairo_int_status_t rv = CAIRO_STATUS_SUCCESS;
|
||||
|
|
@ -1973,7 +1976,8 @@ _cairo_quartz_surface_show_glyphs (void *abstract_surface,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
CGAffineTransform textTransform, ctm;
|
||||
#define STATIC_BUF_SIZE 64
|
||||
|
|
@ -2286,7 +2290,8 @@ static cairo_int_status_t
|
|||
_cairo_quartz_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface;
|
||||
cairo_int_status_t rv = CAIRO_STATUS_SUCCESS;
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ _cairo_surface_create_similar_solid (cairo_surface_t *other,
|
|||
status = _cairo_surface_paint (surface,
|
||||
color == CAIRO_COLOR_TRANSPARENT ?
|
||||
CAIRO_OPERATOR_CLEAR : CAIRO_OPERATOR_SOURCE,
|
||||
&solid_pattern.base);
|
||||
&solid_pattern.base, NULL);
|
||||
|
||||
_cairo_pattern_fini (&solid_pattern.base);
|
||||
|
||||
|
|
@ -373,7 +373,7 @@ _cairo_surface_repaint_solid_pattern_surface (cairo_surface_t *other,
|
|||
*/
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
|
||||
return _cairo_surface_paint (solid_surface, CAIRO_OPERATOR_SOURCE, &solid_pattern->base);
|
||||
return _cairo_surface_paint (solid_surface, CAIRO_OPERATOR_SOURCE, &solid_pattern->base, NULL);
|
||||
}
|
||||
|
||||
cairo_clip_mode_t
|
||||
|
|
@ -1473,7 +1473,8 @@ _cairo_surface_fill_rectangles (cairo_surface_t *surface,
|
|||
cairo_status_t
|
||||
_cairo_surface_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t dev_source;
|
||||
|
|
@ -1490,7 +1491,7 @@ _cairo_surface_paint (cairo_surface_t *surface,
|
|||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
if (surface->backend->paint) {
|
||||
status = surface->backend->paint (surface, op, source);
|
||||
status = surface->backend->paint (surface, op, source, extents);
|
||||
if (status != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
goto FINISH;
|
||||
}
|
||||
|
|
@ -1508,7 +1509,8 @@ cairo_status_t
|
|||
_cairo_surface_mask (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t dev_source;
|
||||
|
|
@ -1532,7 +1534,7 @@ _cairo_surface_mask (cairo_surface_t *surface,
|
|||
goto CLEANUP_SOURCE;
|
||||
|
||||
if (surface->backend->mask) {
|
||||
status = surface->backend->mask (surface, op, source, mask);
|
||||
status = surface->backend->mask (surface, op, source, mask, extents);
|
||||
if (status != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
goto CLEANUP_MASK;
|
||||
}
|
||||
|
|
@ -1564,7 +1566,8 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
|
|||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double stroke_tolerance,
|
||||
cairo_antialias_t stroke_antialias)
|
||||
cairo_antialias_t stroke_antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
|
||||
|
|
@ -1600,7 +1603,8 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
|
|||
stroke_op, stroke_source,
|
||||
stroke_style,
|
||||
&dev_ctm, &dev_ctm_inverse,
|
||||
stroke_tolerance, stroke_antialias);
|
||||
stroke_tolerance, stroke_antialias,
|
||||
extents);
|
||||
|
||||
if (stroke_source == &dev_stroke_source.base)
|
||||
_cairo_pattern_fini (&dev_stroke_source.base);
|
||||
|
|
@ -1613,13 +1617,13 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
|
|||
}
|
||||
|
||||
status = _cairo_surface_fill (surface, fill_op, fill_source, path,
|
||||
fill_rule, fill_tolerance, fill_antialias);
|
||||
fill_rule, fill_tolerance, fill_antialias, NULL);
|
||||
if (status)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
status = _cairo_surface_stroke (surface, stroke_op, stroke_source, path,
|
||||
stroke_style, stroke_ctm, stroke_ctm_inverse,
|
||||
stroke_tolerance, stroke_antialias);
|
||||
stroke_tolerance, stroke_antialias, NULL);
|
||||
if (status)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
|
|
@ -1635,7 +1639,8 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t dev_source;
|
||||
|
|
@ -1659,7 +1664,7 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
status = surface->backend->stroke (surface, op, source,
|
||||
path, stroke_style,
|
||||
&dev_ctm, &dev_ctm_inverse,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, extents);
|
||||
|
||||
if (status != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
goto FINISH;
|
||||
|
|
@ -1687,7 +1692,8 @@ _cairo_surface_fill (cairo_surface_t *surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t dev_source;
|
||||
|
|
@ -1706,7 +1712,7 @@ _cairo_surface_fill (cairo_surface_t *surface,
|
|||
if (surface->backend->fill) {
|
||||
status = surface->backend->fill (surface, op, source,
|
||||
path, fill_rule,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, extents);
|
||||
|
||||
if (status != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
goto FINISH;
|
||||
|
|
@ -2258,7 +2264,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_scaled_font_t *dev_scaled_font = scaled_font;
|
||||
|
|
@ -2314,7 +2321,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
utf8, utf8_len,
|
||||
glyphs, num_glyphs,
|
||||
clusters, num_clusters, cluster_flags,
|
||||
dev_scaled_font);
|
||||
dev_scaled_font, extents);
|
||||
}
|
||||
if (status == CAIRO_INT_STATUS_UNSUPPORTED && surface->backend->show_glyphs) {
|
||||
int remaining_glyphs = num_glyphs;
|
||||
|
|
@ -2322,7 +2329,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
source,
|
||||
glyphs, num_glyphs,
|
||||
dev_scaled_font,
|
||||
&remaining_glyphs);
|
||||
&remaining_glyphs, extents);
|
||||
glyphs += num_glyphs - remaining_glyphs;
|
||||
num_glyphs = remaining_glyphs;
|
||||
if (status == CAIRO_INT_STATUS_UNSUPPORTED && remaining_glyphs == 0)
|
||||
|
|
@ -2336,7 +2343,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
source,
|
||||
glyphs, num_glyphs,
|
||||
dev_scaled_font,
|
||||
&remaining_glyphs);
|
||||
&remaining_glyphs, extents);
|
||||
glyphs += num_glyphs - remaining_glyphs;
|
||||
num_glyphs = remaining_glyphs;
|
||||
if (status == CAIRO_INT_STATUS_UNSUPPORTED && remaining_glyphs == 0)
|
||||
|
|
@ -2355,7 +2362,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
utf8, utf8_len,
|
||||
glyphs, num_glyphs,
|
||||
clusters, num_clusters, cluster_flags,
|
||||
dev_scaled_font);
|
||||
dev_scaled_font, extents);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1890,7 +1890,8 @@ _cairo_svg_surface_fill_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double stroke_tolerance,
|
||||
cairo_antialias_t stroke_antialias)
|
||||
cairo_antialias_t stroke_antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_svg_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
@ -1925,7 +1926,8 @@ _cairo_svg_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_svg_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
@ -2013,7 +2015,8 @@ _cairo_svg_surface_emit_paint (cairo_output_stream_t *output,
|
|||
static cairo_int_status_t
|
||||
_cairo_svg_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_svg_surface_t *surface = abstract_surface;
|
||||
|
|
@ -2065,9 +2068,10 @@ _cairo_svg_surface_paint (void *abstract_surface,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_svg_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_svg_surface_t *surface = abstract_surface;
|
||||
|
|
@ -2154,7 +2158,8 @@ _cairo_svg_surface_stroke (void *abstract_dst,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_svg_surface_t *surface = abstract_dst;
|
||||
cairo_status_t status;
|
||||
|
|
@ -2189,7 +2194,8 @@ _cairo_svg_surface_show_glyphs (void *abstract_surface,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_svg_surface_t *surface = abstract_surface;
|
||||
cairo_svg_document_t *document = surface->document;
|
||||
|
|
@ -2261,7 +2267,7 @@ FALLBACK:
|
|||
}
|
||||
|
||||
status = _cairo_svg_surface_fill (abstract_surface, op, pattern,
|
||||
&path, CAIRO_FILL_RULE_WINDING, 0.0, CAIRO_ANTIALIAS_SUBPIXEL);
|
||||
&path, CAIRO_FILL_RULE_WINDING, 0.0, CAIRO_ANTIALIAS_SUBPIXEL, NULL);
|
||||
|
||||
_cairo_path_fixed_fini (&path);
|
||||
|
||||
|
|
|
|||
|
|
@ -182,7 +182,8 @@ _cairo_type3_glyph_surface_intersect_clip_path (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_type3_glyph_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_type3_glyph_surface_t *surface = abstract_surface;
|
||||
const cairo_surface_pattern_t *pattern;
|
||||
|
|
@ -212,9 +213,10 @@ static cairo_int_status_t
|
|||
_cairo_type3_glyph_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
return _cairo_type3_glyph_surface_paint (abstract_surface, op, mask);
|
||||
return _cairo_type3_glyph_surface_paint (abstract_surface, op, mask, extents);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
|
|
@ -226,7 +228,8 @@ _cairo_type3_glyph_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_type3_glyph_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -244,7 +247,8 @@ _cairo_type3_glyph_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_type3_glyph_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -263,7 +267,8 @@ _cairo_type3_glyph_surface_show_glyphs (void *abstract_surface,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_type3_glyph_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
|
|||
|
|
@ -1037,7 +1037,8 @@ _cairo_win32_printing_surface_get_font_options (void *abstract_
|
|||
static cairo_int_status_t
|
||||
_cairo_win32_printing_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_win32_surface_t *surface = abstract_surface;
|
||||
cairo_solid_pattern_t clear;
|
||||
|
|
@ -1114,7 +1115,8 @@ _cairo_win32_printing_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_win32_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -1235,7 +1237,8 @@ _cairo_win32_printing_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_win32_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -1294,7 +1297,8 @@ _cairo_win32_printing_surface_show_glyphs (void *abstract_surfac
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_win32_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status = CAIRO_STATUS_SUCCESS;
|
||||
|
|
|
|||
|
|
@ -1566,7 +1566,8 @@ _cairo_win32_surface_show_glyphs (void *surface,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
#if CAIRO_HAS_WIN32_FONT
|
||||
cairo_win32_surface_t *dst = surface;
|
||||
|
|
|
|||
|
|
@ -86,7 +86,8 @@ _cairo_xlib_surface_show_glyphs (void *abstract_dst,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs);
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
/*
|
||||
* Instead of taking two round trips for each blending request,
|
||||
|
|
@ -1283,7 +1284,7 @@ _cairo_xlib_surface_create_solid_pattern_surface (void *abstrac
|
|||
|
||||
status = _cairo_surface_paint (&image->base,
|
||||
CAIRO_OPERATOR_SOURCE,
|
||||
&solid_pattern->base);
|
||||
&solid_pattern->base, NULL);
|
||||
if (status)
|
||||
goto BAIL;
|
||||
|
||||
|
|
@ -3966,7 +3967,8 @@ _cairo_xlib_surface_show_glyphs (void *abstract_dst,
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
cairo_int_status_t status = CAIRO_STATUS_SUCCESS;
|
||||
cairo_xlib_surface_t *dst = (cairo_xlib_surface_t*) abstract_dst;
|
||||
|
|
|
|||
|
|
@ -726,13 +726,15 @@ struct _cairo_surface_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*paint) (void *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source);
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_warn cairo_int_status_t
|
||||
(*mask) (void *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask);
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_warn cairo_int_status_t
|
||||
(*stroke) (void *surface,
|
||||
|
|
@ -743,7 +745,8 @@ struct _cairo_surface_backend {
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias);
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_warn cairo_int_status_t
|
||||
(*fill) (void *surface,
|
||||
|
|
@ -752,7 +755,8 @@ struct _cairo_surface_backend {
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias);
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_warn cairo_int_status_t
|
||||
(*show_glyphs) (void *surface,
|
||||
|
|
@ -761,7 +765,8 @@ struct _cairo_surface_backend {
|
|||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs);
|
||||
int *remaining_glyphs,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_surface_t *
|
||||
(*snapshot) (void *surface);
|
||||
|
|
@ -788,7 +793,8 @@ struct _cairo_surface_backend {
|
|||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double stroke_tolerance,
|
||||
cairo_antialias_t stroke_antialias);
|
||||
cairo_antialias_t stroke_antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_surface_t *
|
||||
(*create_solid_pattern_surface)
|
||||
|
|
@ -809,7 +815,8 @@ struct _cairo_surface_backend {
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font);
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents);
|
||||
};
|
||||
|
||||
#include "cairo-surface-private.h"
|
||||
|
|
@ -1734,13 +1741,15 @@ _cairo_surface_fill_rectangles (cairo_surface_t *surface,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_surface_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source);
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_mask (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask);
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fill_stroke (cairo_surface_t *surface,
|
||||
|
|
@ -1756,7 +1765,8 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
|
|||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double stroke_tolerance,
|
||||
cairo_antialias_t stroke_antialias);
|
||||
cairo_antialias_t stroke_antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_stroke (cairo_surface_t *surface,
|
||||
|
|
@ -1767,7 +1777,8 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias);
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fill (cairo_surface_t *surface,
|
||||
|
|
@ -1776,7 +1787,8 @@ _cairo_surface_fill (cairo_surface_t *surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias);
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
||||
|
|
@ -1789,7 +1801,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font);
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_composite_trapezoids (cairo_operator_t op,
|
||||
|
|
|
|||
|
|
@ -194,26 +194,28 @@ _test_meta_surface_get_extents (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_test_meta_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
surface->image_reflects_meta = FALSE;
|
||||
|
||||
return _cairo_surface_paint (surface->meta, op, source);
|
||||
return _cairo_surface_paint (surface->meta, op, source, extents);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_test_meta_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
surface->image_reflects_meta = FALSE;
|
||||
|
||||
return _cairo_surface_mask (surface->meta, op, source, mask);
|
||||
return _cairo_surface_mask (surface->meta, op, source, mask, extents);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
|
|
@ -225,7 +227,8 @@ _test_meta_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -234,7 +237,7 @@ _test_meta_surface_stroke (void *abstract_surface,
|
|||
return _cairo_surface_stroke (surface->meta, op, source,
|
||||
path, style,
|
||||
ctm, ctm_inverse,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, extents);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
|
|
@ -244,7 +247,8 @@ _test_meta_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -252,7 +256,7 @@ _test_meta_surface_fill (void *abstract_surface,
|
|||
|
||||
return _cairo_surface_fill (surface->meta, op, source,
|
||||
path, fill_rule,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, extents);
|
||||
}
|
||||
|
||||
static cairo_bool_t
|
||||
|
|
@ -274,7 +278,8 @@ _test_meta_surface_show_text_glyphs (void *abstract_surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -284,7 +289,7 @@ _test_meta_surface_show_text_glyphs (void *abstract_surface,
|
|||
utf8, utf8_len,
|
||||
glyphs, num_glyphs,
|
||||
clusters, num_clusters, cluster_flags,
|
||||
scaled_font);
|
||||
scaled_font, extents);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -169,28 +169,30 @@ _test_paginated_surface_get_extents (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_test_paginated_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE)
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
|
||||
return _cairo_surface_paint (surface->target, op, source);
|
||||
return _cairo_surface_paint (surface->target, op, source, extents);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_test_paginated_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE)
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
|
||||
return _cairo_surface_mask (surface->target, op, source, mask);
|
||||
return _cairo_surface_mask (surface->target, op, source, mask, extents);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
|
|
@ -202,7 +204,8 @@ _test_paginated_surface_stroke (void *abstract_surface,
|
|||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -212,7 +215,7 @@ _test_paginated_surface_stroke (void *abstract_surface,
|
|||
return _cairo_surface_stroke (surface->target, op, source,
|
||||
path, style,
|
||||
ctm, ctm_inverse,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, extents);
|
||||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
|
|
@ -222,7 +225,8 @@ _test_paginated_surface_fill (void *abstract_surface,
|
|||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_antialias_t antialias,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -231,7 +235,7 @@ _test_paginated_surface_fill (void *abstract_surface,
|
|||
|
||||
return _cairo_surface_fill (surface->target, op, source,
|
||||
path, fill_rule,
|
||||
tolerance, antialias);
|
||||
tolerance, antialias, extents);
|
||||
}
|
||||
|
||||
static cairo_bool_t
|
||||
|
|
@ -253,7 +257,8 @@ _test_paginated_surface_show_text_glyphs (void *abstract_surface,
|
|||
const cairo_text_cluster_t *clusters,
|
||||
int num_clusters,
|
||||
cairo_text_cluster_flags_t cluster_flags,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -264,7 +269,7 @@ _test_paginated_surface_show_text_glyphs (void *abstract_surface,
|
|||
utf8, utf8_len,
|
||||
glyphs, num_glyphs,
|
||||
clusters, num_clusters, cluster_flags,
|
||||
scaled_font);
|
||||
scaled_font, extents);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue