X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-mask.cpp;h=15be0348f3088be6127f73a7210fa8f54e8a65b3;hb=3410aa1a9f9cb90fe886b982d114e213d3d1fc03;hp=64ff38019d381b915b2f64cc952454be6110c450;hpb=9916339c54c3b82435984fdfd645c561724fc25c;p=inkscape.git diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp index 64ff38019..15be0348f 100644 --- a/src/sp-mask.cpp +++ b/src/sp-mask.cpp @@ -11,9 +11,12 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#include +#include #include "display/nr-arena.h" #include "display/nr-arena-group.h" +#include "libnr/nr-matrix-ops.h" #include #include "enums.h" @@ -40,7 +43,7 @@ static void sp_mask_set (SPObject *object, unsigned int key, const gchar *value) static void sp_mask_child_added (SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref); 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::Node *repr, 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_list_remove (SPMaskView *list, SPMaskView *view); @@ -183,7 +186,6 @@ sp_mask_child_added (SPObject *object, Inkscape::XML::Node *child, Inkscape::XML SP_ITEM_REFERENCE_FLAGS); if (ac) { nr_arena_item_add_child (v->arenaitem, ac, NULL); - nr_arena_item_unref (ac); } } } @@ -217,10 +219,9 @@ sp_mask_update (SPObject *object, SPCtx *ctx, guint flags) SPMask *mask = SP_MASK (object); for (SPMaskView *v = mask->display; v != NULL; v = v->next) { if (mask->maskContentUnits == SP_CONTENT_UNITS_OBJECTBOUNDINGBOX) { - NRMatrix t; - nr_matrix_set_scale (&t, v->bbox.x1 - v->bbox.x0, v->bbox.y1 - v->bbox.y0); - t.c[4] = v->bbox.x0; - t.c[5] = v->bbox.y0; + Geom::Matrix 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); } else { nr_arena_group_set_child_transform (NR_ARENA_GROUP (v->arenaitem), NULL); @@ -255,22 +256,21 @@ sp_mask_modified (SPObject *object, guint flags) } static Inkscape::XML::Node * -sp_mask_write (SPObject *object, Inkscape::XML::Node *repr, guint flags) +sp_mask_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { - Inkscape::XML::Document *xml_doc = sp_document_repr_doc(SP_OBJECT_DOCUMENT(object)); repr = xml_doc->createElement("svg:mask"); } if (((SPObjectClass *) (parent_class))->write) - ((SPObjectClass *) (parent_class))->write (object, repr, flags); + ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, flags); return repr; } // Create a mask element (using passed elements), add it to const gchar * -sp_mask_create (GSList *reprs, SPDocument *document, NR::Matrix const* applyTransform) +sp_mask_create (GSList *reprs, SPDocument *document, Geom::Matrix const* applyTransform) { Inkscape::XML::Node *defsrepr = SP_OBJECT_REPR (SP_DOCUMENT_DEFS (document)); @@ -287,7 +287,7 @@ sp_mask_create (GSList *reprs, SPDocument *document, NR::Matrix const* applyTran SPItem *item = SP_ITEM(mask_object->appendChildRepr(node)); if (NULL != applyTransform) { - NR::Matrix transform (item->transform); + Geom::Matrix transform (item->transform); transform *= (*applyTransform); sp_item_write_transform(item, SP_OBJECT_REPR(item), transform); } @@ -317,16 +317,14 @@ sp_mask_show (SPMask *mask, NRArena *arena, unsigned int key) if (ac) { /* The order is not important in mask */ nr_arena_item_add_child (ai, ac, NULL); - nr_arena_item_unref (ac); } } } if (mask->maskContentUnits == SP_CONTENT_UNITS_OBJECTBOUNDINGBOX) { - NRMatrix t; - nr_matrix_set_scale (&t, mask->display->bbox.x1 - mask->display->bbox.x0, mask->display->bbox.y1 - mask->display->bbox.y0); - t.c[4] = mask->display->bbox.x0; - t.c[5] = mask->display->bbox.y0; + Geom::Matrix 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); } @@ -415,4 +413,4 @@ sp_mask_view_list_remove (SPMaskView *list, SPMaskView *view) fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :