X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsp-mask.cpp;h=55b6782939a6465124d6bebbe9ba70f2c65cd04e;hb=c3fab1b28454fe4b855580cfa3d6339528df292a;hp=456dadc5fc29d709c524c1957bf34cf800f6f388;hpb=8a9fe93c202b3f3a4f5e0307f9a4cdf2587e81e6;p=inkscape.git diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp index 456dadc5f..55b678293 100644 --- a/src/sp-mask.cpp +++ b/src/sp-mask.cpp @@ -19,6 +19,7 @@ #include "enums.h" #include "attributes.h" #include "document.h" +#include "document-private.h" #include "sp-item.h" #include "sp-mask.h" @@ -266,6 +267,34 @@ sp_mask_write (SPObject *object, Inkscape::XML::Node *repr, guint 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) +{ + Inkscape::XML::Node *defsrepr = SP_OBJECT_REPR (SP_DOCUMENT_DEFS (document)); + + Inkscape::XML::Node *repr = sp_repr_new ("svg:mask"); + repr->setAttribute("maskUnits", "userSpaceOnUse"); + + defsrepr->appendChild(repr); + const gchar *mask_id = repr->attribute("id"); + SPObject *mask_object = document->getObjectById(mask_id); + + for (GSList *it = reprs; it != NULL; it = it->next) { + Inkscape::XML::Node *node = (Inkscape::XML::Node *)(it->data); + SPItem *item = SP_ITEM(mask_object->appendChildRepr(node)); + + if (NULL != applyTransform) { + NR::Matrix transform (item->transform); + transform *= (*applyTransform); + sp_item_write_transform(item, SP_OBJECT_REPR(item), transform); + } + } + + Inkscape::GC::release(repr); + return mask_id; +} + NRArenaItem * sp_mask_show (SPMask *mask, NRArena *arena, unsigned int key) {