summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2012-08-21 13:56:49 +0000
committerMarkus Engel <markus.engel@tum.de>2012-08-21 13:56:49 +0000
commit5ed81b55a24be2ddc51aa812bca2edcb7ff94b37 (patch)
treea2a14cfc255d94ddd6ea547d5bac5d723a18e63c /src
parentAdded "virtual pad" to SPMask. (diff)
downloadinkscape-5ed81b55a24be2ddc51aa812bca2edcb7ff94b37.tar.gz
inkscape-5ed81b55a24be2ddc51aa812bca2edcb7ff94b37.zip
Added "virtual pad" to SPNamedView.
(bzr r11608.1.40)
Diffstat (limited to 'src')
-rw-r--r--src/sp-namedview.cpp80
-rw-r--r--src/sp-namedview.h27
2 files changed, 85 insertions, 22 deletions
diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp
index 75c2f8343..e85b1fc5a 100644
--- a/src/sp-namedview.cpp
+++ b/src/sp-namedview.cpp
@@ -103,8 +103,19 @@ static void sp_namedview_class_init(SPNamedViewClass * klass)
sp_object_class->write = sp_namedview_write;
}
+CNamedView::CNamedView(SPNamedView* view) : CObjectGroup(view) {
+ this->spnamedview = view;
+}
+
+CNamedView::~CNamedView() {
+}
+
static void sp_namedview_init(SPNamedView *nv)
{
+ nv->cnamedview = new CNamedView(nv);
+ nv->cobjectgroup = nv->cnamedview;
+ nv->cobject = nv->cnamedview;
+
nv->editable = TRUE;
nv->showguides = TRUE;
nv->grids_visible = false;
@@ -210,14 +221,13 @@ static void sp_namedview_generate_old_grid(SPNamedView * /*nv*/, SPDocument *doc
}
}
-static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr)
-{
+void CNamedView::onBuild(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPNamedView* object = this->spnamedview;
+
SPNamedView *nv = (SPNamedView *) object;
SPObjectGroup *og = (SPObjectGroup *) object;
- if (((SPObjectClass *) (parent_class))->build) {
- (* ((SPObjectClass *) (parent_class))->build)(object, document, repr);
- }
+ CObjectGroup::onBuild(document, repr);
object->readAttr( "inkscape:document-units" );
object->readAttr( "units" );
@@ -287,8 +297,13 @@ static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape:
sp_namedview_generate_old_grid(nv, document, repr);
}
-static void sp_namedview_release(SPObject *object)
+static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr)
{
+ ((SPNamedView*)object)->cnamedview->onBuild(document, repr);
+}
+
+void CNamedView::onRelease() {
+ SPNamedView* object = this->spnamedview;
SPNamedView *namedview = (SPNamedView *) object;
if (namedview->guides) {
@@ -306,12 +321,19 @@ static void sp_namedview_release(SPObject *object)
if (((SPObjectClass *) parent_class)->release) {
((SPObjectClass *) parent_class)->release(object);
}
+ CObjectGroup::onRelease();
namedview->snap_manager.~SnapManager();
}
-static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value)
+static void sp_namedview_release(SPObject *object)
{
+ ((SPNamedView*)object)->cnamedview->onRelease();
+}
+
+void CNamedView::onSet(unsigned int key, const gchar* value) {
+ SPNamedView* object = this->spnamedview;
+
SPNamedView *nv = SP_NAMEDVIEW(object);
switch (key) {
@@ -624,13 +646,16 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va
break;
}
default:
- if (((SPObjectClass *) (parent_class))->set) {
- ((SPObjectClass *) (parent_class))->set(object, key, value);
- }
+ CObjectGroup::onSet(key, value);
break;
}
}
+static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value)
+{
+ ((SPNamedView*)object)->cnamedview->onSet(key, value);
+}
+
/**
* add a grid item from SVG-repr. Check if this namedview already has a gridobject for this one! If desktop=null, add grid-canvasitem to all desktops of this namedview,
* otherwise only add it to the specified desktop.
@@ -672,13 +697,12 @@ sp_namedview_add_grid(SPNamedView *nv, Inkscape::XML::Node *repr, SPDesktop *des
return grid;
}
-static void sp_namedview_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref)
-{
+void CNamedView::onChildAdded(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) {
+ SPNamedView* object = this->spnamedview;
+
SPNamedView *nv = (SPNamedView *) object;
- if (((SPObjectClass *) (parent_class))->child_added) {
- (* ((SPObjectClass *) (parent_class))->child_added)(object, child, ref);
- }
+ CObjectGroup::onChildAdded(child, ref);
if (!strcmp(child->name(), "inkscape:grid")) {
sp_namedview_add_grid(nv, child, NULL);
@@ -704,8 +728,13 @@ static void sp_namedview_child_added(SPObject *object, Inkscape::XML::Node *chil
}
}
-static void sp_namedview_remove_child(SPObject *object, Inkscape::XML::Node *child)
+static void sp_namedview_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref)
{
+ ((SPNamedView*)object)->cnamedview->onChildAdded(child, ref);
+}
+
+void CNamedView::onRemoveChild(Inkscape::XML::Node *child) {
+ SPNamedView* object = this->spnamedview;
SPNamedView *nv = (SPNamedView *) object;
if (!strcmp(child->name(), "inkscape:grid")) {
@@ -730,26 +759,35 @@ static void sp_namedview_remove_child(SPObject *object, Inkscape::XML::Node *chi
}
}
- if (((SPObjectClass *) (parent_class))->remove_child) {
- (* ((SPObjectClass *) (parent_class))->remove_child)(object, child);
- }
+ CObjectGroup::onRemoveChild(child);
}
-static Inkscape::XML::Node *sp_namedview_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags)
+static void sp_namedview_remove_child(SPObject *object, Inkscape::XML::Node *child)
{
+ ((SPNamedView*)object)->cnamedview->onRemoveChild(child);
+}
+
+Inkscape::XML::Node* CNamedView::onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
+ SPNamedView* object = this->spnamedview;
+
if ( ( flags & SP_OBJECT_WRITE_EXT ) &&
repr != object->getRepr() )
{
if (repr) {
repr->mergeFrom(object->getRepr(), "id");
} else {
- repr = object->getRepr()->duplicate(doc);
+ repr = object->getRepr()->duplicate(xml_doc);
}
}
return repr;
}
+static Inkscape::XML::Node *sp_namedview_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags)
+{
+ return ((SPNamedView*)object)->cnamedview->onWrite(doc, repr, flags);
+}
+
void SPNamedView::show(SPDesktop *desktop)
{
for (GSList *l = guides; l != NULL; l = l->next) {
diff --git a/src/sp-namedview.h b/src/sp-namedview.h
index e83ead69e..b131e2dfa 100644
--- a/src/sp-namedview.h
+++ b/src/sp-namedview.h
@@ -36,7 +36,12 @@ enum {
SP_BORDER_LAYER_TOP
};
-struct SPNamedView : public SPObjectGroup {
+class CNamedView;
+
+class SPNamedView : public SPObjectGroup {
+public:
+ CNamedView* cnamedview;
+
unsigned int editable : 1;
unsigned int showguides : 1;
unsigned int showborder : 1;
@@ -100,6 +105,26 @@ struct SPNamedViewClass {
SPObjectGroupClass parent_class;
};
+
+class CNamedView : public CObjectGroup {
+public:
+ CNamedView(SPNamedView* view);
+ virtual ~CNamedView();
+
+ virtual void onBuild(SPDocument *document, Inkscape::XML::Node *repr);
+ virtual void onRelease();
+ virtual void onSet(unsigned int key, gchar const* value);
+
+ virtual void onChildAdded(Inkscape::XML::Node* child, Inkscape::XML::Node* ref);
+ virtual void onRemoveChild(Inkscape::XML::Node* child);
+
+ virtual Inkscape::XML::Node* onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags);
+
+protected:
+ SPNamedView* spnamedview;
+};
+
+
GType sp_namedview_get_type();
SPNamedView *sp_document_namedview(SPDocument *document, gchar const *name);