diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp
index 1f2d531b788d445fd2373fc0194417fc12c1bd7a..55b6782939a6465124d6bebbe9ba70f2c65cd04e 100644 (file)
--- a/src/sp-mask.cpp
+++ b/src/sp-mask.cpp
#include "enums.h"
#include "attributes.h"
#include "document.h"
+#include "document-private.h"
#include "sp-item.h"
#include "sp-mask.h"
mask->maskUnits_set = FALSE;
mask->maskUnits = SP_CONTENT_UNITS_OBJECTBOUNDINGBOX;
- mask->maskUnits_set = FALSE;
- mask->maskUnits = SP_CONTENT_UNITS_USERSPACEONUSE;
+ mask->maskContentUnits_set = FALSE;
+ mask->maskContentUnits = SP_CONTENT_UNITS_USERSPACEONUSE;
mask->display = NULL;
}
SPMask *cp = SP_MASK (object);
while (cp->display) {
- /* We simply unref and let item to manage this in handler */
+ /* We simply unref and let item manage this in handler */
cp->display = sp_mask_view_list_remove (cp->display, cp->display);
}
return repr;
}
+// Create a mask element (using passed elements), add it to <defs>
+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)
{
!NR_DF_TEST_CLOSE (v->bbox.x1, bbox->x1, NR_EPSILON) ||
!NR_DF_TEST_CLOSE (v->bbox.y1, bbox->y1, NR_EPSILON)) {
v->bbox = *bbox;
- SP_OBJECT(mask)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
}
break;
}
return list;
}
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :