no more has_clip boolean. Init clip_level. (_cairo_surface_intersect_clip_path): a NULL path means reset of clipping region, not back to previous clipping level.

This commit is contained in:
Emmanuel Pacaud 2005-12-30 14:16:10 +00:00
parent 23e5e55841
commit 71369489d8
2 changed files with 15 additions and 8 deletions

View file

@ -1,7 +1,14 @@
2005-12-30 Emmanuel Pacaud <emmanuel.pacaud@free.fr>
* src/cairo-svg-surface.c (_cairo_svg_surface_create_for_document): no
more has_clip boolean. Init clip_level.
(_cairo_surface_intersect_clip_path): a NULL path means reset of
clipping region, not back to previous clipping level.
2005-12-28 Emmanuel Pacaud <emmanuel.pacaud@free.fr>
* _cairo_svg_document_create: namespace declarations for SVG and XLINK
(#5411).
* src/cairo-svg-surface.c (_cairo_svg_document_create): namespace
declarations for SVG and XLINK (#5411).
2005-12-27 Christian Biesinger <cbiesinger@web.de>

View file

@ -88,7 +88,7 @@ struct cairo_svg_surface {
xmlNodePtr xml_node;
cairo_bool_t has_clip;
unsigned int clip_level;
};
static cairo_svg_document_t *
@ -194,7 +194,7 @@ _cairo_svg_surface_create_for_document (cairo_svg_document_t *document,
_cairo_svg_document_reference (document);
surface->document = document;
surface->has_clip = FALSE;
surface->clip_level = 0;
surface->id = document->surface_id++;
clip_id = document->clip_id++;
@ -1303,14 +1303,13 @@ _cairo_svg_surface_intersect_clip_path (void *dst,
char buffer[CAIRO_SVG_DTOSTR_BUFFER_LEN];
if (path == NULL) {
if (surface->has_clip)
while (surface->clip_level > 0) {
surface->xml_node = surface->xml_node->parent;
surface->has_clip = FALSE;
surface->clip_level--;
}
return CAIRO_STATUS_SUCCESS;
}
surface->has_clip = TRUE;
if (path != NULL) {
info.document = document;
info.has_current_point = FALSE;
@ -1340,6 +1339,7 @@ _cairo_svg_surface_intersect_clip_path (void *dst,
document->clip_id++;
surface->xml_node = group;
surface->clip_level++;
}
return status;