summaryrefslogtreecommitdiff
path: root/rsvg-cairo-draw.c
diff options
context:
space:
mode:
authorDom Lachowicz <doml@src.gnome.org>2005-08-04 01:38:36 +0000
committerDom Lachowicz <doml@src.gnome.org>2005-08-04 01:38:36 +0000
commit2cfe4d01ec240e29b8726ed70af172996bc13fdf (patch)
tree78ff679a65bd2a9f3e7073fd57e5b354613e347e /rsvg-cairo-draw.c
parentdc26b626646d300fb3d5b2b2c6538f0690187ea4 (diff)
downloadlibrsvg-2cfe4d01ec240e29b8726ed70af172996bc13fdf.tar.gz
implement push/pop discrete layer
Diffstat (limited to 'rsvg-cairo-draw.c')
-rw-r--r--rsvg-cairo-draw.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c
index 9f318ff9..83aa2afb 100644
--- a/rsvg-cairo-draw.c
+++ b/rsvg-cairo-draw.c
@@ -239,6 +239,8 @@ rsvg_cairo_render_path (RsvgDrawingCtx *ctx, const RsvgBpathDef *bpath_def)
void rsvg_cairo_render_image (RsvgDrawingCtx *ctx, const GdkPixbuf * img,
double x, double y, double w, double h)
{
+ /* XXX: Untested */
+
RsvgCairoRender *render = (RsvgCairoRender *)ctx->render;
RsvgState *state = rsvg_state_current(ctx);
cairo_surface_t * surface;
@@ -265,12 +267,43 @@ void
rsvg_cairo_push_discrete_layer (RsvgDrawingCtx *ctx)
{
/* XXX: NYI */
+
+#if 0
+
+ RsvgCairoRender *render = (RsvgCairoRender *)ctx->render;
+ cairo_surface_t *surface;
+ cairo_t *child_cr;
+
+ surface = cairo_surface_create_similar (render->surface,
+ CAIRO_CONTENT_COLOR_ALPHA,
+ width, height);
+ child_cr = cairo_create (surface);
+ cairo_surface_destroy (surface);
+
+ render->cr_stack = g_list_prepend(render->cr_stack, render->cr);
+ render->cr = child_cr;
+
+#endif
}
void
rsvg_cairo_pop_discrete_layer (RsvgDrawingCtx *ctx)
{
/* XXX: NYI */
+
+#if 0
+ RsvgCairoRender *render = (RsvgCairoRender *)ctx->render;
+ cairo_t *child_cr = render->cr;
+
+ render->cr = (cairo_t *)render->cr_stack->data;
+ render->cr_stack = g_list_remove_link (render->cr_stack, render->cr_stack);
+
+ cairo_set_source_surface (render->cr,
+ cairo_get_target (child_cr),
+ 0, 0);
+ cairo_paint (render->cr);
+ cairo_destroy (child_cr);
+#endif
}
void
@@ -299,6 +332,8 @@ rsvg_cairo_get_image_of_node (RsvgDrawingCtx *ctx,
double width,
double height)
{
+ /* XXX: Untested */
+
GdkPixbuf *img = NULL;
cairo_surface_t * surface;
cairo_t * cr;