summaryrefslogtreecommitdiffstats
path: root/src/sp-symbol.cpp
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2013-01-26 16:18:08 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2013-01-26 16:18:08 +0000
commit55b2e59196c6e980bdb3f03379de6707dd91082b (patch)
tree8502ac20fa9c4bd4ffa4aee6da3f52a0e906c199 /src/sp-symbol.cpp
parentfix crash (diff)
downloadinkscape-55b2e59196c6e980bdb3f03379de6707dd91082b.tar.gz
inkscape-55b2e59196c6e980bdb3f03379de6707dd91082b.zip
More GObject boilerplate reduction
(bzr r12064)
Diffstat (limited to 'src/sp-symbol.cpp')
-rw-r--r--src/sp-symbol.cpp77
1 files changed, 26 insertions, 51 deletions
diff --git a/src/sp-symbol.cpp b/src/sp-symbol.cpp
index 56f862bf3..d4db403e3 100644
--- a/src/sp-symbol.cpp
+++ b/src/sp-symbol.cpp
@@ -26,9 +26,6 @@
#include "sp-symbol.h"
#include "document.h"
-static void sp_symbol_class_init (SPSymbolClass *klass);
-static void sp_symbol_init (SPSymbol *symbol);
-
static void sp_symbol_build (SPObject *object, SPDocument *document, Inkscape::XML::Node *repr);
static void sp_symbol_release (SPObject *object);
static void sp_symbol_set (SPObject *object, unsigned int key, const gchar *value);
@@ -42,35 +39,13 @@ static void sp_symbol_hide (SPItem *item, unsigned int key);
static Geom::OptRect sp_symbol_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type);
static void sp_symbol_print (SPItem *item, SPPrintContext *ctx);
-static SPGroupClass *parent_class;
-
-GType
-sp_symbol_get_type (void)
-{
- static GType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof (SPSymbolClass),
- NULL, NULL,
- (GClassInitFunc) sp_symbol_class_init,
- NULL, NULL,
- sizeof (SPSymbol),
- 16,
- (GInstanceInitFunc) sp_symbol_init,
- NULL, /* value_table */
- };
- type = g_type_register_static (SP_TYPE_GROUP, "SPSymbol", &info, (GTypeFlags)0);
- }
- return type;
-}
+G_DEFINE_TYPE(SPSymbol, sp_symbol, SP_TYPE_GROUP);
static void sp_symbol_class_init(SPSymbolClass *klass)
{
SPObjectClass *sp_object_class = (SPObjectClass *) klass;
SPItemClass *sp_item_class = (SPItemClass *) klass;
- parent_class = (SPGroupClass *)g_type_class_ref (SP_TYPE_GROUP);
-
sp_object_class->build = sp_symbol_build;
sp_object_class->release = sp_symbol_release;
sp_object_class->set = sp_symbol_set;
@@ -97,15 +72,15 @@ static void sp_symbol_build(SPObject *object, SPDocument *document, Inkscape::XM
object->readAttr( "viewBox" );
object->readAttr( "preserveAspectRatio" );
- if (((SPObjectClass *) parent_class)->build) {
- ((SPObjectClass *) parent_class)->build (object, document, repr);
+ if (((SPObjectClass *) sp_symbol_parent_class)->build) {
+ ((SPObjectClass *) sp_symbol_parent_class)->build (object, document, repr);
}
}
static void sp_symbol_release(SPObject *object)
{
- if (((SPObjectClass *) parent_class)->release) {
- ((SPObjectClass *) parent_class)->release (object);
+ if (((SPObjectClass *) sp_symbol_parent_class)->release) {
+ ((SPObjectClass *) sp_symbol_parent_class)->release (object);
}
}
@@ -202,16 +177,16 @@ static void sp_symbol_set(SPObject *object, unsigned int key, const gchar *value
}
break;
default:
- if (((SPObjectClass *) parent_class)->set)
- ((SPObjectClass *) parent_class)->set (object, key, value);
+ if (((SPObjectClass *) sp_symbol_parent_class)->set)
+ ((SPObjectClass *) sp_symbol_parent_class)->set (object, key, value);
break;
}
}
static void sp_symbol_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref)
{
- if (((SPObjectClass *) (parent_class))->child_added) {
- ((SPObjectClass *) (parent_class))->child_added (object, child, ref);
+ if (((SPObjectClass *) (sp_symbol_parent_class))->child_added) {
+ ((SPObjectClass *) (sp_symbol_parent_class))->child_added (object, child, ref);
}
}
@@ -315,8 +290,8 @@ static void sp_symbol_update(SPObject *object, SPCtx *ctx, guint flags)
}
// And invoke parent method
- if (((SPObjectClass *) (parent_class))->update) {
- ((SPObjectClass *) (parent_class))->update (object, (SPCtx *) &rctx, flags);
+ if (((SPObjectClass *) (sp_symbol_parent_class))->update) {
+ ((SPObjectClass *) (sp_symbol_parent_class))->update (object, (SPCtx *) &rctx, flags);
}
// As last step set additional transform of drawing group
@@ -326,8 +301,8 @@ static void sp_symbol_update(SPObject *object, SPCtx *ctx, guint flags)
}
} else {
// No-op
- if (((SPObjectClass *) (parent_class))->update) {
- ((SPObjectClass *) (parent_class))->update (object, ctx, flags);
+ if (((SPObjectClass *) (sp_symbol_parent_class))->update) {
+ ((SPObjectClass *) (sp_symbol_parent_class))->update (object, ctx, flags);
}
}
}
@@ -336,8 +311,8 @@ static void sp_symbol_modified(SPObject *object, guint flags)
{
SP_SYMBOL(object);
- if (((SPObjectClass *) (parent_class))->modified) {
- (* ((SPObjectClass *) (parent_class))->modified) (object, flags);
+ if (((SPObjectClass *) (sp_symbol_parent_class))->modified) {
+ (* ((SPObjectClass *) (sp_symbol_parent_class))->modified) (object, flags);
}
}
@@ -355,8 +330,8 @@ static Inkscape::XML::Node *sp_symbol_write(SPObject *object, Inkscape::XML::Doc
//XML Tree being used directly here while it shouldn't be.
repr->setAttribute("preserveAspectRatio", object->getRepr()->attribute("preserveAspectRatio"));
- if (((SPObjectClass *) (parent_class))->write) {
- ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, flags);
+ if (((SPObjectClass *) (sp_symbol_parent_class))->write) {
+ ((SPObjectClass *) (sp_symbol_parent_class))->write (object, xml_doc, repr, flags);
}
return repr;
@@ -369,8 +344,8 @@ static Inkscape::DrawingItem *sp_symbol_show(SPItem *item, Inkscape::Drawing &dr
if (symbol->cloned) {
// Cloned <symbol> is actually renderable
- if (((SPItemClass *) (parent_class))->show) {
- ai = ((SPItemClass *) (parent_class))->show (item, drawing, key, flags);
+ if (((SPItemClass *) (sp_symbol_parent_class))->show) {
+ ai = ((SPItemClass *) (sp_symbol_parent_class))->show (item, drawing, key, flags);
Inkscape::DrawingGroup *g = dynamic_cast<Inkscape::DrawingGroup *>(ai);
if (g) {
g->setChildTransform(symbol->c2p);
@@ -387,8 +362,8 @@ static void sp_symbol_hide(SPItem *item, unsigned int key)
if (symbol->cloned) {
/* Cloned <symbol> is actually renderable */
- if (((SPItemClass *) (parent_class))->hide) {
- ((SPItemClass *) (parent_class))->hide (item, key);
+ if (((SPItemClass *) (sp_symbol_parent_class))->hide) {
+ ((SPItemClass *) (sp_symbol_parent_class))->hide (item, key);
}
}
}
@@ -401,15 +376,15 @@ static Geom::OptRect sp_symbol_bbox(SPItem const *item, Geom::Affine const &tran
if (symbol->cloned) {
// Cloned <symbol> is actually renderable
- if (((SPItemClass *) (parent_class))->bbox) {
+ if (((SPItemClass *) (sp_symbol_parent_class))->bbox) {
Geom::Affine const a( symbol->c2p * transform );
- bbox = ((SPItemClass *) (parent_class))->bbox(item, a, type);
+ bbox = ((SPItemClass *) (sp_symbol_parent_class))->bbox(item, a, type);
}
} else {
// Need bounding box for Symbols dialog
Geom::Affine const a;
- bbox = ((SPItemClass *) (parent_class))->bbox(item, a, type);
+ bbox = ((SPItemClass *) (sp_symbol_parent_class))->bbox(item, a, type);
}
return bbox;
}
@@ -422,8 +397,8 @@ static void sp_symbol_print(SPItem *item, SPPrintContext *ctx)
sp_print_bind(ctx, symbol->c2p, 1.0);
- if (((SPItemClass *) (parent_class))->print) {
- ((SPItemClass *) (parent_class))->print (item, ctx);
+ if (((SPItemClass *) (sp_symbol_parent_class))->print) {
+ ((SPItemClass *) (sp_symbol_parent_class))->print (item, ctx);
}
sp_print_release (ctx);