summaryrefslogtreecommitdiffstats
path: root/src/sp-style-elem.cpp
diff options
context:
space:
mode:
authorMartin Owens <doctormo@gmail.com>2014-03-27 01:33:44 +0000
committerMartin Owens <doctormo@gmail.com>2014-03-27 01:33:44 +0000
commit5a4fb2325f60d292b47330f540b26a3279341c90 (patch)
treed2aa7967be25450b83e625025366c618101ae49f /src/sp-style-elem.cpp
parentThe Polar Arrange Tab of the Arrange Dialog now hides the parametric (diff)
parentRemove Snap menu item and improve grid menu item text (diff)
downloadinkscape-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.cpp98
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++