diff options
| author | Martin Owens <doctormo@gmail.com> | 2014-03-27 01:33:44 +0000 |
|---|---|---|
| committer | Martin Owens <doctormo@gmail.com> | 2014-03-27 01:33:44 +0000 |
| commit | 5a4fb2325f60d292b47330f540b26a3279341c90 (patch) | |
| tree | d2aa7967be25450b83e625025366c618101ae49f /src/sp-style-elem.cpp | |
| parent | The Polar Arrange Tab of the Arrange Dialog now hides the parametric (diff) | |
| parent | Remove Snap menu item and improve grid menu item text (diff) | |
| download | inkscape-5a4fb2325f60d292b47330f540b26a3279341c90.tar.gz inkscape-5a4fb2325f60d292b47330f540b26a3279341c90.zip | |
Commit a merge to trunk, with probabal errors
(bzr r11073.1.36)
Diffstat (limited to 'src/sp-style-elem.cpp')
| -rw-r--r-- | src/sp-style-elem.cpp | 98 |
1 files changed, 31 insertions, 67 deletions
diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index 2e14ae5ff..84f110134 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -7,60 +7,27 @@ #include "style.h" using Inkscape::XML::TEXT_NODE; -static void sp_style_elem_init(SPStyleElem *style_elem); -static void sp_style_elem_class_init(SPStyleElemClass *klass); -static void sp_style_elem_build(SPObject *object, SPDocument *doc, Inkscape::XML::Node *repr); -static void sp_style_elem_set(SPObject *object, unsigned const key, gchar const *const value); -static void sp_style_elem_read_content(SPObject *); -static Inkscape::XML::Node *sp_style_elem_write(SPObject *, Inkscape::XML::Document *, Inkscape::XML::Node *, guint flags); +#include "sp-factory.h" -static SPObjectClass *parent_class; +namespace { + SPObject* createStyle() { + return new SPStyleElem(); + } -GType -sp_style_elem_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPStyleElemClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_style_elem_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPStyleElem), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_style_elem_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPStyleElem", &info, (GTypeFlags) 0); - } - - return type; + bool styleRegistered = SPFactory::instance().registerObject("svg:style", createStyle); } -static void -sp_style_elem_class_init(SPStyleElemClass *klass) -{ - parent_class = (SPObjectClass *)g_type_class_ref(SP_TYPE_OBJECT); - /* FIXME */ - - klass->build = sp_style_elem_build; - klass->set = sp_style_elem_set; - klass->read_content = sp_style_elem_read_content; - klass->write = sp_style_elem_write; +SPStyleElem::SPStyleElem() : SPObject() { + media_set_all(this->media); + this->is_css = false; } -static void -sp_style_elem_init(SPStyleElem *style_elem) -{ - media_set_all(style_elem->media); - style_elem->is_css = false; +SPStyleElem::~SPStyleElem() { } -static void -sp_style_elem_set(SPObject *object, unsigned const key, gchar const *const value) -{ +void SPStyleElem::set(unsigned int key, const gchar* value) { + SPStyleElem* object = this; + g_return_if_fail(object); SPStyleElem &style_elem = *SP_STYLE_ELEM(object); @@ -89,26 +56,25 @@ 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); - } + SPObject::set(key, value); break; } } } + static void child_add_rm_cb(Inkscape::XML::Node *, Inkscape::XML::Node *, Inkscape::XML::Node *, void *const data) { - sp_style_elem_read_content(static_cast<SPObject *>(data)); + static_cast<SPObject *>(data)->read_content(); } static void content_changed_cb(Inkscape::XML::Node *, gchar const *, gchar const *, void *const data) { - sp_style_elem_read_content(static_cast<SPObject *>(data)); + static_cast<SPObject *>(data)->read_content(); } static void @@ -116,12 +82,12 @@ child_order_changed_cb(Inkscape::XML::Node *, Inkscape::XML::Node *, Inkscape::XML::Node *, Inkscape::XML::Node *, void *const data) { - sp_style_elem_read_content(static_cast<SPObject *>(data)); + static_cast<SPObject *>(data)->read_content(); } -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* SPStyleElem::write(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { + SPStyleElem* object = this; + if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { repr = xml_doc->createElement("svg:style"); } @@ -138,8 +104,7 @@ 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); + SPObject::write(xml_doc, repr, flags); return repr; } @@ -297,9 +262,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 SPStyleElem::read_content() { + SPStyleElem* object = this; + SPStyleElem &style_elem = *SP_STYLE_ELEM(object); /* fixme: If there's more than one <style> element in a document, then the document stylesheet @@ -385,10 +350,10 @@ rec_add_listener(Inkscape::XML::Node &repr, } } -static void -sp_style_elem_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - sp_style_elem_read_content(object); +void SPStyleElem::build(SPDocument *document, Inkscape::XML::Node *repr) { + SPStyleElem* object = this; + + object->read_content(); object->readAttr( "type" ); object->readAttr( "media" ); @@ -402,12 +367,11 @@ sp_style_elem_build(SPObject *object, SPDocument *document, Inkscape::XML::Node }; rec_add_listener(*repr, &nodeEventVector, object); - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build(object, document, repr); - } + SPObject::build(document, repr); } + /* Local Variables: mode:c++ |
