diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2011-08-25 19:16:02 +0000 |
|---|---|---|
| committer | Krzysztof Kosinski <tweenk.pl@gmail.com> | 2011-08-25 19:16:02 +0000 |
| commit | 093f4174abc07b4ea523617fccdd8028f2670fea (patch) | |
| tree | 5aba6cd030bc6b0dbb59ec48e32a0b0364b516bd /src/sp-mask.cpp | |
| parent | German translation update (diff) | |
| parent | Reduce default rendering cache size to 64 MiB (diff) | |
| download | inkscape-093f4174abc07b4ea523617fccdd8028f2670fea.tar.gz inkscape-093f4174abc07b4ea523617fccdd8028f2670fea.zip | |
Merge rendering cache branch (GSoC 2011)
(bzr r10579)
Diffstat (limited to 'src/sp-mask.cpp')
| -rw-r--r-- | src/sp-mask.cpp | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp index 38599188f..f23172a17 100644 --- a/src/sp-mask.cpp +++ b/src/sp-mask.cpp @@ -15,8 +15,8 @@ #include <string> #include <2geom/transforms.h> -#include "display/nr-arena.h" -#include "display/nr-arena-group.h" +#include "display/drawing.h" +#include "display/drawing-group.h" #include "xml/repr.h" #include "enums.h" @@ -30,7 +30,7 @@ struct SPMaskView { SPMaskView *next; unsigned int key; - NRArenaItem *arenaitem; + Inkscape::DrawingItem *arenaitem; NRRect bbox; }; @@ -45,7 +45,7 @@ static void sp_mask_update (SPObject *object, SPCtx *ctx, guint flags); static void sp_mask_modified (SPObject *object, guint flags); static Inkscape::XML::Node *sp_mask_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -SPMaskView *sp_mask_view_new_prepend (SPMaskView *list, unsigned int key, NRArenaItem *arenaitem); +SPMaskView *sp_mask_view_new_prepend (SPMaskView *list, unsigned int key, Inkscape::DrawingItem *arenaitem); SPMaskView *sp_mask_view_list_remove (SPMaskView *list, SPMaskView *view); static SPObjectGroupClass *parent_class; @@ -179,11 +179,11 @@ sp_mask_child_added (SPObject *object, Inkscape::XML::Node *child, Inkscape::XML if (SP_IS_ITEM (ochild)) { SPMask *cp = SP_MASK (object); for (SPMaskView *v = cp->display; v != NULL; v = v->next) { - NRArenaItem *ac = SP_ITEM (ochild)->invoke_show ( NR_ARENA_ITEM_ARENA (v->arenaitem), + Inkscape::DrawingItem *ac = SP_ITEM (ochild)->invoke_show ( v->arenaitem->drawing(), v->key, SP_ITEM_REFERENCE_FLAGS); if (ac) { - nr_arena_item_add_child (v->arenaitem, ac, NULL); + v->arenaitem->prependChild(ac); } } } @@ -215,13 +215,14 @@ static void sp_mask_update(SPObject *object, SPCtx *ctx, guint flags) SPMask *mask = SP_MASK(object); for (SPMaskView *v = mask->display; v != NULL; v = v->next) { + Inkscape::DrawingGroup *g = dynamic_cast<Inkscape::DrawingGroup *>(v->arenaitem); if (mask->maskContentUnits == SP_CONTENT_UNITS_OBJECTBOUNDINGBOX) { Geom::Affine t(Geom::Scale(v->bbox.x1 - v->bbox.x0, v->bbox.y1 - v->bbox.y0)); t[4] = v->bbox.x0; t[5] = v->bbox.y0; - nr_arena_group_set_child_transform(NR_ARENA_GROUP(v->arenaitem), &t); + g->setChildTransform(t); } else { - nr_arena_group_set_child_transform(NR_ARENA_GROUP(v->arenaitem), NULL); + g->setChildTransform(Geom::identity()); } } } @@ -296,22 +297,19 @@ sp_mask_create (GSList *reprs, SPDocument *document, Geom::Affine const* applyTr return mask_id; } -NRArenaItem *sp_mask_show(SPMask *mask, NRArena *arena, unsigned int key) +Inkscape::DrawingItem *sp_mask_show(SPMask *mask, Inkscape::Drawing &drawing, unsigned int key) { g_return_val_if_fail (mask != NULL, NULL); g_return_val_if_fail (SP_IS_MASK (mask), NULL); - g_return_val_if_fail (arena != NULL, NULL); - g_return_val_if_fail (NR_IS_ARENA (arena), NULL); - NRArenaItem *ai = NRArenaGroup::create(arena); + Inkscape::DrawingGroup *ai = new Inkscape::DrawingGroup(drawing); mask->display = sp_mask_view_new_prepend (mask->display, key, ai); for ( SPObject *child = mask->firstChild() ; child; child = child->getNext() ) { if (SP_IS_ITEM (child)) { - NRArenaItem *ac = SP_ITEM (child)->invoke_show (arena, key, SP_ITEM_REFERENCE_FLAGS); + Inkscape::DrawingItem *ac = SP_ITEM (child)->invoke_show (drawing, key, SP_ITEM_REFERENCE_FLAGS); if (ac) { - /* The order is not important in mask */ - nr_arena_item_add_child (ai, ac, NULL); + ai->prependChild(ac); } } } @@ -320,7 +318,7 @@ NRArenaItem *sp_mask_show(SPMask *mask, NRArena *arena, unsigned int key) Geom::Affine t(Geom::Scale(mask->display->bbox.x1 - mask->display->bbox.x0, mask->display->bbox.y1 - mask->display->bbox.y0)); t[4] = mask->display->bbox.x0; t[5] = mask->display->bbox.y0; - nr_arena_group_set_child_transform (NR_ARENA_GROUP (ai), &t); + ai->setChildTransform(t); } return ai; @@ -367,13 +365,13 @@ sp_mask_set_bbox (SPMask *mask, unsigned int key, NRRect *bbox) /* Mask views */ SPMaskView * -sp_mask_view_new_prepend (SPMaskView *list, unsigned int key, NRArenaItem *arenaitem) +sp_mask_view_new_prepend (SPMaskView *list, unsigned int key, Inkscape::DrawingItem *arenaitem) { SPMaskView *new_mask_view = g_new (SPMaskView, 1); new_mask_view->next = list; new_mask_view->key = key; - new_mask_view->arenaitem = nr_arena_item_ref(arenaitem); + new_mask_view->arenaitem = arenaitem; new_mask_view->bbox.x0 = new_mask_view->bbox.x1 = 0.0; new_mask_view->bbox.y0 = new_mask_view->bbox.y1 = 0.0; @@ -392,7 +390,7 @@ sp_mask_view_list_remove (SPMaskView *list, SPMaskView *view) prev->next = view->next; } - nr_arena_item_unref (view->arenaitem); + delete view->arenaitem; g_free (view); return list; |
