diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2010-06-22 21:36:47 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2010-06-22 21:36:47 +0000 |
| commit | 917de2bab458d51b4149a1b794cbb1b6b9562171 (patch) | |
| tree | 9abd6fe6497b8b0965bb85caf4b4456ff2099989 /src/display/canvas-arena.cpp | |
| parent | * [INTL:sk] Slovak translation update (diff) | |
| download | inkscape-917de2bab458d51b4149a1b794cbb1b6b9562171.tar.gz inkscape-917de2bab458d51b4149a1b794cbb1b6b9562171.zip | |
Initial Cairo rendering commit: solid shapes, gradients, opacity and patterns
(bzr r9508.1.1)
Diffstat (limited to 'src/display/canvas-arena.cpp')
| -rw-r--r-- | src/display/canvas-arena.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/display/canvas-arena.cpp b/src/display/canvas-arena.cpp index 733f9a513..86d902be2 100644 --- a/src/display/canvas-arena.cpp +++ b/src/display/canvas-arena.cpp @@ -190,6 +190,7 @@ sp_canvas_arena_render (SPCanvasItem *item, SPCanvasBuf *buf) gint bw, bh; SPCanvasArena *arena = SP_CANVAS_ARENA (item); + SPCanvas *canvas = item->canvas; nr_arena_item_invoke_update (arena->root, NULL, &arena->gc, NR_ARENA_ITEM_STATE_BBOX | NR_ARENA_ITEM_STATE_RENDER, @@ -209,19 +210,31 @@ sp_canvas_arena_render (SPCanvasItem *item, SPCanvasBuf *buf) area.x1 = buf->rect.x1; area.y1 = buf->rect.y1; + sp_canvas_prepare_buffer(buf); + nr_pixblock_setup_extern (&cb, NR_PIXBLOCK_MODE_R8G8B8A8P, area.x0, area.y0, area.x1, area.y1, buf->buf, buf->buf_rowstride, FALSE, FALSE); cb.visible_area = buf->visible_rect; - cairo_t *ct = nr_create_cairo_context (&area, &cb); - nr_arena_item_invoke_render (ct, arena->root, &area, &cb, 0); + //cairo_t *ct = nr_create_cairo_context (&area, &cb); + + cairo_save(buf->ct); + //cairo_translate(buf->ct, area.x0 - canvas->x0, area.y0 - canvas->y0); + nr_arena_item_invoke_render (buf->ct, arena->root, &area, &cb, 0); + cairo_restore(buf->ct); + + //cairo_surface_t *cst = cairo_get_target(ct); + + //cairo_save(buf->ct); + //cairo_set_source_surface(buf->ct, cst, 0, 0); + //cairo_paint(buf->ct); + //cairo_restore(buf->ct); - cairo_surface_t *cst = cairo_get_target(ct); - cairo_destroy (ct); - cairo_surface_finish (cst); - cairo_surface_destroy (cst); + //cairo_destroy (ct); + //cairo_surface_finish (cst); + //cairo_surface_destroy (cst); nr_pixblock_release (&cb); } |
