diff options
| author | Markus Engel <markus.engel@tum.de> | 2012-08-21 13:56:49 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2012-08-21 13:56:49 +0000 |
| commit | 5ed81b55a24be2ddc51aa812bca2edcb7ff94b37 (patch) | |
| tree | a2a14cfc255d94ddd6ea547d5bac5d723a18e63c /src/sp-namedview.cpp | |
| parent | Added "virtual pad" to SPMask. (diff) | |
| download | inkscape-5ed81b55a24be2ddc51aa812bca2edcb7ff94b37.tar.gz inkscape-5ed81b55a24be2ddc51aa812bca2edcb7ff94b37.zip | |
Added "virtual pad" to SPNamedView.
(bzr r11608.1.40)
Diffstat (limited to 'src/sp-namedview.cpp')
| -rw-r--r-- | src/sp-namedview.cpp | 80 |
1 files changed, 59 insertions, 21 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) { |
