From 791de080f5a2377d4801b276b1f3bba797a24caa Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Mon, 20 Aug 2012 23:58:18 +0200 Subject: Added "virtual pad" to SPStyleElem. (bzr r11608.1.32) --- src/sp-style-elem.cpp | 69 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 20 deletions(-) (limited to 'src/sp-style-elem.cpp') diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index 2e14ae5ff..71eb87b8c 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -51,16 +51,26 @@ sp_style_elem_class_init(SPStyleElemClass *klass) klass->write = sp_style_elem_write; } +CStyleElem::CStyleElem(SPStyleElem* se) : CObject(se) { + this->spstyleelem = se; +} + +CStyleElem::~CStyleElem() { +} + static void sp_style_elem_init(SPStyleElem *style_elem) { + style_elem->cstyleelem = new CStyleElem(style_elem); + style_elem->cobject = style_elem->cstyleelem; + media_set_all(style_elem->media); style_elem->is_css = false; } -static void -sp_style_elem_set(SPObject *object, unsigned const key, gchar const *const value) -{ +void CStyleElem::onSet(unsigned int key, const gchar* value) { + SPStyleElem* object = this->spstyleelem; + g_return_if_fail(object); SPStyleElem &style_elem = *SP_STYLE_ELEM(object); @@ -89,14 +99,18 @@ sp_style_elem_set(SPObject *object, unsigned const key, gchar const *const value /* title is ignored. */ default: { - if (parent_class->set) { - parent_class->set(object, key, value); - } + CObject::onSet(key, value); break; } } } +static void +sp_style_elem_set(SPObject *object, unsigned const key, gchar const *const value) +{ + ((SPStyleElem*)object)->cstyleelem->onSet(key, value); +} + static void child_add_rm_cb(Inkscape::XML::Node *, Inkscape::XML::Node *, Inkscape::XML::Node *, void *const data) @@ -119,9 +133,9 @@ child_order_changed_cb(Inkscape::XML::Node *, Inkscape::XML::Node *, sp_style_elem_read_content(static_cast(data)); } -static Inkscape::XML::Node * -sp_style_elem_write(SPObject *const object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint const flags) -{ +Inkscape::XML::Node* CStyleElem::onWrite(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { + SPStyleElem* object = this->spstyleelem; + if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { repr = xml_doc->createElement("svg:style"); } @@ -138,12 +152,17 @@ sp_style_elem_write(SPObject *const object, Inkscape::XML::Document *xml_doc, In } /* todo: media */ - if (((SPObjectClass *) parent_class)->write) - ((SPObjectClass *) parent_class)->write(object, xml_doc, repr, flags); + CObject::onWrite(xml_doc, repr, flags); return repr; } +static Inkscape::XML::Node * +sp_style_elem_write(SPObject *const object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint const flags) +{ + return ((SPStyleElem*)object)->cstyleelem->onWrite(xml_doc, repr, flags); +} + /** Returns the concatenation of the content of the text children of the specified object. */ static GString * @@ -297,9 +316,9 @@ property_cb(CRDocHandler *const a_handler, g_return_if_fail(append_status == CR_OK); } -static void -sp_style_elem_read_content(SPObject *const object) -{ +void CStyleElem::onReadContent() { + SPStyleElem* object = this->spstyleelem; + SPStyleElem &style_elem = *SP_STYLE_ELEM(object); /* fixme: If there's more than one