summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/box3d-side.cpp14
-rw-r--r--src/box3d-side.h1
-rw-r--r--src/box3d.cpp17
-rw-r--r--src/box3d.h1
-rw-r--r--src/color-profile.cpp20
-rw-r--r--src/color-profile.h1
-rw-r--r--src/filters/blend.cpp16
-rw-r--r--src/filters/blend.h1
-rw-r--r--src/filters/colormatrix.cpp17
-rw-r--r--src/filters/colormatrix.h1
-rw-r--r--src/filters/componenttransfer-funcnode.cpp28
-rw-r--r--src/filters/componenttransfer-funcnode.h1
-rw-r--r--src/filters/componenttransfer.cpp16
-rw-r--r--src/filters/componenttransfer.h1
-rw-r--r--src/filters/composite.cpp14
-rw-r--r--src/filters/composite.h1
-rw-r--r--src/filters/convolvematrix.cpp18
-rw-r--r--src/filters/convolvematrix.h1
-rw-r--r--src/filters/diffuselighting.cpp14
-rw-r--r--src/filters/diffuselighting.h1
-rw-r--r--src/filters/displacementmap.cpp14
-rw-r--r--src/filters/displacementmap.h1
-rw-r--r--src/filters/distantlight.cpp14
-rw-r--r--src/filters/distantlight.h1
-rw-r--r--src/filters/flood.cpp14
-rw-r--r--src/filters/flood.h1
-rw-r--r--src/filters/gaussian-blur.cpp14
-rw-r--r--src/filters/gaussian-blur.h1
-rw-r--r--src/filters/image.cpp18
-rw-r--r--src/filters/image.h1
-rw-r--r--src/filters/merge.cpp14
-rw-r--r--src/filters/merge.h1
-rw-r--r--src/filters/mergenode.cpp14
-rw-r--r--src/filters/mergenode.h1
-rw-r--r--src/filters/morphology.cpp16
-rw-r--r--src/filters/morphology.h1
-rw-r--r--src/filters/offset.cpp14
-rw-r--r--src/filters/offset.h1
-rw-r--r--src/filters/pointlight.cpp14
-rw-r--r--src/filters/pointlight.h1
-rw-r--r--src/filters/specularlighting.cpp14
-rw-r--r--src/filters/specularlighting.h1
-rw-r--r--src/filters/spotlight.cpp14
-rw-r--r--src/filters/spotlight.h1
-rw-r--r--src/filters/tile.cpp14
-rw-r--r--src/filters/tile.h1
-rw-r--r--src/filters/turbulence.cpp19
-rw-r--r--src/filters/turbulence.h1
-rw-r--r--src/live_effects/lpeobject.cpp22
-rw-r--r--src/live_effects/lpeobject.h1
-rw-r--r--src/marker.cpp31
-rw-r--r--src/marker.h1
-rw-r--r--src/persp3d.cpp20
-rw-r--r--src/persp3d.h1
-rw-r--r--src/sp-anchor.cpp12
-rw-r--r--src/sp-anchor.h1
-rw-r--r--src/sp-clippath.cpp14
-rw-r--r--src/sp-clippath.h1
-rw-r--r--src/sp-defs.cpp15
-rw-r--r--src/sp-defs.h1
-rw-r--r--src/sp-desc.cpp10
-rw-r--r--src/sp-desc.h1
-rw-r--r--src/sp-ellipse.cpp56
-rw-r--r--src/sp-ellipse.h4
-rw-r--r--src/sp-filter-primitive.cpp14
-rw-r--r--src/sp-filter-primitive.h1
-rw-r--r--src/sp-filter.cpp14
-rw-r--r--src/sp-filter.h1
-rw-r--r--src/sp-flowdiv.cpp60
-rw-r--r--src/sp-flowdiv.h5
-rw-r--r--src/sp-flowregion.cpp28
-rw-r--r--src/sp-flowregion.h2
-rw-r--r--src/sp-flowtext.cpp14
-rw-r--r--src/sp-flowtext.h1
-rw-r--r--src/sp-font-face.cpp58
-rw-r--r--src/sp-font-face.h1
-rw-r--r--src/sp-font.cpp12
-rw-r--r--src/sp-font.h1
-rw-r--r--src/sp-glyph-kerning.cpp18
-rw-r--r--src/sp-glyph-kerning.h1
-rw-r--r--src/sp-glyph.cpp12
-rw-r--r--src/sp-glyph.h1
-rw-r--r--src/sp-gradient.cpp146
-rw-r--r--src/sp-gradient.h9
-rw-r--r--src/sp-guide.cpp15
-rw-r--r--src/sp-guide.h1
-rw-r--r--src/sp-image.cpp14
-rw-r--r--src/sp-image.h1
-rw-r--r--src/sp-item-group.cpp14
-rw-r--r--src/sp-item-group.h1
-rw-r--r--src/sp-item.cpp2
-rw-r--r--src/sp-line.cpp14
-rw-r--r--src/sp-line.h1
-rw-r--r--src/sp-linear-gradient.h1
-rw-r--r--src/sp-mask.cpp14
-rw-r--r--src/sp-mask.h1
-rw-r--r--src/sp-mesh-gradient.h1
-rw-r--r--src/sp-mesh-patch.h1
-rw-r--r--src/sp-mesh-row.h1
-rw-r--r--src/sp-metadata.cpp14
-rw-r--r--src/sp-metadata.h1
-rw-r--r--src/sp-missing-glyph.cpp12
-rw-r--r--src/sp-missing-glyph.h1
-rw-r--r--src/sp-namedview.cpp32
-rw-r--r--src/sp-namedview.h1
-rw-r--r--src/sp-object-group.cpp14
-rw-r--r--src/sp-object-group.h1
-rw-r--r--src/sp-offset.cpp20
-rw-r--r--src/sp-offset.h1
-rw-r--r--src/sp-paint-server.cpp16
-rw-r--r--src/sp-paint-server.h1
-rw-r--r--src/sp-path.cpp22
-rw-r--r--src/sp-path.h1
-rw-r--r--src/sp-pattern.cpp16
-rw-r--r--src/sp-pattern.h1
-rw-r--r--src/sp-polygon.cpp12
-rw-r--r--src/sp-polygon.h1
-rw-r--r--src/sp-polyline.cpp12
-rw-r--r--src/sp-polyline.h2
-rw-r--r--src/sp-radial-gradient.h1
-rw-r--r--src/sp-root.cpp23
-rw-r--r--src/sp-root.h1
-rw-r--r--src/sp-script.cpp14
-rw-r--r--src/sp-script.h1
-rw-r--r--src/sp-spiral.cpp20
-rw-r--r--src/sp-spiral.h1
-rw-r--r--src/sp-star.cpp14
-rw-r--r--src/sp-star.h1
-rw-r--r--src/sp-stop.h1
-rw-r--r--src/sp-string.cpp14
-rw-r--r--src/sp-string.h1
-rw-r--r--src/sp-style-elem.cpp14
-rw-r--r--src/sp-style-elem.h1
-rw-r--r--src/sp-switch.cpp12
-rw-r--r--src/sp-switch.h1
-rw-r--r--src/sp-symbol.cpp16
-rw-r--r--src/sp-symbol.h1
-rw-r--r--src/sp-text.cpp14
-rw-r--r--src/sp-text.h1
-rw-r--r--src/sp-textpath.h1
-rw-r--r--src/sp-title.cpp14
-rw-r--r--src/sp-title.h1
-rw-r--r--src/sp-tref.cpp16
-rw-r--r--src/sp-tref.h1
-rw-r--r--src/sp-tspan.cpp28
-rw-r--r--src/sp-tspan.h1
-rw-r--r--src/sp-use.cpp16
-rw-r--r--src/sp-use.h1
148 files changed, 1085 insertions, 404 deletions
diff --git a/src/box3d-side.cpp b/src/box3d-side.cpp
index a04fffa86..3b46b203a 100644
--- a/src/box3d-side.cpp
+++ b/src/box3d-side.cpp
@@ -28,7 +28,7 @@ struct SPPathClass;
static void box3d_side_compute_corner_ids(Box3DSide *side, unsigned int corners[4]);
-G_DEFINE_TYPE(Box3DSide, box3d_side, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(Box3DSide, box3d_side, G_TYPE_OBJECT);
static void box3d_side_class_init(Box3DSideClass *klass)
{
@@ -41,9 +41,9 @@ CBox3DSide::CBox3DSide(Box3DSide* box3dside) : CPolygon(box3dside) {
CBox3DSide::~CBox3DSide() {
}
-static void
-box3d_side_init (Box3DSide * side)
-{
+Box3DSide::Box3DSide() : SPPolygon() {
+ Box3DSide* side = this;
+
side->cbox3dside = new CBox3DSide(side);
side->typeHierarchy.insert(typeid(Box3DSide));
@@ -59,6 +59,12 @@ box3d_side_init (Box3DSide * side)
side->front_or_rear = Box3D::FRONT;
}
+static void
+box3d_side_init (Box3DSide * side)
+{
+ new (side) Box3DSide();
+}
+
void CBox3DSide::build(SPDocument * document, Inkscape::XML::Node * repr) {
Box3DSide* object = this->spbox3dside;
diff --git a/src/box3d-side.h b/src/box3d-side.h
index 7a1d760a2..c674e19db 100644
--- a/src/box3d-side.h
+++ b/src/box3d-side.h
@@ -27,6 +27,7 @@ class CBox3DSide;
// FIXME: Would it be better to inherit from SPPath instead?
class Box3DSide : public SPPolygon {
public:
+ Box3DSide();
CBox3DSide* cbox3dside;
Box3D::Axis dir1;
diff --git a/src/box3d.cpp b/src/box3d.cpp
index f44f1bde3..8f7c20c49 100644
--- a/src/box3d.cpp
+++ b/src/box3d.cpp
@@ -43,7 +43,7 @@ static void box3d_ref_changed(SPObject *old_ref, SPObject *ref, SPBox3D *box);
static gint counter = 0;
-G_DEFINE_TYPE(SPBox3D, box3d, SP_TYPE_GROUP);
+G_DEFINE_TYPE(SPBox3D, box3d, G_TYPE_OBJECT);
static void box3d_class_init(SPBox3DClass *klass)
{
@@ -56,9 +56,9 @@ CBox3D::CBox3D(SPBox3D* box) : CGroup(box) {
CBox3D::~CBox3D() {
}
-static void
-box3d_init(SPBox3D *box)
-{
+SPBox3D::SPBox3D() : SPGroup() {
+ SPBox3D* box = this;
+
box->cbox3d = new CBox3D(box);
box->typeHierarchy.insert(typeid(SPBox3D));
@@ -68,10 +68,19 @@ box3d_init(SPBox3D *box)
box->citem = box->cbox3d;
box->cobject = box->cbox3d;
+ box->my_counter = 0;
+ box->swapped = Box3D::NONE;
+
box->persp_href = NULL;
box->persp_ref = new Persp3DReference(box);
}
+static void
+box3d_init(SPBox3D *box)
+{
+ new (box) SPBox3D();
+}
+
void CBox3D::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPBox3D* object = this->spbox3d;
diff --git a/src/box3d.h b/src/box3d.h
index a854f197f..b3f4f7d87 100644
--- a/src/box3d.h
+++ b/src/box3d.h
@@ -30,6 +30,7 @@ class CBox3D;
class SPBox3D : public SPGroup {
public:
+ SPBox3D();
CBox3D* cbox3d;
gint z_orders[6]; // z_orders[i] holds the ID of the face at position #i in the group (from top to bottom)
diff --git a/src/color-profile.cpp b/src/color-profile.cpp
index ae647944b..63cb3addc 100644
--- a/src/color-profile.cpp
+++ b/src/color-profile.cpp
@@ -199,14 +199,14 @@ GType ColorProfile::getType()
GTypeInfo info = {
sizeof(ColorProfileClass),
NULL, NULL,
- (GClassInitFunc) ColorProfile::classInit,
+ 0, //(GClassInitFunc) ColorProfile::classInit,
NULL, NULL,
sizeof(ColorProfile),
16,
(GInstanceInitFunc) ColorProfile::init,
NULL, /* value_table */
};
- type = g_type_register_static( SP_TYPE_OBJECT, "ColorProfile", &info, static_cast<GTypeFlags>(0) );
+ type = g_type_register_static( G_TYPE_OBJECT, "ColorProfile", &info, static_cast<GTypeFlags>(0) );
}
return type;
}
@@ -228,11 +228,9 @@ CColorProfile::CColorProfile(ColorProfile* cp) : CObject(cp) {
CColorProfile::~CColorProfile() {
}
-/**
- * Callback for ColorProfile object initialization.
- */
-void ColorProfile::init( ColorProfile *cprof )
-{
+ColorProfile::ColorProfile() : SPObject() {
+ ColorProfile* cprof = this;
+
cprof->ccolorprofile = new CColorProfile(cprof);
cprof->typeHierarchy.insert(typeid(ColorProfile));
@@ -249,6 +247,14 @@ void ColorProfile::init( ColorProfile *cprof )
}
/**
+ * Callback for ColorProfile object initialization.
+ */
+void ColorProfile::init( ColorProfile *cprof )
+{
+ new (cprof) ColorProfile();
+}
+
+/**
* Callback: free object
*/
void CColorProfile::release() {
diff --git a/src/color-profile.h b/src/color-profile.h
index ad538721d..22a9aae09 100644
--- a/src/color-profile.h
+++ b/src/color-profile.h
@@ -37,6 +37,7 @@ class CColorProfile;
*/
class ColorProfile : public SPObject {
public:
+ ColorProfile();
CColorProfile* ccolorprofile;
friend cmsHPROFILE colorprofile_get_handle( SPDocument*, guint*, gchar const* );
diff --git a/src/filters/blend.cpp b/src/filters/blend.cpp
index 06678c826..e5159d522 100644
--- a/src/filters/blend.cpp
+++ b/src/filters/blend.cpp
@@ -31,7 +31,7 @@
#include "display/nr-filter-types.h"
/* FeBlend base class */
-G_DEFINE_TYPE(SPFeBlend, sp_feBlend, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeBlend, sp_feBlend, G_TYPE_OBJECT);
static void
sp_feBlend_class_init(SPFeBlendClass *klass)
@@ -45,9 +45,9 @@ CFeBlend::CFeBlend(SPFeBlend* blend) : CFilterPrimitive(blend) {
CFeBlend::~CFeBlend() {
}
-static void
-sp_feBlend_init(SPFeBlend *feBlend)
-{
+SPFeBlend::SPFeBlend() : SPFilterPrimitive() {
+ SPFeBlend* feBlend = this;
+
feBlend->cfeblend = new CFeBlend(feBlend);
feBlend->typeHierarchy.insert(typeid(SPFeBlend));
@@ -55,9 +55,17 @@ sp_feBlend_init(SPFeBlend *feBlend)
feBlend->cfilterprimitive = feBlend->cfeblend;
feBlend->cobject = feBlend->cfeblend;
+ feBlend->blend_mode = Inkscape::Filters::BLEND_NORMAL;
+
feBlend->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
+static void
+sp_feBlend_init(SPFeBlend *feBlend)
+{
+ new (feBlend) SPFeBlend();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeBlend variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/blend.h b/src/filters/blend.h
index d1fbc3c04..6b8e70b2f 100644
--- a/src/filters/blend.h
+++ b/src/filters/blend.h
@@ -24,6 +24,7 @@ class CFeBlend;
class SPFeBlend : public SPFilterPrimitive {
public:
+ SPFeBlend();
CFeBlend* cfeblend;
Inkscape::Filters::FilterBlendMode blend_mode;
diff --git a/src/filters/colormatrix.cpp b/src/filters/colormatrix.cpp
index 8dabf90fc..889913e2e 100644
--- a/src/filters/colormatrix.cpp
+++ b/src/filters/colormatrix.cpp
@@ -30,7 +30,7 @@
#include "display/nr-filter-colormatrix.h"
/* FeColorMatrix base class */
-G_DEFINE_TYPE(SPFeColorMatrix, sp_feColorMatrix, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeColorMatrix, sp_feColorMatrix, G_TYPE_OBJECT);
static void
sp_feColorMatrix_class_init(SPFeColorMatrixClass *klass)
@@ -44,15 +44,24 @@ CFeColorMatrix::CFeColorMatrix(SPFeColorMatrix* matrix) : CFilterPrimitive(matri
CFeColorMatrix::~CFeColorMatrix() {
}
-static void
-sp_feColorMatrix_init(SPFeColorMatrix *feColorMatrix)
-{
+SPFeColorMatrix::SPFeColorMatrix() : SPFilterPrimitive() {
+ SPFeColorMatrix* feColorMatrix = this;
+
feColorMatrix->cfecolormatrix = new CFeColorMatrix(feColorMatrix);
feColorMatrix->typeHierarchy.insert(typeid(SPFeColorMatrix));
delete feColorMatrix->cfilterprimitive;
feColorMatrix->cfilterprimitive = feColorMatrix->cfecolormatrix;
feColorMatrix->cobject = feColorMatrix->cfecolormatrix;
+
+ feColorMatrix->value = 0;
+ feColorMatrix->type = Inkscape::Filters::COLORMATRIX_MATRIX;
+}
+
+static void
+sp_feColorMatrix_init(SPFeColorMatrix *feColorMatrix)
+{
+ new (feColorMatrix) SPFeColorMatrix();
}
/**
diff --git a/src/filters/colormatrix.h b/src/filters/colormatrix.h
index b8cf82757..430cd6fcd 100644
--- a/src/filters/colormatrix.h
+++ b/src/filters/colormatrix.h
@@ -23,6 +23,7 @@ class CFeColorMatrix;
class SPFeColorMatrix : public SPFilterPrimitive {
public:
+ SPFeColorMatrix();
CFeColorMatrix* cfecolormatrix;
Inkscape::Filters::FilterColorMatrixType type;
diff --git a/src/filters/componenttransfer-funcnode.cpp b/src/filters/componenttransfer-funcnode.cpp
index 6d8f4bc66..2b5e3f99d 100644
--- a/src/filters/componenttransfer-funcnode.cpp
+++ b/src/filters/componenttransfer-funcnode.cpp
@@ -46,14 +46,14 @@ sp_fefuncR_get_type()
GTypeInfo fefuncnode_info = {
sizeof(SPFeFuncNodeClass),
NULL, NULL,
- (GClassInitFunc) sp_fefuncnode_class_init,
+ 0,//(GClassInitFunc) sp_fefuncnode_class_init,
NULL, NULL,
sizeof(SPFeFuncNode),
16,
(GInstanceInitFunc) sp_fefuncnode_init,
NULL, /* value_table */
};
- fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncR", &fefuncnode_info, (GTypeFlags)0);
+ fefuncnode_type = g_type_register_static(G_TYPE_OBJECT, "SPFeFuncR", &fefuncnode_info, (GTypeFlags)0);
}
return fefuncnode_type;
}
@@ -67,14 +67,14 @@ sp_fefuncG_get_type()
GTypeInfo fefuncnode_info = {
sizeof(SPFeFuncNodeClass),
NULL, NULL,
- (GClassInitFunc) sp_fefuncnode_class_init,
+ 0,//(GClassInitFunc) sp_fefuncnode_class_init,
NULL, NULL,
sizeof(SPFeFuncNode),
16,
(GInstanceInitFunc) sp_fefuncnode_init,
NULL, /* value_table */
};
- fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncG", &fefuncnode_info, (GTypeFlags)0);
+ fefuncnode_type = g_type_register_static(G_TYPE_OBJECT, "SPFeFuncG", &fefuncnode_info, (GTypeFlags)0);
}
return fefuncnode_type;
}
@@ -88,14 +88,14 @@ sp_fefuncB_get_type()
GTypeInfo fefuncnode_info = {
sizeof(SPFeFuncNodeClass),
NULL, NULL,
- (GClassInitFunc) sp_fefuncnode_class_init,
+ 0,//(GClassInitFunc) sp_fefuncnode_class_init,
NULL, NULL,
sizeof(SPFeFuncNode),
16,
(GInstanceInitFunc) sp_fefuncnode_init,
NULL, /* value_table */
};
- fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncB", &fefuncnode_info, (GTypeFlags)0);
+ fefuncnode_type = g_type_register_static(G_TYPE_OBJECT, "SPFeFuncB", &fefuncnode_info, (GTypeFlags)0);
}
return fefuncnode_type;
}
@@ -109,14 +109,14 @@ sp_fefuncA_get_type()
GTypeInfo fefuncnode_info = {
sizeof(SPFeFuncNodeClass),
NULL, NULL,
- (GClassInitFunc) sp_fefuncnode_class_init,
+ 0,//(GClassInitFunc) sp_fefuncnode_class_init,
NULL, NULL,
sizeof(SPFeFuncNode),
16,
(GInstanceInitFunc) sp_fefuncnode_init,
NULL, /* value_table */
};
- fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncA", &fefuncnode_info, (GTypeFlags)0);
+ fefuncnode_type = g_type_register_static(G_TYPE_OBJECT, "SPFeFuncA", &fefuncnode_info, (GTypeFlags)0);
}
return fefuncnode_type;
}
@@ -136,9 +136,9 @@ CFeFuncNode::CFeFuncNode(SPFeFuncNode* funcnode) : CObject(funcnode) {
CFeFuncNode::~CFeFuncNode() {
}
-static void
-sp_fefuncnode_init(SPFeFuncNode *fefuncnode)
-{
+SPFeFuncNode::SPFeFuncNode() : SPObject() {
+ SPFeFuncNode* fefuncnode = this;
+
fefuncnode->cfefuncnode = new CFeFuncNode(fefuncnode);
fefuncnode->typeHierarchy.insert(typeid(SPFeFuncNode));
@@ -154,6 +154,12 @@ sp_fefuncnode_init(SPFeFuncNode *fefuncnode)
fefuncnode->offset = 0;
}
+static void
+sp_fefuncnode_init(SPFeFuncNode *fefuncnode)
+{
+ new (fefuncnode) SPFeFuncNode();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPDistantLight variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/componenttransfer-funcnode.h b/src/filters/componenttransfer-funcnode.h
index ca9bbf50d..9e358a923 100644
--- a/src/filters/componenttransfer-funcnode.h
+++ b/src/filters/componenttransfer-funcnode.h
@@ -40,6 +40,7 @@ class CFeFuncNode;
class SPFeFuncNode : public SPObject {
public:
+ SPFeFuncNode();
CFeFuncNode* cfefuncnode;
Inkscape::Filters::FilterComponentTransferType type;
diff --git a/src/filters/componenttransfer.cpp b/src/filters/componenttransfer.cpp
index 6ab1e5d12..ec1cdb641 100644
--- a/src/filters/componenttransfer.cpp
+++ b/src/filters/componenttransfer.cpp
@@ -28,7 +28,7 @@
#include "display/nr-filter-component-transfer.h"
/* FeComponentTransfer base class */
-G_DEFINE_TYPE(SPFeComponentTransfer, sp_feComponentTransfer, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeComponentTransfer, sp_feComponentTransfer, G_TYPE_OBJECT);
static void
sp_feComponentTransfer_class_init(SPFeComponentTransferClass *klass)
@@ -42,15 +42,23 @@ CFeComponentTransfer::CFeComponentTransfer(SPFeComponentTransfer* tr) : CFilterP
CFeComponentTransfer::~CFeComponentTransfer() {
}
-static void
-sp_feComponentTransfer_init(SPFeComponentTransfer *feComponentTransfer)
-{
+SPFeComponentTransfer::SPFeComponentTransfer() : SPFilterPrimitive() {
+ SPFeComponentTransfer* feComponentTransfer = this;
+
feComponentTransfer->cfecomponenttransfer = new CFeComponentTransfer(feComponentTransfer);
feComponentTransfer->typeHierarchy.insert(typeid(SPFeComponentTransfer));
delete feComponentTransfer->cfilterprimitive;
feComponentTransfer->cfilterprimitive = feComponentTransfer->cfecomponenttransfer;
feComponentTransfer->cobject = feComponentTransfer->cfecomponenttransfer;
+
+ feComponentTransfer->renderer = NULL;
+}
+
+static void
+sp_feComponentTransfer_init(SPFeComponentTransfer *feComponentTransfer)
+{
+ new (feComponentTransfer) SPFeComponentTransfer();
}
/**
diff --git a/src/filters/componenttransfer.h b/src/filters/componenttransfer.h
index bb3ccb96c..bf1d19e9b 100644
--- a/src/filters/componenttransfer.h
+++ b/src/filters/componenttransfer.h
@@ -26,6 +26,7 @@ class CFeComponentTransfer;
class SPFeComponentTransfer : public SPFilterPrimitive {
public:
+ SPFeComponentTransfer();
CFeComponentTransfer* cfecomponenttransfer;
Inkscape::Filters::FilterComponentTransfer *renderer;
diff --git a/src/filters/composite.cpp b/src/filters/composite.cpp
index e09b92d15..cddcc86bd 100644
--- a/src/filters/composite.cpp
+++ b/src/filters/composite.cpp
@@ -26,7 +26,7 @@
#include "sp-filter.h"
/* FeComposite base class */
-G_DEFINE_TYPE(SPFeComposite, sp_feComposite, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeComposite, sp_feComposite, G_TYPE_OBJECT);
static void
sp_feComposite_class_init(SPFeCompositeClass *klass)
@@ -40,9 +40,9 @@ CFeComposite::CFeComposite(SPFeComposite* comp) : CFilterPrimitive(comp) {
CFeComposite::~CFeComposite() {
}
-static void
-sp_feComposite_init(SPFeComposite *feComposite)
-{
+SPFeComposite::SPFeComposite() : SPFilterPrimitive() {
+ SPFeComposite* feComposite = this;
+
feComposite->cfecomposite = new CFeComposite(feComposite);
feComposite->typeHierarchy.insert(typeid(SPFeComposite));
@@ -58,6 +58,12 @@ sp_feComposite_init(SPFeComposite *feComposite)
feComposite->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
+static void
+sp_feComposite_init(SPFeComposite *feComposite)
+{
+ new (feComposite) SPFeComposite();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeComposite variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/composite.h b/src/filters/composite.h
index 6a3ea8abc..5b0ad80b7 100644
--- a/src/filters/composite.h
+++ b/src/filters/composite.h
@@ -34,6 +34,7 @@ class CFeComposite;
class SPFeComposite : public SPFilterPrimitive {
public:
+ SPFeComposite();
CFeComposite* cfecomposite;
FeCompositeOperator composite_operator;
diff --git a/src/filters/convolvematrix.cpp b/src/filters/convolvematrix.cpp
index b3db5fa8c..174c74288 100644
--- a/src/filters/convolvematrix.cpp
+++ b/src/filters/convolvematrix.cpp
@@ -29,7 +29,7 @@
#include "display/nr-filter-convolve-matrix.h"
/* FeConvolveMatrix base class */
-G_DEFINE_TYPE(SPFeConvolveMatrix, sp_feConvolveMatrix, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeConvolveMatrix, sp_feConvolveMatrix, G_TYPE_OBJECT);
static void
sp_feConvolveMatrix_class_init(SPFeConvolveMatrixClass *klass)
@@ -43,9 +43,9 @@ CFeConvolveMatrix::CFeConvolveMatrix(SPFeConvolveMatrix* matrix) : CFilterPrimit
CFeConvolveMatrix::~CFeConvolveMatrix() {
}
-static void
-sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix)
-{
+SPFeConvolveMatrix::SPFeConvolveMatrix() : SPFilterPrimitive() {
+ SPFeConvolveMatrix* feConvolveMatrix = this;
+
feConvolveMatrix->cfeconvolvematrix = new CFeConvolveMatrix(feConvolveMatrix);
feConvolveMatrix->typeHierarchy.insert(typeid(SPFeConvolveMatrix));
@@ -53,6 +53,10 @@ sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix)
feConvolveMatrix->cfilterprimitive = feConvolveMatrix->cfeconvolvematrix;
feConvolveMatrix->cobject = feConvolveMatrix->cfeconvolvematrix;
+ feConvolveMatrix->bias = 0;
+ feConvolveMatrix->divisorIsSet = 0;
+ feConvolveMatrix->divisor = 0;
+
//Setting default values:
feConvolveMatrix->order.set("3 3");
feConvolveMatrix->targetX = 1;
@@ -66,6 +70,12 @@ sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix)
feConvolveMatrix->kernelMatrixIsSet = false;
}
+static void
+sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix)
+{
+ new (feConvolveMatrix) SPFeConvolveMatrix();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeConvolveMatrix variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/convolvematrix.h b/src/filters/convolvematrix.h
index 0f2c6110d..65f56f15d 100644
--- a/src/filters/convolvematrix.h
+++ b/src/filters/convolvematrix.h
@@ -26,6 +26,7 @@ class CFeConvolveMatrix;
class SPFeConvolveMatrix : public SPFilterPrimitive {
public:
+ SPFeConvolveMatrix();
CFeConvolveMatrix* cfeconvolvematrix;
NumberOptNumber order;
diff --git a/src/filters/diffuselighting.cpp b/src/filters/diffuselighting.cpp
index 3c6268266..b53451f73 100644
--- a/src/filters/diffuselighting.cpp
+++ b/src/filters/diffuselighting.cpp
@@ -36,7 +36,7 @@
/* FeDiffuseLighting base class */
static void sp_feDiffuseLighting_children_modified(SPFeDiffuseLighting *sp_diffuselighting);
-G_DEFINE_TYPE(SPFeDiffuseLighting, sp_feDiffuseLighting, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeDiffuseLighting, sp_feDiffuseLighting, G_TYPE_OBJECT);
static void
sp_feDiffuseLighting_class_init(SPFeDiffuseLightingClass *klass)
@@ -50,9 +50,9 @@ CFeDiffuseLighting::CFeDiffuseLighting(SPFeDiffuseLighting* dl) : CFilterPrimiti
CFeDiffuseLighting::~CFeDiffuseLighting() {
}
-static void
-sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting)
-{
+SPFeDiffuseLighting::SPFeDiffuseLighting() : SPFilterPrimitive() {
+ SPFeDiffuseLighting* feDiffuseLighting = this;
+
feDiffuseLighting->cfediffuselighting = new CFeDiffuseLighting(feDiffuseLighting);
feDiffuseLighting->typeHierarchy.insert(typeid(SPFeDiffuseLighting));
@@ -73,6 +73,12 @@ sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting)
feDiffuseLighting->lighting_color_set = FALSE;
}
+static void
+sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting)
+{
+ new (feDiffuseLighting) SPFeDiffuseLighting();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeDiffuseLighting variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/diffuselighting.h b/src/filters/diffuselighting.h
index 524c2b780..9f23aba08 100644
--- a/src/filters/diffuselighting.h
+++ b/src/filters/diffuselighting.h
@@ -30,6 +30,7 @@ class CFeDiffuseLighting;
class SPFeDiffuseLighting : public SPFilterPrimitive {
public:
+ SPFeDiffuseLighting();
CFeDiffuseLighting* cfediffuselighting;
gfloat surfaceScale;
diff --git a/src/filters/displacementmap.cpp b/src/filters/displacementmap.cpp
index 2985647cf..79431c251 100644
--- a/src/filters/displacementmap.cpp
+++ b/src/filters/displacementmap.cpp
@@ -26,7 +26,7 @@
#include "display/nr-filter-displacement-map.h"
/* FeDisplacementMap base class */
-G_DEFINE_TYPE(SPFeDisplacementMap, sp_feDisplacementMap, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeDisplacementMap, sp_feDisplacementMap, G_TYPE_OBJECT);
static void
sp_feDisplacementMap_class_init(SPFeDisplacementMapClass *klass)
@@ -40,9 +40,9 @@ CFeDisplacementMap::CFeDisplacementMap(SPFeDisplacementMap* map) : CFilterPrimit
CFeDisplacementMap::~CFeDisplacementMap() {
}
-static void
-sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap)
-{
+SPFeDisplacementMap::SPFeDisplacementMap() : SPFilterPrimitive() {
+ SPFeDisplacementMap* feDisplacementMap = this;
+
feDisplacementMap->cfedisplacementmap = new CFeDisplacementMap(feDisplacementMap);
feDisplacementMap->typeHierarchy.insert(typeid(SPFeDisplacementMap));
@@ -56,6 +56,12 @@ sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap)
feDisplacementMap->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
+static void
+sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap)
+{
+ new (feDisplacementMap) SPFeDisplacementMap();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeDisplacementMap variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/displacementmap.h b/src/filters/displacementmap.h
index 3a5317354..4e0111179 100644
--- a/src/filters/displacementmap.h
+++ b/src/filters/displacementmap.h
@@ -30,6 +30,7 @@ class CFeDisplacementMap;
class SPFeDisplacementMap : public SPFilterPrimitive {
public:
+ SPFeDisplacementMap();
CFeDisplacementMap* cfedisplacementmap;
int in2;
diff --git a/src/filters/distantlight.cpp b/src/filters/distantlight.cpp
index 90f7dcf89..541b19cec 100644
--- a/src/filters/distantlight.cpp
+++ b/src/filters/distantlight.cpp
@@ -29,7 +29,7 @@
#define SP_MACROS_SILENT
#include "macros.h"
-G_DEFINE_TYPE(SPFeDistantLight, sp_fedistantlight, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFeDistantLight, sp_fedistantlight, G_TYPE_OBJECT);
static void
sp_fedistantlight_class_init(SPFeDistantLightClass *klass)
@@ -43,9 +43,9 @@ CFeDistantLight::CFeDistantLight(SPFeDistantLight* distantlight) : CObject(dista
CFeDistantLight::~CFeDistantLight() {
}
-static void
-sp_fedistantlight_init(SPFeDistantLight *fedistantlight)
-{
+SPFeDistantLight::SPFeDistantLight() : SPObject() {
+ SPFeDistantLight* fedistantlight = this;
+
fedistantlight->cfedistantlight = new CFeDistantLight(fedistantlight);
fedistantlight->typeHierarchy.insert(typeid(SPFeDistantLight));
@@ -58,6 +58,12 @@ sp_fedistantlight_init(SPFeDistantLight *fedistantlight)
fedistantlight->elevation_set = FALSE;
}
+static void
+sp_fedistantlight_init(SPFeDistantLight *fedistantlight)
+{
+ new (fedistantlight) SPFeDistantLight();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPDistantLight variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/distantlight.h b/src/filters/distantlight.h
index c11ffed5b..d8d2fae17 100644
--- a/src/filters/distantlight.h
+++ b/src/filters/distantlight.h
@@ -27,6 +27,7 @@ class CFeDistantLight;
class SPFeDistantLight : public SPObject {
public:
+ SPFeDistantLight();
CFeDistantLight* cfedistantlight;
/** azimuth attribute */
diff --git a/src/filters/flood.cpp b/src/filters/flood.cpp
index 58c1dd7e6..7d8df14fb 100644
--- a/src/filters/flood.cpp
+++ b/src/filters/flood.cpp
@@ -28,7 +28,7 @@
#include "display/nr-filter-flood.h"
/* FeFlood base class */
-G_DEFINE_TYPE(SPFeFlood, sp_feFlood, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeFlood, sp_feFlood, G_TYPE_OBJECT);
static void sp_feFlood_class_init(SPFeFloodClass *klass)
{
@@ -41,8 +41,9 @@ CFeFlood::CFeFlood(SPFeFlood* flood) : CFilterPrimitive(flood) {
CFeFlood::~CFeFlood() {
}
-static void sp_feFlood_init(SPFeFlood *feFlood)
-{
+SPFeFlood::SPFeFlood() : SPFilterPrimitive() {
+ SPFeFlood* feFlood = this;
+
feFlood->cfeflood = new CFeFlood(feFlood);
feFlood->typeHierarchy.insert(typeid(SPFeFlood));
@@ -50,10 +51,17 @@ static void sp_feFlood_init(SPFeFlood *feFlood)
feFlood->cfilterprimitive = feFlood->cfeflood;
feFlood->cobject = feFlood->cfeflood;
+ feFlood->color = 0;
+
feFlood->opacity = 1;
feFlood->icc = NULL;
}
+static void sp_feFlood_init(SPFeFlood *feFlood)
+{
+ new (feFlood) SPFeFlood();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeFlood variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/flood.h b/src/filters/flood.h
index baef69a3a..1c66da3c7 100644
--- a/src/filters/flood.h
+++ b/src/filters/flood.h
@@ -25,6 +25,7 @@ class CFeFlood;
class SPFeFlood : public SPFilterPrimitive {
public:
+ SPFeFlood();
CFeFlood* cfeflood;
guint32 color;
diff --git a/src/filters/gaussian-blur.cpp b/src/filters/gaussian-blur.cpp
index 61f7dfdc3..643b695e6 100644
--- a/src/filters/gaussian-blur.cpp
+++ b/src/filters/gaussian-blur.cpp
@@ -31,7 +31,7 @@
//#include "macros.h"
/* GaussianBlur base class */
-G_DEFINE_TYPE(SPGaussianBlur, sp_gaussianBlur, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPGaussianBlur, sp_gaussianBlur, G_TYPE_OBJECT);
static void
sp_gaussianBlur_class_init(SPGaussianBlurClass *klass)
@@ -45,9 +45,9 @@ CGaussianBlur::CGaussianBlur(SPGaussianBlur* gb) : CFilterPrimitive(gb) {
CGaussianBlur::~CGaussianBlur() {
}
-static void
-sp_gaussianBlur_init(SPGaussianBlur *gaussianBlur)
-{
+SPGaussianBlur::SPGaussianBlur() : SPFilterPrimitive() {
+ SPGaussianBlur* gaussianBlur = this;
+
gaussianBlur->cgaussianblur = new CGaussianBlur(gaussianBlur);
gaussianBlur->typeHierarchy.insert(typeid(SPGaussianBlur));
@@ -56,6 +56,12 @@ sp_gaussianBlur_init(SPGaussianBlur *gaussianBlur)
gaussianBlur->cobject = gaussianBlur->cgaussianblur;
}
+static void
+sp_gaussianBlur_init(SPGaussianBlur *gaussianBlur)
+{
+ new (gaussianBlur) SPGaussianBlur();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPGaussianBlur variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/gaussian-blur.h b/src/filters/gaussian-blur.h
index a13ba0e99..b5093a5bd 100644
--- a/src/filters/gaussian-blur.h
+++ b/src/filters/gaussian-blur.h
@@ -23,6 +23,7 @@ class CGaussianBlur;
class SPGaussianBlur : public SPFilterPrimitive {
public:
+ SPGaussianBlur();
CGaussianBlur* cgaussianblur;
/** stdDeviation attribute */
diff --git a/src/filters/image.cpp b/src/filters/image.cpp
index 840f51eed..6c8af9c01 100644
--- a/src/filters/image.cpp
+++ b/src/filters/image.cpp
@@ -30,7 +30,7 @@
#include "display/nr-filter.h"
/* FeImage base class */
-G_DEFINE_TYPE(SPFeImage, sp_feImage, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeImage, sp_feImage, G_TYPE_OBJECT);
static void sp_feImage_class_init(SPFeImageClass *klass)
{
@@ -43,8 +43,9 @@ CFeImage::CFeImage(SPFeImage* image) : CFilterPrimitive(image) {
CFeImage::~CFeImage() {
}
-static void sp_feImage_init(SPFeImage *feImage)
-{
+SPFeImage::SPFeImage() : SPFilterPrimitive() {
+ SPFeImage* feImage = this;
+
feImage->cfeimage = new CFeImage(feImage);
feImage->typeHierarchy.insert(typeid(SPFeImage));
@@ -52,10 +53,21 @@ static void sp_feImage_init(SPFeImage *feImage)
feImage->cfilterprimitive = feImage->cfeimage;
feImage->cobject = feImage->cfeimage;
+ feImage->document = NULL;
+ feImage->href = NULL;
+ feImage->from_element = 0;
+ feImage->SVGElemRef = NULL;
+ feImage->SVGElem = NULL;
+
feImage->aspect_align = SP_ASPECT_XMID_YMID; // Default
feImage->aspect_clip = SP_ASPECT_MEET; // Default
}
+static void sp_feImage_init(SPFeImage *feImage)
+{
+ new (feImage) SPFeImage();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeImage variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/image.h b/src/filters/image.h
index 3618ac678..1faa6a8af 100644
--- a/src/filters/image.h
+++ b/src/filters/image.h
@@ -26,6 +26,7 @@ class CFeImage;
class SPFeImage : public SPFilterPrimitive {
public:
+ SPFeImage();
CFeImage* cfeimage;
gchar *href;
diff --git a/src/filters/merge.cpp b/src/filters/merge.cpp
index b49ad4850..01fb4bb72 100644
--- a/src/filters/merge.cpp
+++ b/src/filters/merge.cpp
@@ -25,7 +25,7 @@
#include "display/nr-filter-merge.h"
/* FeMerge base class */
-G_DEFINE_TYPE(SPFeMerge, sp_feMerge, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeMerge, sp_feMerge, G_TYPE_OBJECT);
static void
sp_feMerge_class_init(SPFeMergeClass *klass)
@@ -39,9 +39,9 @@ CFeMerge::CFeMerge(SPFeMerge* merge) : CFilterPrimitive(merge) {
CFeMerge::~CFeMerge() {
}
-static void
-sp_feMerge_init(SPFeMerge *feMerge)
-{
+SPFeMerge::SPFeMerge() : SPFilterPrimitive() {
+ SPFeMerge* feMerge = this;
+
feMerge->cfemerge = new CFeMerge(feMerge);
feMerge->typeHierarchy.insert(typeid(SPFeMerge));
@@ -50,6 +50,12 @@ sp_feMerge_init(SPFeMerge *feMerge)
feMerge->cobject = feMerge->cfemerge;
}
+static void
+sp_feMerge_init(SPFeMerge *feMerge)
+{
+ new (feMerge) SPFeMerge();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeMerge variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/merge.h b/src/filters/merge.h
index 574e5fc4a..8a662297a 100644
--- a/src/filters/merge.h
+++ b/src/filters/merge.h
@@ -20,6 +20,7 @@ class CFeMerge;
class SPFeMerge : public SPFilterPrimitive {
public:
+ SPFeMerge();
CFeMerge* cfemerge;
};
diff --git a/src/filters/mergenode.cpp b/src/filters/mergenode.cpp
index c91e69019..c1c5c6067 100644
--- a/src/filters/mergenode.cpp
+++ b/src/filters/mergenode.cpp
@@ -23,7 +23,7 @@
#include "filters/merge.h"
#include "display/nr-filter-types.h"
-G_DEFINE_TYPE(SPFeMergeNode, sp_feMergeNode, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFeMergeNode, sp_feMergeNode, G_TYPE_OBJECT);
static void
sp_feMergeNode_class_init(SPFeMergeNodeClass *klass)
@@ -37,9 +37,9 @@ CFeMergeNode::CFeMergeNode(SPFeMergeNode* mergenode) : CObject(mergenode) {
CFeMergeNode::~CFeMergeNode() {
}
-static void
-sp_feMergeNode_init(SPFeMergeNode *feMergeNode)
-{
+SPFeMergeNode::SPFeMergeNode() : SPObject() {
+ SPFeMergeNode* feMergeNode = this;
+
feMergeNode->cfemergenode = new CFeMergeNode(feMergeNode);
feMergeNode->typeHierarchy.insert(typeid(SPFeMergeNode));
@@ -49,6 +49,12 @@ sp_feMergeNode_init(SPFeMergeNode *feMergeNode)
feMergeNode->input = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
+static void
+sp_feMergeNode_init(SPFeMergeNode *feMergeNode)
+{
+ new (feMergeNode) SPFeMergeNode();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeMergeNode variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/mergenode.h b/src/filters/mergenode.h
index eecf74fb1..758891155 100644
--- a/src/filters/mergenode.h
+++ b/src/filters/mergenode.h
@@ -25,6 +25,7 @@ class CFeMergeNode;
class SPFeMergeNode : public SPObject {
public:
+ SPFeMergeNode();
CFeMergeNode* cfemergenode;
int input;
diff --git a/src/filters/morphology.cpp b/src/filters/morphology.cpp
index e35406833..87d7dafdc 100644
--- a/src/filters/morphology.cpp
+++ b/src/filters/morphology.cpp
@@ -27,7 +27,7 @@
#include "display/nr-filter-morphology.h"
/* FeMorphology base class */
-G_DEFINE_TYPE(SPFeMorphology, sp_feMorphology, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeMorphology, sp_feMorphology, G_TYPE_OBJECT);
static void
sp_feMorphology_class_init(SPFeMorphologyClass *klass)
@@ -41,9 +41,9 @@ CFeMorphology::CFeMorphology(SPFeMorphology* morph) : CFilterPrimitive(morph) {
CFeMorphology::~CFeMorphology() {
}
-static void
-sp_feMorphology_init(SPFeMorphology *feMorphology)
-{
+SPFeMorphology::SPFeMorphology() : SPFilterPrimitive() {
+ SPFeMorphology* feMorphology = this;
+
feMorphology->cfemorphology = new CFeMorphology(feMorphology);
feMorphology->typeHierarchy.insert(typeid(SPFeMorphology));
@@ -51,10 +51,18 @@ sp_feMorphology_init(SPFeMorphology *feMorphology)
feMorphology->cfilterprimitive = feMorphology->cfemorphology;
feMorphology->cobject = feMorphology->cfemorphology;
+ feMorphology->Operator = Inkscape::Filters::MORPHOLOGY_OPERATOR_ERODE;
+
//Setting default values:
feMorphology->radius.set("0");
}
+static void
+sp_feMorphology_init(SPFeMorphology *feMorphology)
+{
+ new (feMorphology) SPFeMorphology();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeMorphology variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/morphology.h b/src/filters/morphology.h
index 8f571fdba..4bec4c2c6 100644
--- a/src/filters/morphology.h
+++ b/src/filters/morphology.h
@@ -24,6 +24,7 @@ class CFeMorphology;
class SPFeMorphology : public SPFilterPrimitive {
public:
+ SPFeMorphology();
CFeMorphology* cfemorphology;
Inkscape::Filters::FilterMorphologyOperator Operator;
diff --git a/src/filters/offset.cpp b/src/filters/offset.cpp
index 542bfb244..26607e590 100644
--- a/src/filters/offset.cpp
+++ b/src/filters/offset.cpp
@@ -26,7 +26,7 @@
#include "display/nr-filter-offset.h"
/* FeOffset base class */
-G_DEFINE_TYPE(SPFeOffset, sp_feOffset, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeOffset, sp_feOffset, G_TYPE_OBJECT);
static void
sp_feOffset_class_init(SPFeOffsetClass *klass)
@@ -40,9 +40,9 @@ CFeOffset::CFeOffset(SPFeOffset* offset) : CFilterPrimitive(offset) {
CFeOffset::~CFeOffset() {
}
-static void
-sp_feOffset_init(SPFeOffset *feOffset)
-{
+SPFeOffset::SPFeOffset() : SPFilterPrimitive() {
+ SPFeOffset* feOffset = this;
+
feOffset->cfeoffset = new CFeOffset(feOffset);
feOffset->typeHierarchy.insert(typeid(SPFeOffset));
@@ -54,6 +54,12 @@ sp_feOffset_init(SPFeOffset *feOffset)
feOffset->dy = 0;
}
+static void
+sp_feOffset_init(SPFeOffset *feOffset)
+{
+ new (feOffset) SPFeOffset();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeOffset variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/offset.h b/src/filters/offset.h
index 7fc3083f8..a34be41cf 100644
--- a/src/filters/offset.h
+++ b/src/filters/offset.h
@@ -22,6 +22,7 @@ class CFeOffset;
class SPFeOffset : public SPFilterPrimitive {
public:
+ SPFeOffset();
CFeOffset* cfeoffset;
double dx, dy;
diff --git a/src/filters/pointlight.cpp b/src/filters/pointlight.cpp
index e39c4811c..749a4c82b 100644
--- a/src/filters/pointlight.cpp
+++ b/src/filters/pointlight.cpp
@@ -29,7 +29,7 @@
#define SP_MACROS_SILENT
#include "macros.h"
-G_DEFINE_TYPE(SPFePointLight, sp_fepointlight, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFePointLight, sp_fepointlight, G_TYPE_OBJECT);
static void
sp_fepointlight_class_init(SPFePointLightClass *klass)
@@ -43,9 +43,9 @@ CFePointLight::CFePointLight(SPFePointLight* pointlight) : CObject(pointlight) {
CFePointLight::~CFePointLight() {
}
-static void
-sp_fepointlight_init(SPFePointLight *fepointlight)
-{
+SPFePointLight::SPFePointLight() : SPObject() {
+ SPFePointLight* fepointlight = this;
+
fepointlight->cfepointlight = new CFePointLight(fepointlight);
fepointlight->typeHierarchy.insert(typeid(SPFePointLight));
@@ -61,6 +61,12 @@ sp_fepointlight_init(SPFePointLight *fepointlight)
fepointlight->z_set = FALSE;
}
+static void
+sp_fepointlight_init(SPFePointLight *fepointlight)
+{
+ new (fepointlight) SPFePointLight();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPPointLight variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/pointlight.h b/src/filters/pointlight.h
index 8082aec45..f749722d6 100644
--- a/src/filters/pointlight.h
+++ b/src/filters/pointlight.h
@@ -25,6 +25,7 @@ class CFePointLight;
class SPFePointLight : public SPObject {
public:
+ SPFePointLight();
CFePointLight* cfepointlight;
/** x coordinate of the light source */
diff --git a/src/filters/specularlighting.cpp b/src/filters/specularlighting.cpp
index 97c905d51..4b8fe96b6 100644
--- a/src/filters/specularlighting.cpp
+++ b/src/filters/specularlighting.cpp
@@ -36,7 +36,7 @@
/* FeSpecularLighting base class */
static void sp_feSpecularLighting_children_modified(SPFeSpecularLighting *sp_specularlighting);
-G_DEFINE_TYPE(SPFeSpecularLighting, sp_feSpecularLighting, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeSpecularLighting, sp_feSpecularLighting, G_TYPE_OBJECT);
static void
sp_feSpecularLighting_class_init(SPFeSpecularLightingClass *klass)
@@ -50,9 +50,9 @@ CFeSpecularLighting::CFeSpecularLighting(SPFeSpecularLighting* lighting) : CFilt
CFeSpecularLighting::~CFeSpecularLighting() {
}
-static void
-sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting)
-{
+SPFeSpecularLighting::SPFeSpecularLighting() : SPFilterPrimitive() {
+ SPFeSpecularLighting* feSpecularLighting = this;
+
feSpecularLighting->cfespecularlighting = new CFeSpecularLighting(feSpecularLighting);
feSpecularLighting->typeHierarchy.insert(typeid(SPFeSpecularLighting));
@@ -75,6 +75,12 @@ sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting)
feSpecularLighting->lighting_color_set = FALSE;
}
+static void
+sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting)
+{
+ new (feSpecularLighting) SPFeSpecularLighting();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeSpecularLighting variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/specularlighting.h b/src/filters/specularlighting.h
index 9a0917bbf..a6ce37ca4 100644
--- a/src/filters/specularlighting.h
+++ b/src/filters/specularlighting.h
@@ -33,6 +33,7 @@ class CFeSpecularLighting;
class SPFeSpecularLighting : public SPFilterPrimitive {
public:
+ SPFeSpecularLighting();
CFeSpecularLighting* cfespecularlighting;
gfloat surfaceScale;
diff --git a/src/filters/spotlight.cpp b/src/filters/spotlight.cpp
index cb6dc17e7..a1cff9db9 100644
--- a/src/filters/spotlight.cpp
+++ b/src/filters/spotlight.cpp
@@ -29,7 +29,7 @@
#define SP_MACROS_SILENT
#include "macros.h"
-G_DEFINE_TYPE(SPFeSpotLight, sp_fespotlight, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFeSpotLight, sp_fespotlight, G_TYPE_OBJECT);
static void
sp_fespotlight_class_init(SPFeSpotLightClass *klass)
@@ -43,9 +43,9 @@ CFeSpotLight::CFeSpotLight(SPFeSpotLight* spotlight) : CObject(spotlight) {
CFeSpotLight::~CFeSpotLight() {
}
-static void
-sp_fespotlight_init(SPFeSpotLight *fespotlight)
-{
+SPFeSpotLight::SPFeSpotLight() : SPObject() {
+ SPFeSpotLight* fespotlight = this;
+
fespotlight->cfespotlight = new CFeSpotLight(fespotlight);
fespotlight->typeHierarchy.insert(typeid(SPFeSpotLight));
@@ -71,6 +71,12 @@ sp_fespotlight_init(SPFeSpotLight *fespotlight)
fespotlight->limitingConeAngle_set = FALSE;
}
+static void
+sp_fespotlight_init(SPFeSpotLight *fespotlight)
+{
+ new (fespotlight) SPFeSpotLight();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPPointLight variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/spotlight.h b/src/filters/spotlight.h
index 17f84f3c2..6849c8e82 100644
--- a/src/filters/spotlight.h
+++ b/src/filters/spotlight.h
@@ -25,6 +25,7 @@ class CFeSpotLight;
class SPFeSpotLight : public SPObject {
public:
+ SPFeSpotLight();
CFeSpotLight* cfespotlight;
/** x coordinate of the light source */
diff --git a/src/filters/tile.cpp b/src/filters/tile.cpp
index 31e2342c3..8aefc14c6 100644
--- a/src/filters/tile.cpp
+++ b/src/filters/tile.cpp
@@ -23,7 +23,7 @@
#include "display/nr-filter-tile.h"
/* FeTile base class */
-G_DEFINE_TYPE(SPFeTile, sp_feTile, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeTile, sp_feTile, G_TYPE_OBJECT);
static void
sp_feTile_class_init(SPFeTileClass *klass)
@@ -37,9 +37,9 @@ CFeTile::CFeTile(SPFeTile* tile) : CFilterPrimitive(tile) {
CFeTile::~CFeTile() {
}
-static void
-sp_feTile_init(SPFeTile *feTile)
-{
+SPFeTile::SPFeTile() : SPFilterPrimitive() {
+ SPFeTile* feTile = this;
+
feTile->cfetile = new CFeTile(feTile);
feTile->typeHierarchy.insert(typeid(SPFeTile));
@@ -48,6 +48,12 @@ sp_feTile_init(SPFeTile *feTile)
feTile->cobject = feTile->cfetile;
}
+static void
+sp_feTile_init(SPFeTile *feTile)
+{
+ new (feTile) SPFeTile();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeTile variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/tile.h b/src/filters/tile.h
index 36c547d9c..b16acbeae 100644
--- a/src/filters/tile.h
+++ b/src/filters/tile.h
@@ -23,6 +23,7 @@ class CFeTile;
class SPFeTile : public SPFilterPrimitive {
public:
+ SPFeTile();
CFeTile* cfetile;
};
diff --git a/src/filters/turbulence.cpp b/src/filters/turbulence.cpp
index 74194ba24..758322b9f 100644
--- a/src/filters/turbulence.cpp
+++ b/src/filters/turbulence.cpp
@@ -29,7 +29,7 @@
#include "display/nr-filter-turbulence.h"
/* FeTurbulence base class */
-G_DEFINE_TYPE(SPFeTurbulence, sp_feTurbulence, SP_TYPE_FILTER_PRIMITIVE);
+G_DEFINE_TYPE(SPFeTurbulence, sp_feTurbulence, G_TYPE_OBJECT);
static void
sp_feTurbulence_class_init(SPFeTurbulenceClass *klass)
@@ -43,9 +43,9 @@ CFeTurbulence::CFeTurbulence(SPFeTurbulence* turb) : CFilterPrimitive(turb) {
CFeTurbulence::~CFeTurbulence() {
}
-static void
-sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
-{
+SPFeTurbulence::SPFeTurbulence() : SPFilterPrimitive() {
+ SPFeTurbulence* feTurbulence = this;
+
feTurbulence->cfeturbulence = new CFeTurbulence(feTurbulence);
feTurbulence->typeHierarchy.insert(typeid(SPFeTurbulence));
@@ -53,9 +53,20 @@ sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
feTurbulence->cfilterprimitive = feTurbulence->cfeturbulence;
feTurbulence->cobject = feTurbulence->cfeturbulence;
+ feTurbulence->stitchTiles = 0;
+ feTurbulence->seed = 0;
+ feTurbulence->numOctaves = 0;
+ feTurbulence->type = Inkscape::Filters::TURBULENCE_FRACTALNOISE;
+
feTurbulence->updated=false;
}
+static void
+sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
+{
+ new (feTurbulence) SPFeTurbulence();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFeTurbulence variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/filters/turbulence.h b/src/filters/turbulence.h
index 0e01ae52c..be6736f76 100644
--- a/src/filters/turbulence.h
+++ b/src/filters/turbulence.h
@@ -27,6 +27,7 @@ class CFeTurbulence;
class SPFeTurbulence : public SPFilterPrimitive {
public:
+ SPFeTurbulence();
CFeTurbulence* cfeturbulence;
/** TURBULENCE ATTRIBUTES HERE */
diff --git a/src/live_effects/lpeobject.cpp b/src/live_effects/lpeobject.cpp
index d404b9743..15a8a26b6 100644
--- a/src/live_effects/lpeobject.cpp
+++ b/src/live_effects/lpeobject.cpp
@@ -35,14 +35,14 @@ LivePathEffectObject::livepatheffect_get_type ()
GTypeInfo livepatheffect_info = {
sizeof (LivePathEffectObjectClass),
NULL, NULL,
- (GClassInitFunc) LivePathEffectObject::livepatheffect_class_init,
+ 0,//(GClassInitFunc) LivePathEffectObject::livepatheffect_class_init,
NULL, NULL,
sizeof (LivePathEffectObject),
16,
(GInstanceInitFunc) LivePathEffectObject::livepatheffect_init,
NULL,
};
- livepatheffect_type = g_type_register_static (SP_TYPE_OBJECT, "LivePathEffectObject", &livepatheffect_info, (GTypeFlags)0);
+ livepatheffect_type = g_type_register_static (G_TYPE_OBJECT, "LivePathEffectObject", &livepatheffect_info, (GTypeFlags)0);
}
return livepatheffect_type;
}
@@ -74,12 +74,9 @@ CLivePathEffectObject::CLivePathEffectObject(LivePathEffectObject* lpeo) : CObje
CLivePathEffectObject::~CLivePathEffectObject() {
}
-/**
- * Callback to initialize livepatheffect object.
- */
-void
-LivePathEffectObject::livepatheffect_init(LivePathEffectObject *lpeobj)
-{
+LivePathEffectObject::LivePathEffectObject() : SPObject() {
+ LivePathEffectObject* lpeobj = this;
+
#ifdef LIVEPATHEFFECT_VERBOSE
g_message("Init livepatheffectobject");
#endif
@@ -97,6 +94,15 @@ LivePathEffectObject::livepatheffect_init(LivePathEffectObject *lpeobj)
}
/**
+ * Callback to initialize livepatheffect object.
+ */
+void
+LivePathEffectObject::livepatheffect_init(LivePathEffectObject *lpeobj)
+{
+ new (lpeobj) LivePathEffectObject();
+}
+
+/**
* Virtual build: set livepatheffect attributes from its associated XML node.
*/
void CLivePathEffectObject::build(SPDocument *document, Inkscape::XML::Node *repr) {
diff --git a/src/live_effects/lpeobject.h b/src/live_effects/lpeobject.h
index 02513d258..02d3344f5 100644
--- a/src/live_effects/lpeobject.h
+++ b/src/live_effects/lpeobject.h
@@ -35,6 +35,7 @@ class CLivePathEffectObject;
class LivePathEffectObject : public SPObject {
public:
+ LivePathEffectObject();
CLivePathEffectObject* clivepatheffectobject;
Inkscape::LivePathEffect::EffectType effecttype;
diff --git a/src/marker.cpp b/src/marker.cpp
index adf89b0be..ef2aeaae5 100644
--- a/src/marker.cpp
+++ b/src/marker.cpp
@@ -42,7 +42,7 @@ static void sp_marker_print (SPItem *item, SPPrintContext *ctx);
static void sp_marker_view_remove (SPMarker *marker, SPMarkerView *view, unsigned int destroyitems);
-G_DEFINE_TYPE(SPMarker, sp_marker, SP_TYPE_GROUP);
+G_DEFINE_TYPE(SPMarker, sp_marker, G_TYPE_OBJECT);
/**
* Initializes a SPMarkerClass object. Establishes the function pointers to the class'
@@ -59,13 +59,9 @@ CMarker::CMarker(SPMarker* marker) : CGroup(marker) {
CMarker::~CMarker() {
}
-/**
- * Initializes an SPMarker object. This notes the marker's viewBox is
- * not set and initializes the marker's c2p identity matrix.
- */
-static void
-sp_marker_init (SPMarker *marker)
-{
+SPMarker::SPMarker() : SPGroup() {
+ SPMarker* marker = this;
+
marker->cmarker = new CMarker(marker);
marker->typeHierarchy.insert(typeid(SPMarker));
@@ -75,12 +71,31 @@ sp_marker_init (SPMarker *marker)
marker->citem = marker->cmarker;
marker->cobject = marker->cmarker;
+ marker->aspect_clip = 0;
+ marker->aspect_align = 0;
+ marker->aspect_set = 0;
+ marker->markerUnits = 0;
+ marker->orient_auto = 0;
+ marker->markerUnits_set = 0;
+ marker->orient_set = 0;
+ marker->orient = 0;
+
marker->viewBox = Geom::OptRect();
marker->c2p.setIdentity();
marker->views = NULL;
}
/**
+ * Initializes an SPMarker object. This notes the marker's viewBox is
+ * not set and initializes the marker's c2p identity matrix.
+ */
+static void
+sp_marker_init (SPMarker *marker)
+{
+ new (marker) SPMarker();
+}
+
+/**
* Virtual build callback for SPMarker.
*
* This is to be invoked immediately after creation of an SPMarker. This
diff --git a/src/marker.h b/src/marker.h
index 47e1a4037..bd6d518d0 100644
--- a/src/marker.h
+++ b/src/marker.h
@@ -35,6 +35,7 @@ class CMarker;
class SPMarker : public SPGroup {
public:
+ SPMarker();
CMarker* cmarker;
/* units */
diff --git a/src/persp3d.cpp b/src/persp3d.cpp
index 50ecd6522..2d67ac1a2 100644
--- a/src/persp3d.cpp
+++ b/src/persp3d.cpp
@@ -43,7 +43,7 @@ Persp3DImpl::Persp3DImpl() {
my_counter = global_counter++;
}
-G_DEFINE_TYPE(Persp3D, persp3d, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(Persp3D, persp3d, G_TYPE_OBJECT);
static Inkscape::XML::NodeEventVector const persp3d_repr_events = {
NULL, /* child_added */
@@ -69,12 +69,9 @@ CPersp3D::CPersp3D(Persp3D* persp3d) : CObject(persp3d) {
CPersp3D::~CPersp3D() {
}
-/**
- * Callback to initialize Persp3D object.
- */
-static void
-persp3d_init(Persp3D *persp)
-{
+Persp3D::Persp3D() : SPObject() {
+ Persp3D* persp = this;
+
persp->cpersp3d = new CPersp3D(persp);
persp->typeHierarchy.insert(typeid(Persp3D));
@@ -85,6 +82,15 @@ persp3d_init(Persp3D *persp)
}
/**
+ * Callback to initialize Persp3D object.
+ */
+static void
+persp3d_init(Persp3D *persp)
+{
+ new (persp) Persp3D();
+}
+
+/**
* Virtual build: set persp3d attributes from its associated XML node.
*/
void CPersp3D::build(SPDocument *document, Inkscape::XML::Node *repr) {
diff --git a/src/persp3d.h b/src/persp3d.h
index 684fb4df2..9db9ba4b1 100644
--- a/src/persp3d.h
+++ b/src/persp3d.h
@@ -48,6 +48,7 @@ class CPersp3D;
class Persp3D : public SPObject {
public:
+ Persp3D();
CPersp3D* cpersp3d;
Persp3DImpl *perspective_impl;
diff --git a/src/sp-anchor.cpp b/src/sp-anchor.cpp
index 2c955419f..8a1feb61d 100644
--- a/src/sp-anchor.cpp
+++ b/src/sp-anchor.cpp
@@ -25,7 +25,7 @@
#include "ui/view/view.h"
#include "document.h"
-G_DEFINE_TYPE(SPAnchor, sp_anchor, SP_TYPE_GROUP);
+G_DEFINE_TYPE(SPAnchor, sp_anchor, G_TYPE_OBJECT);
static void sp_anchor_class_init(SPAnchorClass *ac)
{
@@ -38,8 +38,9 @@ CAnchor::CAnchor(SPAnchor* anchor) : CGroup(anchor) {
CAnchor::~CAnchor() {
}
-static void sp_anchor_init(SPAnchor *anchor)
-{
+SPAnchor::SPAnchor() : SPGroup() {
+ SPAnchor* anchor = this;
+
anchor->canchor = new CAnchor(anchor);
anchor->typeHierarchy.insert(typeid(SPAnchor));
@@ -52,6 +53,11 @@ static void sp_anchor_init(SPAnchor *anchor)
anchor->href = NULL;
}
+static void sp_anchor_init(SPAnchor *anchor)
+{
+ new (anchor) SPAnchor();
+}
+
void CAnchor::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPAnchor* object = this->spanchor;
diff --git a/src/sp-anchor.h b/src/sp-anchor.h
index 132054998..7fa1dcfc1 100644
--- a/src/sp-anchor.h
+++ b/src/sp-anchor.h
@@ -23,6 +23,7 @@ class CAnchor;
class SPAnchor : public SPGroup {
public:
+ SPAnchor();
CAnchor* canchor;
gchar *href;
diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp
index 3263bbb58..ff12f9678 100644
--- a/src/sp-clippath.cpp
+++ b/src/sp-clippath.cpp
@@ -40,7 +40,7 @@ struct SPClipPathView {
static SPClipPathView* sp_clippath_view_new_prepend(SPClipPathView *list, unsigned int key, Inkscape::DrawingItem *arenaitem);
static SPClipPathView* sp_clippath_view_list_remove(SPClipPathView *list, SPClipPathView *view);
-G_DEFINE_TYPE(SPClipPath, sp_clippath, SP_TYPE_OBJECTGROUP);
+G_DEFINE_TYPE(SPClipPath, sp_clippath, G_TYPE_OBJECT);
static void
sp_clippath_class_init(SPClipPathClass *klass)
@@ -54,9 +54,9 @@ CClipPath::CClipPath(SPClipPath* clippath) : CObjectGroup(clippath) {
CClipPath::~CClipPath() {
}
-static void
-sp_clippath_init(SPClipPath *cp)
-{
+SPClipPath::SPClipPath() : SPObjectGroup() {
+ SPClipPath* cp = this;
+
cp->cclippath = new CClipPath(cp);
cp->typeHierarchy.insert(typeid(SPClipPath));
@@ -70,6 +70,12 @@ sp_clippath_init(SPClipPath *cp)
cp->display = NULL;
}
+static void
+sp_clippath_init(SPClipPath *cp)
+{
+ new (cp) SPClipPath();
+}
+
void CClipPath::build(SPDocument* doc, Inkscape::XML::Node* repr) {
SPClipPath* object = this->spclippath;
diff --git a/src/sp-clippath.h b/src/sp-clippath.h
index f3894dc8f..b4b3c669b 100644
--- a/src/sp-clippath.h
+++ b/src/sp-clippath.h
@@ -38,6 +38,7 @@ class CClipPath;
class SPClipPath : public SPObjectGroup {
public:
+ SPClipPath();
CClipPath* cclippath;
class Reference;
diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp
index 3957084a6..d73b6db74 100644
--- a/src/sp-defs.cpp
+++ b/src/sp-defs.cpp
@@ -21,7 +21,7 @@
#include "document.h"
-G_DEFINE_TYPE(SPDefs, sp_defs, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPDefs, sp_defs, G_TYPE_OBJECT);
static void
sp_defs_class_init(SPDefsClass *dc)
@@ -29,9 +29,10 @@ sp_defs_class_init(SPDefsClass *dc)
SPObjectClass *sp_object_class = (SPObjectClass *) dc;
}
-static void
-sp_defs_init(SPDefs* defs)
-{
+
+SPDefs::SPDefs() : SPObject() {
+ SPDefs* defs = this;
+
defs->cdefs = new CDefs(defs);
defs->typeHierarchy.insert(typeid(SPDefs));
@@ -39,6 +40,12 @@ sp_defs_init(SPDefs* defs)
defs->cobject = defs->cdefs;
}
+static void
+sp_defs_init(SPDefs* defs)
+{
+ new (defs) SPDefs();
+}
+
CDefs::CDefs(SPDefs* defs) : CObject(defs) {
this->spdefs = defs;
}
diff --git a/src/sp-defs.h b/src/sp-defs.h
index 17dc84078..b1309a601 100644
--- a/src/sp-defs.h
+++ b/src/sp-defs.h
@@ -25,6 +25,7 @@ class CDefs;
class SPDefs : public SPObject {
public:
+ SPDefs();
CDefs* cdefs;
private:
diff --git a/src/sp-desc.cpp b/src/sp-desc.cpp
index d4836f86a..81b4240bb 100644
--- a/src/sp-desc.cpp
+++ b/src/sp-desc.cpp
@@ -31,8 +31,9 @@ CDesc::CDesc(SPDesc* desc) : CObject(desc) {
CDesc::~CDesc() {
}
-static void sp_desc_init(SPDesc *desc)
-{
+SPDesc::SPDesc() : SPObject() {
+ SPDesc* desc = this;
+
desc->cdesc = new CDesc(desc);
desc->typeHierarchy.insert(typeid(SPDesc));
@@ -40,6 +41,11 @@ static void sp_desc_init(SPDesc *desc)
desc->cobject = desc->cdesc;
}
+static void sp_desc_init(SPDesc *desc)
+{
+ new (desc) SPDesc();
+}
+
Inkscape::XML::Node* CDesc::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) {
SPDesc* object = this->spdesc;
diff --git a/src/sp-desc.h b/src/sp-desc.h
index 0faaae0e0..2be3bf1d3 100644
--- a/src/sp-desc.h
+++ b/src/sp-desc.h
@@ -22,6 +22,7 @@ class CDesc;
class SPDesc : public SPObject {
public:
+ SPDesc();
CDesc* cdesc;
};
diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp
index ac0351a5e..a2c94c508 100644
--- a/src/sp-ellipse.cpp
+++ b/src/sp-ellipse.cpp
@@ -66,7 +66,7 @@ static double sp_round(double x, double y)
static gboolean sp_arc_set_elliptical_path_attribute(SPArc *arc, Inkscape::XML::Node *repr);
-G_DEFINE_TYPE(SPGenericEllipse, sp_genericellipse, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPGenericEllipse, sp_genericellipse, G_TYPE_OBJECT);
static void sp_genericellipse_class_init(SPGenericEllipseClass *klass)
{
@@ -79,9 +79,9 @@ CGenericEllipse::CGenericEllipse(SPGenericEllipse* genericEllipse) : CShape(gene
CGenericEllipse::~CGenericEllipse() {
}
-static void
-sp_genericellipse_init(SPGenericEllipse *ellipse)
-{
+SPGenericEllipse::SPGenericEllipse() : SPShape() {
+ SPGenericEllipse* ellipse = this;
+
ellipse->cgenericEllipse = new CGenericEllipse(ellipse);
ellipse->typeHierarchy.insert(typeid(SPGenericEllipse));
@@ -101,6 +101,12 @@ sp_genericellipse_init(SPGenericEllipse *ellipse)
ellipse->closed = TRUE;
}
+static void
+sp_genericellipse_init(SPGenericEllipse *ellipse)
+{
+ new (ellipse) SPGenericEllipse();
+}
+
void CGenericEllipse::update(SPCtx *ctx, guint flags) {
SPGenericEllipse* object = this->spgenericEllipse;
@@ -344,7 +350,7 @@ Inkscape::XML::Node* CGenericEllipse::write(Inkscape::XML::Document *xml_doc, In
/* SVG <ellipse> element */
-G_DEFINE_TYPE(SPEllipse, sp_ellipse, SP_TYPE_GENERICELLIPSE);
+G_DEFINE_TYPE(SPEllipse, sp_ellipse, G_TYPE_OBJECT);
static void sp_ellipse_class_init(SPEllipseClass *klass)
{
@@ -357,9 +363,9 @@ CEllipse::CEllipse(SPEllipse* ellipse) : CGenericEllipse(ellipse) {
CEllipse::~CEllipse() {
}
-static void
-sp_ellipse_init(SPEllipse *ellipse)
-{
+SPEllipse::SPEllipse() : SPGenericEllipse() {
+ SPEllipse* ellipse = this;
+
ellipse->cellipse = new CEllipse(ellipse);
ellipse->typeHierarchy.insert(typeid(SPEllipse));
@@ -371,6 +377,12 @@ sp_ellipse_init(SPEllipse *ellipse)
ellipse->cobject = ellipse->cellipse;
}
+static void
+sp_ellipse_init(SPEllipse *ellipse)
+{
+ new (ellipse) SPEllipse();
+}
+
void CEllipse::build(SPDocument *document, Inkscape::XML::Node *repr) {
CGenericEllipse::build(document, repr);
@@ -456,7 +468,7 @@ sp_ellipse_position_set(SPEllipse *ellipse, gdouble x, gdouble y, gdouble rx, gd
/* SVG <circle> element */
-G_DEFINE_TYPE(SPCircle, sp_circle, SP_TYPE_GENERICELLIPSE);
+G_DEFINE_TYPE(SPCircle, sp_circle, G_TYPE_OBJECT);
static void
sp_circle_class_init(SPCircleClass *klass)
@@ -470,9 +482,9 @@ CCircle::CCircle(SPCircle* circle) : CGenericEllipse(circle) {
CCircle::~CCircle() {
}
-static void
-sp_circle_init(SPCircle *circle)
-{
+SPCircle::SPCircle() : SPGenericEllipse() {
+ SPCircle* circle = this;
+
circle->ccircle = new CCircle(circle);
circle->typeHierarchy.insert(typeid(SPCircle));
@@ -484,6 +496,12 @@ sp_circle_init(SPCircle *circle)
circle->cobject = circle->ccircle;
}
+static void
+sp_circle_init(SPCircle *circle)
+{
+ new (circle) SPCircle();
+}
+
void CCircle::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPCircle* object = this->spcircle;
@@ -544,7 +562,7 @@ gchar* CCircle::description() {
/* <path sodipodi:type="arc"> element */
-G_DEFINE_TYPE(SPArc, sp_arc, SP_TYPE_GENERICELLIPSE);
+G_DEFINE_TYPE(SPArc, sp_arc, G_TYPE_OBJECT);
static void
sp_arc_class_init(SPArcClass *klass)
@@ -558,9 +576,9 @@ CArc::CArc(SPArc* arc) : CGenericEllipse(arc) {
CArc::~CArc() {
}
-static void
-sp_arc_init(SPArc *arc)
-{
+SPArc::SPArc() : SPGenericEllipse() {
+ SPArc* arc = this;
+
arc->carc = new CArc(arc);
arc->typeHierarchy.insert(typeid(SPArc));
@@ -572,6 +590,12 @@ sp_arc_init(SPArc *arc)
arc->cobject = arc->carc;
}
+static void
+sp_arc_init(SPArc *arc)
+{
+ new (arc) SPArc();
+}
+
void CArc::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPArc* object = this->sparc;
diff --git a/src/sp-ellipse.h b/src/sp-ellipse.h
index caaf8aee9..fda6d564c 100644
--- a/src/sp-ellipse.h
+++ b/src/sp-ellipse.h
@@ -29,6 +29,7 @@ class CGenericEllipse;
class SPGenericEllipse : public SPShape {
public:
+ SPGenericEllipse();
CGenericEllipse* cgenericEllipse;
SVGLength cx;
@@ -78,6 +79,7 @@ class CEllipse;
class SPEllipse : public SPGenericEllipse {
public:
+ SPEllipse();
CEllipse* cellipse;
};
@@ -115,6 +117,7 @@ class CCircle;
class SPCircle : public SPGenericEllipse {
public:
+ SPCircle();
CCircle* ccircle;
};
@@ -150,6 +153,7 @@ class CArc;
class SPArc : public SPGenericEllipse {
public:
+ SPArc();
CArc* carc;
};
diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp
index d788b4314..c7de36978 100644
--- a/src/sp-filter-primitive.cpp
+++ b/src/sp-filter-primitive.cpp
@@ -42,14 +42,14 @@ GType sp_filter_primitive_get_type()
GTypeInfo filter_primitive_info = {
sizeof(SPFilterPrimitiveClass),
NULL, NULL,
- (GClassInitFunc) sp_filter_primitive_class_init,
+ 0,//(GClassInitFunc) sp_filter_primitive_class_init,
NULL, NULL,
sizeof(SPFilterPrimitive),
16,
(GInstanceInitFunc) sp_filter_primitive_init,
NULL, /* value_table */
};
- filter_primitive_type = g_type_register_static(SP_TYPE_OBJECT, "SPFilterPrimitive", &filter_primitive_info, (GTypeFlags)0);
+ filter_primitive_type = g_type_register_static(G_TYPE_OBJECT, "SPFilterPrimitive", &filter_primitive_info, (GTypeFlags)0);
}
return filter_primitive_type;
}
@@ -72,8 +72,9 @@ void CFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) {
// throw;
}
-static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive)
-{
+SPFilterPrimitive::SPFilterPrimitive() : SPObject() {
+ SPFilterPrimitive* filter_primitive = this;
+
filter_primitive->cfilterprimitive = new CFilterPrimitive(filter_primitive);
filter_primitive->typeHierarchy.insert(typeid(SPFilterPrimitive));
@@ -94,6 +95,11 @@ static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive)
filter_primitive->height.unset(SVGLength::PERCENT, 1, 0);
}
+static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive)
+{
+ new (filter_primitive) SPFilterPrimitive();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFilterPrimitive variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/sp-filter-primitive.h b/src/sp-filter-primitive.h
index b090d0681..d6feed922 100644
--- a/src/sp-filter-primitive.h
+++ b/src/sp-filter-primitive.h
@@ -31,6 +31,7 @@ class CFilterPrimitive;
class SPFilterPrimitive : public SPObject {
public:
+ SPFilterPrimitive();
CFilterPrimitive* cfilterprimitive;
int image_in, image_out;
diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp
index 67fdd1ed9..998c28865 100644
--- a/src/sp-filter.cpp
+++ b/src/sp-filter.cpp
@@ -41,7 +41,7 @@ using std::pair;
static void filter_ref_changed(SPObject *old_ref, SPObject *ref, SPFilter *filter);
static void filter_ref_modified(SPObject *href, guint flags, SPFilter *filter);
-G_DEFINE_TYPE(SPFilter, sp_filter, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFilter, sp_filter, G_TYPE_OBJECT);
static void
sp_filter_class_init(SPFilterClass *klass)
@@ -55,9 +55,9 @@ CFilter::CFilter(SPFilter* filter) : CObject(filter) {
CFilter::~CFilter() {
}
-static void
-sp_filter_init(SPFilter *filter)
-{
+SPFilter::SPFilter() : SPObject() {
+ SPFilter* filter = this;
+
filter->cfilter = new CFilter(filter);
filter->typeHierarchy.insert(typeid(SPFilter));
@@ -88,6 +88,12 @@ sp_filter_init(SPFilter *filter)
new (&filter->modified_connection) sigc::connection();
}
+static void
+sp_filter_init(SPFilter *filter)
+{
+ new (filter) SPFilter();
+}
+
/**
* Reads the Inkscape::XML::Node, and initializes SPFilter variables. For this to get called,
* our name must be associated with a repr via "sp_object_type_register". Best done through
diff --git a/src/sp-filter.h b/src/sp-filter.h
index 263f9cdd1..ea9717498 100644
--- a/src/sp-filter.h
+++ b/src/sp-filter.h
@@ -45,6 +45,7 @@ class CFilter;
class SPFilter : public SPObject {
public:
+ SPFilter();
CFilter* cfilter;
SPFilterUnits filterUnits;
diff --git a/src/sp-flowdiv.cpp b/src/sp-flowdiv.cpp
index f9520c8e6..329391352 100644
--- a/src/sp-flowdiv.cpp
+++ b/src/sp-flowdiv.cpp
@@ -20,7 +20,7 @@ static void sp_flowpara_init (SPFlowpara *group);
static void sp_flowline_init (SPFlowline *group);
static void sp_flowregionbreak_init (SPFlowregionbreak *group);
-G_DEFINE_TYPE(SPFlowdiv, sp_flowdiv, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPFlowdiv, sp_flowdiv, G_TYPE_OBJECT);
static void sp_flowdiv_class_init(SPFlowdivClass *klass)
{
@@ -33,8 +33,9 @@ CFlowdiv::CFlowdiv(SPFlowdiv* flowdiv) : CItem(flowdiv) {
CFlowdiv::~CFlowdiv() {
}
-static void sp_flowdiv_init(SPFlowdiv *group)
-{
+SPFlowdiv::SPFlowdiv() : SPItem() {
+ SPFlowdiv* group = this;
+
group->cflowdiv = new CFlowdiv(group);
group->typeHierarchy.insert(typeid(SPFlowdiv));
@@ -43,6 +44,11 @@ static void sp_flowdiv_init(SPFlowdiv *group)
group->cobject = group->cflowdiv;
}
+static void sp_flowdiv_init(SPFlowdiv *group)
+{
+ new (group) SPFlowdiv();
+}
+
void CFlowdiv::release() {
CItem::release();
}
@@ -170,7 +176,7 @@ Inkscape::XML::Node* CFlowdiv::write(Inkscape::XML::Document *xml_doc, Inkscape:
/*
*
*/
-G_DEFINE_TYPE(SPFlowtspan, sp_flowtspan, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPFlowtspan, sp_flowtspan, G_TYPE_OBJECT);
static void sp_flowtspan_class_init(SPFlowtspanClass *klass)
{
@@ -183,8 +189,9 @@ CFlowtspan::CFlowtspan(SPFlowtspan* flowtspan) : CItem(flowtspan) {
CFlowtspan::~CFlowtspan() {
}
-static void sp_flowtspan_init(SPFlowtspan *group)
-{
+SPFlowtspan::SPFlowtspan() : SPItem() {
+ SPFlowtspan* group = this;
+
group->cflowtspan = new CFlowtspan(group);
group->typeHierarchy.insert(typeid(SPFlowtspan));
@@ -193,6 +200,11 @@ static void sp_flowtspan_init(SPFlowtspan *group)
group->cobject = group->cflowtspan;
}
+static void sp_flowtspan_init(SPFlowtspan *group)
+{
+ new (group) SPFlowtspan();
+}
+
void CFlowtspan::release() {
CItem::release();
}
@@ -319,7 +331,7 @@ Inkscape::XML::Node *CFlowtspan::write(Inkscape::XML::Document *xml_doc, Inkscap
/*
*
*/
-G_DEFINE_TYPE(SPFlowpara, sp_flowpara, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPFlowpara, sp_flowpara, G_TYPE_OBJECT);
static void sp_flowpara_class_init(SPFlowparaClass *klass)
{
@@ -332,8 +344,9 @@ CFlowpara::CFlowpara(SPFlowpara* flowpara) : CItem(flowpara) {
CFlowpara::~CFlowpara() {
}
-static void sp_flowpara_init (SPFlowpara *group)
-{
+SPFlowpara::SPFlowpara() : SPItem() {
+ SPFlowpara* group = this;
+
group->cflowpara = new CFlowpara(group);
group->typeHierarchy.insert(typeid(SPFlowpara));
@@ -342,6 +355,11 @@ static void sp_flowpara_init (SPFlowpara *group)
group->cobject = group->cflowpara;
}
+static void sp_flowpara_init (SPFlowpara *group)
+{
+ new (group) SPFlowpara();
+}
+
void CFlowpara::release() {
CItem::release();
}
@@ -466,7 +484,7 @@ Inkscape::XML::Node *CFlowpara::write(Inkscape::XML::Document *xml_doc, Inkscape
/*
*
*/
-G_DEFINE_TYPE(SPFlowline, sp_flowline, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFlowline, sp_flowline, G_TYPE_OBJECT);
static void sp_flowline_class_init(SPFlowlineClass *klass)
{
@@ -479,8 +497,9 @@ CFlowline::CFlowline(SPFlowline* flowline) : CObject(flowline) {
CFlowline::~CFlowline() {
}
-static void sp_flowline_init(SPFlowline *group)
-{
+SPFlowline::SPFlowline() : SPObject() {
+ SPFlowline* group = this;
+
group->cflowline = new CFlowline(group);
group->typeHierarchy.insert(typeid(SPFlowline));
@@ -488,6 +507,11 @@ static void sp_flowline_init(SPFlowline *group)
group->cobject = group->cflowline;
}
+static void sp_flowline_init(SPFlowline *group)
+{
+ new (group) SPFlowline();
+}
+
void CFlowline::release() {
CObject::release();
}
@@ -520,7 +544,7 @@ Inkscape::XML::Node *CFlowline::write(Inkscape::XML::Document *xml_doc, Inkscape
/*
*
*/
-G_DEFINE_TYPE(SPFlowregionbreak, sp_flowregionbreak, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFlowregionbreak, sp_flowregionbreak, G_TYPE_OBJECT);
static void sp_flowregionbreak_class_init(SPFlowregionbreakClass *klass)
{
@@ -533,8 +557,9 @@ CFlowregionbreak::CFlowregionbreak(SPFlowregionbreak* flowregionbreak) : CObject
CFlowregionbreak::~CFlowregionbreak() {
}
-static void sp_flowregionbreak_init(SPFlowregionbreak *group)
-{
+SPFlowregionbreak::SPFlowregionbreak() : SPObject() {
+ SPFlowregionbreak* group = this;
+
group->cflowregionbreak = new CFlowregionbreak(group);
group->typeHierarchy.insert(typeid(SPFlowregionbreak));
@@ -542,6 +567,11 @@ static void sp_flowregionbreak_init(SPFlowregionbreak *group)
group->cobject = group->cflowregionbreak;
}
+static void sp_flowregionbreak_init(SPFlowregionbreak *group)
+{
+ new (group) SPFlowregionbreak();
+}
+
void CFlowregionbreak::release() {
CObject::release();
}
diff --git a/src/sp-flowdiv.h b/src/sp-flowdiv.h
index 2f06cb312..f95c81a69 100644
--- a/src/sp-flowdiv.h
+++ b/src/sp-flowdiv.h
@@ -36,27 +36,32 @@ class CFlowregionbreak;
// these 3 are derivatives of SPItem to get the automatic style handling
class SPFlowdiv : public SPItem {
public:
+ SPFlowdiv();
CFlowdiv* cflowdiv;
};
class SPFlowtspan : public SPItem {
public:
+ SPFlowtspan();
CFlowtspan* cflowtspan;
};
class SPFlowpara : public SPItem {
public:
+ SPFlowpara();
CFlowpara* cflowpara;
};
// these do not need any style
class SPFlowline : public SPObject {
public:
+ SPFlowline();
CFlowline* cflowline;
};
class SPFlowregionbreak : public SPObject {
public:
+ SPFlowregionbreak();
CFlowregionbreak* cflowregionbreak;
};
diff --git a/src/sp-flowregion.cpp b/src/sp-flowregion.cpp
index 0c99d6f9a..29ce4e7a9 100644
--- a/src/sp-flowregion.cpp
+++ b/src/sp-flowregion.cpp
@@ -27,7 +27,7 @@
static void sp_flowregion_init (SPFlowregion *group);
static void sp_flowregion_dispose (GObject *object);
-G_DEFINE_TYPE(SPFlowregion, sp_flowregion, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPFlowregion, sp_flowregion, G_TYPE_OBJECT);
static void sp_flowregionexclude_init (SPFlowregionExclude *group);
static void sp_flowregionexclude_dispose (GObject *object);
@@ -50,9 +50,9 @@ CFlowregion::CFlowregion(SPFlowregion* flowregion) : CItem(flowregion) {
CFlowregion::~CFlowregion() {
}
-static void
-sp_flowregion_init (SPFlowregion *group)
-{
+SPFlowregion::SPFlowregion() : SPItem() {
+ SPFlowregion* group = this;
+
group->cflowregion = new CFlowregion(group);
group->typeHierarchy.insert(typeid(SPFlowregion));
@@ -64,6 +64,12 @@ sp_flowregion_init (SPFlowregion *group)
}
static void
+sp_flowregion_init (SPFlowregion *group)
+{
+ new (group) SPFlowregion();
+}
+
+static void
sp_flowregion_dispose(GObject *object)
{
SPFlowregion *group=(SPFlowregion *)object;
@@ -215,7 +221,7 @@ gchar* CFlowregion::description() {
*
*/
-G_DEFINE_TYPE(SPFlowregionExclude, sp_flowregionexclude, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPFlowregionExclude, sp_flowregionexclude, G_TYPE_OBJECT);
static void
sp_flowregionexclude_class_init (SPFlowregionExcludeClass *klass)
@@ -232,9 +238,9 @@ CFlowregionExclude::CFlowregionExclude(SPFlowregionExclude* flowregionexclude) :
CFlowregionExclude::~CFlowregionExclude() {
}
-static void
-sp_flowregionexclude_init (SPFlowregionExclude *group)
-{
+SPFlowregionExclude::SPFlowregionExclude() : SPItem() {
+ SPFlowregionExclude* group = this;
+
group->cflowregionexclude = new CFlowregionExclude(group);
group->typeHierarchy.insert(typeid(SPFlowregionExclude));
@@ -246,6 +252,12 @@ sp_flowregionexclude_init (SPFlowregionExclude *group)
}
static void
+sp_flowregionexclude_init (SPFlowregionExclude *group)
+{
+ new (group) SPFlowregionExclude();
+}
+
+static void
sp_flowregionexclude_dispose(GObject *object)
{
SPFlowregionExclude *group=(SPFlowregionExclude *)object;
diff --git a/src/sp-flowregion.h b/src/sp-flowregion.h
index e9461e82b..b4faa78ef 100644
--- a/src/sp-flowregion.h
+++ b/src/sp-flowregion.h
@@ -23,6 +23,7 @@ class CFlowregionExclude;
class SPFlowregion : public SPItem {
public:
+ SPFlowregion();
CFlowregion* cflowregion;
std::vector<Shape*> computed;
@@ -54,6 +55,7 @@ GType sp_flowregion_get_type (void);
class SPFlowregionExclude : public SPItem {
public:
+ SPFlowregionExclude();
CFlowregionExclude* cflowregionexclude;
Shape *computed;
diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp
index 0afd91379..8b6cf4a25 100644
--- a/src/sp-flowtext.cpp
+++ b/src/sp-flowtext.cpp
@@ -37,7 +37,7 @@
static void sp_flowtext_init(SPFlowtext *group);
static void sp_flowtext_dispose(GObject *object);
-G_DEFINE_TYPE(SPFlowtext, sp_flowtext, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPFlowtext, sp_flowtext, G_TYPE_OBJECT);
static void
sp_flowtext_class_init(SPFlowtextClass *klass)
@@ -54,9 +54,9 @@ CFlowtext::CFlowtext(SPFlowtext* flowtext) : CItem(flowtext) {
CFlowtext::~CFlowtext() {
}
-static void
-sp_flowtext_init(SPFlowtext *group)
-{
+SPFlowtext::SPFlowtext() : SPItem() {
+ SPFlowtext* group = this;
+
group->cflowtext = new CFlowtext(group);
group->typeHierarchy.insert(typeid(SPFlowtext));
@@ -69,6 +69,12 @@ sp_flowtext_init(SPFlowtext *group)
}
static void
+sp_flowtext_init(SPFlowtext *group)
+{
+ new (group) SPFlowtext();
+}
+
+static void
sp_flowtext_dispose(GObject *object)
{
SPFlowtext *group = (SPFlowtext*)object;
diff --git a/src/sp-flowtext.h b/src/sp-flowtext.h
index 06e2442e6..a3331c76d 100644
--- a/src/sp-flowtext.h
+++ b/src/sp-flowtext.h
@@ -24,6 +24,7 @@ class CFlowtext;
class SPFlowtext : public SPItem {
public:
+ SPFlowtext();
CFlowtext* cflowtext;
/** Completely recalculates the layout. */
diff --git a/src/sp-font-face.cpp b/src/sp-font-face.cpp
index 5baff2751..d946c4f20 100644
--- a/src/sp-font-face.cpp
+++ b/src/sp-font-face.cpp
@@ -259,7 +259,7 @@ static std::vector<FontFaceStretchType> sp_read_fontFaceStretchType(gchar const
return v;
}
-G_DEFINE_TYPE(SPFontFace, sp_fontface, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFontFace, sp_fontface, G_TYPE_OBJECT);
static void sp_fontface_class_init(SPFontFaceClass *fc)
{
@@ -272,8 +272,9 @@ CFontFace::CFontFace(SPFontFace* face) : CObject(face) {
CFontFace::~CFontFace() {
}
-static void sp_fontface_init(SPFontFace *face)
-{
+SPFontFace::SPFontFace() : SPObject() {
+ SPFontFace* face = this;
+
face->cfontface = new CFontFace(face);
face->typeHierarchy.insert(typeid(SPFontFace));
@@ -296,7 +297,7 @@ static void sp_fontface_init(SPFontFace *face)
stretch.push_back(SP_FONTFACE_STRETCH_NORMAL);
face->font_stretch = stretch;
face->font_family = NULL;
- /*
+
//face->font_style = ;
//face->font_variant = ;
//face->font_weight = ;
@@ -305,31 +306,36 @@ static void sp_fontface_init(SPFontFace *face)
//face->unicode_range = ;
face->units_per_em = 1000;
//face->panose_1 = ;
- face->stem_v = ;
- face->stem_h = ;
+ face->stemv = 0;
+ face->stemh = 0;
face->slope = 0;
- face->cap_height = ;
- face->x_height = ;
- face->accent_height = ;
- face->ascent = ;
- face->descent = ;
+ face->cap_height = 0;
+ face->x_height = 0;
+ face->accent_height = 0;
+ face->ascent = 0;
+ face->descent = 0;
face->widths = NULL;
face->bbox = NULL;
- face->ideographic = ;
- face->alphabetic = ;
- face->mathematical = ;
- face->hanging = ;
- face->v_ideographic = ;
- face->v_alphabetic = ;
- face->v_mathematical = ;
- face->v_hanging = ;
- face->underline_position = ;
- face->underline_thickness = ;
- face->strikethrough_position = ;
- face->strikethrough_thickness = ;
- face->overline_position = ;
- face->overline_thickness = ;
-*/
+ face->ideographic = 0;
+ face->alphabetic = 0;
+ face->mathematical = 0;
+ face->hanging = 0;
+ face->v_ideographic = 0;
+ face->v_alphabetic = 0;
+ face->v_mathematical = 0;
+ face->v_hanging = 0;
+ face->underline_position = 0;
+ face->underline_thickness = 0;
+ face->strikethrough_position = 0;
+ face->strikethrough_thickness = 0;
+ face->overline_position = 0;
+ face->overline_thickness = 0;
+
+}
+
+static void sp_fontface_init(SPFontFace *face)
+{
+ new (face) SPFontFace();
}
diff --git a/src/sp-font-face.h b/src/sp-font-face.h
index 0aab3b577..7770ec4c1 100644
--- a/src/sp-font-face.h
+++ b/src/sp-font-face.h
@@ -78,6 +78,7 @@ class CFontFace;
class SPFontFace : public SPObject {
public:
+ SPFontFace();
CFontFace* cfontface;
char* font_family;
diff --git a/src/sp-font.cpp b/src/sp-font.cpp
index 0a7c63e33..d7eafe84e 100644
--- a/src/sp-font.cpp
+++ b/src/sp-font.cpp
@@ -23,7 +23,7 @@
#include "display/nr-svgfonts.h"
-G_DEFINE_TYPE(SPFont, sp_font, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPFont, sp_font, G_TYPE_OBJECT);
static void sp_font_class_init(SPFontClass *fc)
{
@@ -43,8 +43,9 @@ CFont::CFont(SPFont* font) : CObject(font) {
CFont::~CFont() {
}
-static void sp_font_init(SPFont *font)
-{
+SPFont::SPFont() : SPObject() {
+ SPFont* font = this;
+
font->cfont = new CFont(font);
font->typeHierarchy.insert(typeid(SPFont));
@@ -59,6 +60,11 @@ static void sp_font_init(SPFont *font)
font->vert_adv_y = FNT_UNITS_PER_EM;
}
+static void sp_font_init(SPFont *font)
+{
+ new (font) SPFont();
+}
+
void CFont::build(SPDocument *document, Inkscape::XML::Node *repr) {
CObject::build(document, repr);
diff --git a/src/sp-font.h b/src/sp-font.h
index 44b24b6f2..768104e91 100644
--- a/src/sp-font.h
+++ b/src/sp-font.h
@@ -26,6 +26,7 @@ class CFont;
class SPFont : public SPObject {
public:
+ SPFont();
CFont* cfont;
double horiz_origin_x;
diff --git a/src/sp-glyph-kerning.cpp b/src/sp-glyph-kerning.cpp
index c7dd90933..f8aa8d213 100644
--- a/src/sp-glyph-kerning.cpp
+++ b/src/sp-glyph-kerning.cpp
@@ -39,7 +39,7 @@ GType sp_glyph_kerning_h_get_type(void)
sizeof(SPGlyphKerningClass),
NULL, /* base_init */
NULL, /* base_finalize */
- (GClassInitFunc) sp_glyph_kerning_class_init,
+ 0, //(GClassInitFunc) sp_glyph_kerning_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof(SPHkern),
@@ -47,7 +47,7 @@ GType sp_glyph_kerning_h_get_type(void)
(GInstanceInitFunc) sp_glyph_kerning_init,
NULL, /* value_table */
};
- type = g_type_register_static(SP_TYPE_OBJECT, "SPHkern", &info, (GTypeFlags) 0);
+ type = g_type_register_static(G_TYPE_OBJECT, "SPHkern", &info, (GTypeFlags) 0);
}
return type;
@@ -62,7 +62,7 @@ GType sp_glyph_kerning_v_get_type(void)
sizeof(SPGlyphKerningClass),
NULL, /* base_init */
NULL, /* base_finalize */
- (GClassInitFunc) sp_glyph_kerning_class_init,
+ 0, //(GClassInitFunc) sp_glyph_kerning_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof(SPVkern),
@@ -70,7 +70,7 @@ GType sp_glyph_kerning_v_get_type(void)
(GInstanceInitFunc) sp_glyph_kerning_init,
NULL, /* value_table */
};
- type = g_type_register_static(SP_TYPE_OBJECT, "SPVkern", &info, (GTypeFlags) 0);
+ type = g_type_register_static(G_TYPE_OBJECT, "SPVkern", &info, (GTypeFlags) 0);
}
return type;
@@ -88,8 +88,9 @@ CGlyphKerning::CGlyphKerning(SPGlyphKerning* kerning) : CObject(kerning) {
CGlyphKerning::~CGlyphKerning() {
}
-static void sp_glyph_kerning_init(SPGlyphKerning *glyph)
-{
+SPGlyphKerning::SPGlyphKerning() : SPObject() {
+ SPGlyphKerning* glyph = this;
+
glyph->cglyphkerning = new CGlyphKerning(glyph);
glyph->typeHierarchy.insert(typeid(SPGlyphKerning));
@@ -104,6 +105,11 @@ static void sp_glyph_kerning_init(SPGlyphKerning *glyph)
glyph->k = 0;
}
+static void sp_glyph_kerning_init(SPGlyphKerning *glyph)
+{
+ new (glyph) SPGlyphKerning();
+}
+
void CGlyphKerning::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPGlyphKerning* object = this->spglyphkerning;
diff --git a/src/sp-glyph-kerning.h b/src/sp-glyph-kerning.h
index 2e7fe6e82..08882f236 100644
--- a/src/sp-glyph-kerning.h
+++ b/src/sp-glyph-kerning.h
@@ -53,6 +53,7 @@ class CGlyphKerning;
class SPGlyphKerning : public SPObject {
public:
+ SPGlyphKerning();
CGlyphKerning* cglyphkerning;
UnicodeRange* u1;
diff --git a/src/sp-glyph.cpp b/src/sp-glyph.cpp
index 1554fa08f..2ab62c575 100644
--- a/src/sp-glyph.cpp
+++ b/src/sp-glyph.cpp
@@ -22,7 +22,7 @@
#include "document.h"
#include <cstring>
-G_DEFINE_TYPE(SPGlyph, sp_glyph, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPGlyph, sp_glyph, G_TYPE_OBJECT);
static void sp_glyph_class_init(SPGlyphClass *gc)
{
@@ -35,8 +35,9 @@ CGlyph::CGlyph(SPGlyph* glyph) : CObject(glyph) {
CGlyph::~CGlyph() {
}
-static void sp_glyph_init(SPGlyph *glyph)
-{
+SPGlyph::SPGlyph() : SPObject() {
+ SPGlyph* glyph = this;
+
glyph->cglyph = new CGlyph(glyph);
glyph->typeHierarchy.insert(typeid(SPGlyph));
@@ -57,6 +58,11 @@ static void sp_glyph_init(SPGlyph *glyph)
glyph->vert_adv_y = 0;
}
+static void sp_glyph_init(SPGlyph *glyph)
+{
+ new (glyph) SPGlyph();
+}
+
void CGlyph::build(SPDocument *document, Inkscape::XML::Node *repr) {
CObject::build(document, repr);
diff --git a/src/sp-glyph.h b/src/sp-glyph.h
index 4746a18e1..affa7b6f0 100644
--- a/src/sp-glyph.h
+++ b/src/sp-glyph.h
@@ -39,6 +39,7 @@ class CGlyph;
class SPGlyph : public SPObject {
public:
+ SPGlyph();
CGlyph* cglyph;
Glib::ustring unicode;
diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp
index b0a0ae816..1a1b1b1e6 100644
--- a/src/sp-gradient.cpp
+++ b/src/sp-gradient.cpp
@@ -61,13 +61,13 @@
//#define NCOLORS NR_GRADIENT_VECTOR_LENGTH
// SPStop
-G_DEFINE_TYPE(SPStop, sp_stop, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPStop, sp_stop, G_TYPE_OBJECT);
// SPMeshRow
-G_DEFINE_TYPE(SPMeshRow, sp_meshrow, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPMeshRow, sp_meshrow, G_TYPE_OBJECT);
// SPMeshPatch
-G_DEFINE_TYPE(SPMeshPatch, sp_meshpatch, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPMeshPatch, sp_meshpatch, G_TYPE_OBJECT);
/**
@@ -84,24 +84,32 @@ CStop::CStop(SPStop* stop) : CObject(stop) {
CStop::~CStop() {
}
-/**
- * Callback to initialize SPStop object.
- */
-static void
-sp_stop_init(SPStop *stop)
-{
+SPStop::SPStop() : SPObject() {
+ SPStop* stop = this;
+
stop->cstop = new CStop(stop);
stop->typeHierarchy.insert(typeid(SPStop));
delete stop->cobject;
stop->cobject = stop->cstop;
+ stop->path_string = NULL;
+
stop->offset = 0.0;
stop->currentColor = false;
stop->specified_color.set( 0x000000ff );
stop->opacity = 1.0;
}
+/**
+ * Callback to initialize SPStop object.
+ */
+static void
+sp_stop_init(SPStop *stop)
+{
+ new (stop) SPStop();
+}
+
void CStop::build(SPDocument* doc, Inkscape::XML::Node* repr) {
SPStop* object = this->spstop;
@@ -359,11 +367,9 @@ CMeshRow::CMeshRow(SPMeshRow* meshrow) : CObject(meshrow) {
CMeshRow::~CMeshRow() {
}
-/**
- * Callback to initialize SPMeshRow object.
- */
-static void sp_meshrow_init(SPMeshRow * meshrow)
-{
+SPMeshRow::SPMeshRow() : SPObject() {
+ SPMeshRow* meshrow = this;
+
meshrow->cmeshrow = new CMeshRow(meshrow);
meshrow->typeHierarchy.insert(typeid(SPMeshRow));
@@ -371,6 +377,14 @@ static void sp_meshrow_init(SPMeshRow * meshrow)
meshrow->cobject = meshrow->cmeshrow;
}
+/**
+ * Callback to initialize SPMeshRow object.
+ */
+static void sp_meshrow_init(SPMeshRow * meshrow)
+{
+ new (meshrow) SPMeshRow();
+}
+
void CMeshRow::build(SPDocument* doc, Inkscape::XML::Node* repr) {
CObject::build(doc, repr);
}
@@ -418,16 +432,24 @@ CMeshPatch::CMeshPatch(SPMeshPatch* meshpatch) : CObject(meshpatch) {
CMeshPatch::~CMeshPatch() {
}
-/**
- * Callback to initialize SPMeshPatch object.
- */
-static void sp_meshpatch_init(SPMeshPatch * meshpatch)
-{
+SPMeshPatch::SPMeshPatch() : SPObject() {
+ SPMeshPatch* meshpatch = this;
+
meshpatch->cmeshpatch = new CMeshPatch(meshpatch);
meshpatch->typeHierarchy.insert(typeid(SPMeshPatch));
delete meshpatch->cobject;
meshpatch->cobject = meshpatch->cmeshpatch;
+
+ meshpatch->tensor_string = NULL;
+}
+
+/**
+ * Callback to initialize SPMeshPatch object.
+ */
+static void sp_meshpatch_init(SPMeshPatch * meshpatch)
+{
+ new (meshpatch) SPMeshPatch();
}
void CMeshPatch::build(SPDocument* doc, Inkscape::XML::Node* repr) {
@@ -496,14 +518,14 @@ GType SPGradient::getType()
GTypeInfo gradient_info = {
sizeof(SPGradientClass),
NULL, NULL,
- (GClassInitFunc) CGradient::classInit,
+ 0, //(GClassInitFunc) CGradient::classInit,
NULL, NULL,
sizeof(SPGradient),
16,
(GInstanceInitFunc) CGradient::init,
NULL, /* value_table */
};
- gradient_type = g_type_register_static(SP_TYPE_PAINT_SERVER, "SPGradient",
+ gradient_type = g_type_register_static(G_TYPE_OBJECT, "SPGradient",
&gradient_info, (GTypeFlags)0);
}
return gradient_type;
@@ -524,11 +546,15 @@ CGradient::CGradient(SPGradient* gradient) : CPaintServer(gradient) {
CGradient::~CGradient() {
}
-/**
- * Callback for SPGradient object initialization.
- */
-void CGradient::init(SPGradient *gr)
-{
+SPGradient::SPGradient() : SPPaintServer(), units(),
+ spread(),
+ ref(NULL),
+ state(2),
+ vector() {
+
+
+ SPGradient* gr = this;
+
gr->cgradient = new CGradient(gr);
gr->typeHierarchy.insert(typeid(SPGradient));
@@ -536,6 +562,8 @@ void CGradient::init(SPGradient *gr)
gr->cpaintserver = gr->cgradient;
gr->cobject = gr->cgradient;
+ gr->has_patches = 0;
+
gr->ref = new SPGradientReference(gr);
gr->ref->changedSignal().connect(sigc::bind(sigc::ptr_fun(CGradient::gradientRefChanged), gr));
@@ -563,6 +591,14 @@ void CGradient::init(SPGradient *gr)
}
/**
+ * Callback for SPGradient object initialization.
+ */
+void CGradient::init(SPGradient *gr)
+{
+ new (gr) SPGradient();
+}
+
+/**
* Virtual build: set gradient attributes from its associated repr.
*/
void CGradient::build(SPDocument *document, Inkscape::XML::Node *repr)
@@ -1380,7 +1416,7 @@ sp_gradient_set_gs2d_matrix(SPGradient *gr, Geom::Affine const &ctm,
/*
* Linear Gradient
*/
-G_DEFINE_TYPE(SPLinearGradient, sp_lineargradient, SP_TYPE_GRADIENT);
+G_DEFINE_TYPE(SPLinearGradient, sp_lineargradient, G_TYPE_OBJECT);
/**
* SPLinearGradient vtable initialization.
@@ -1396,11 +1432,9 @@ CLinearGradient::CLinearGradient(SPLinearGradient* lineargradient) : CGradient(l
CLinearGradient::~CLinearGradient() {
}
-/**
- * Callback for SPLinearGradient object initialization.
- */
-static void sp_lineargradient_init(SPLinearGradient *lg)
-{
+SPLinearGradient::SPLinearGradient() : SPGradient() {
+ SPLinearGradient* lg = this;
+
lg->clineargradient = new CLinearGradient(lg);
lg->typeHierarchy.insert(typeid(SPLinearGradient));
@@ -1415,6 +1449,14 @@ static void sp_lineargradient_init(SPLinearGradient *lg)
lg->y2.unset(SVGLength::PERCENT, 0.0, 0.0);
}
+/**
+ * Callback for SPLinearGradient object initialization.
+ */
+static void sp_lineargradient_init(SPLinearGradient *lg)
+{
+ new (lg) SPLinearGradient();
+}
+
void CLinearGradient::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPLinearGradient* object = this->splineargradient;
@@ -1507,7 +1549,7 @@ sp_lineargradient_set_position(SPLinearGradient *lg,
/*
* Radial Gradient
*/
-G_DEFINE_TYPE(SPRadialGradient, sp_radialgradient, SP_TYPE_GRADIENT);
+G_DEFINE_TYPE(SPRadialGradient, sp_radialgradient, G_TYPE_OBJECT);
/**
* SPRadialGradient vtable initialization.
@@ -1523,12 +1565,9 @@ CRadialGradient::CRadialGradient(SPRadialGradient* radialgradient) : CGradient(r
CRadialGradient::~CRadialGradient() {
}
-/**
- * Callback for SPRadialGradient object initialization.
- */
-static void
-sp_radialgradient_init(SPRadialGradient *rg)
-{
+SPRadialGradient::SPRadialGradient() : SPGradient() {
+ SPRadialGradient* rg = this;
+
rg->cradialgradient = new CRadialGradient(rg);
rg->typeHierarchy.insert(typeid(SPRadialGradient));
@@ -1545,6 +1584,15 @@ sp_radialgradient_init(SPRadialGradient *rg)
}
/**
+ * Callback for SPRadialGradient object initialization.
+ */
+static void
+sp_radialgradient_init(SPRadialGradient *rg)
+{
+ new (rg) SPRadialGradient();
+}
+
+/**
* Set radial gradient attributes from associated repr.
*/
void CRadialGradient::build(SPDocument *document, Inkscape::XML::Node *repr) {
@@ -1661,7 +1709,7 @@ sp_radialgradient_set_position(SPRadialGradient *rg,
//#define MESH_DEBUG
-G_DEFINE_TYPE(SPMeshGradient, sp_meshgradient, SP_TYPE_GRADIENT);
+G_DEFINE_TYPE(SPMeshGradient, sp_meshgradient, G_TYPE_OBJECT);
/**
* SPMeshGradient vtable initialization.
@@ -1680,12 +1728,9 @@ CMeshGradient::CMeshGradient(SPMeshGradient* meshgradient) : CGradient(meshgradi
CMeshGradient::~CMeshGradient() {
}
-/**
- * Callback for SPMeshGradient object initialization.
- */
-static void
-sp_meshgradient_init(SPMeshGradient *mg)
-{
+SPMeshGradient::SPMeshGradient() : SPGradient() {
+ SPMeshGradient* mg = this;
+
mg->cmeshgradient = new CMeshGradient(mg);
mg->typeHierarchy.insert(typeid(SPMeshGradient));
@@ -1699,6 +1744,15 @@ sp_meshgradient_init(SPMeshGradient *mg)
mg->y.unset(SVGLength::NONE, 0.0, 0.0);
}
+/**
+ * Callback for SPMeshGradient object initialization.
+ */
+static void
+sp_meshgradient_init(SPMeshGradient *mg)
+{
+ new (mg) SPMeshGradient();
+}
+
void CMeshGradient::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPMeshGradient* object = this->spmeshgradient;
diff --git a/src/sp-gradient.h b/src/sp-gradient.h
index cd52b7ff5..2091e7ed5 100644
--- a/src/sp-gradient.h
+++ b/src/sp-gradient.h
@@ -95,6 +95,7 @@ class CGradient;
*/
class SPGradient : public SPPaintServer {
public:
+ SPGradient();
CGradient* cgradient;
private:
@@ -119,14 +120,6 @@ private:
guint has_patches : 1;
public:
- SPGradient() :
- units(),
- spread(),
- ref(NULL),
- state(2),
- vector()
- {}
-
/** Reference (href) */
SPGradientReference *ref;
diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp
index 9083a6ef7..c1fbb1d65 100644
--- a/src/sp-guide.cpp
+++ b/src/sp-guide.cpp
@@ -56,7 +56,7 @@ enum {
static void sp_guide_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
static void sp_guide_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-G_DEFINE_TYPE(SPGuide, sp_guide, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPGuide, sp_guide, G_TYPE_OBJECT);
static void sp_guide_class_init(SPGuideClass *gc)
{
@@ -89,20 +89,29 @@ CGuide::CGuide(SPGuide* guide) : CObject(guide) {
CGuide::~CGuide() {
}
-static void sp_guide_init(SPGuide *guide)
-{
+SPGuide::SPGuide() : SPObject() {
+ SPGuide* guide = this;
+
guide->cguide = new CGuide(guide);
guide->typeHierarchy.insert(typeid(SPGuide));
delete guide->cobject;
guide->cobject = guide->cguide;
+ guide->label = NULL;
+ guide->views = NULL;
+
guide->normal_to_line = Geom::Point(0.,1.);
guide->point_on_line = Geom::Point(0.,0.);
guide->color = 0x0000ff7f;
guide->hicolor = 0xff00007f;
}
+static void sp_guide_init(SPGuide *guide)
+{
+ new (guide) SPGuide();
+}
+
static void sp_guide_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec */*pspec*/)
{
SPGuide &guide = *SP_GUIDE(object);
diff --git a/src/sp-guide.h b/src/sp-guide.h
index 7c09b6482..41837a872 100644
--- a/src/sp-guide.h
+++ b/src/sp-guide.h
@@ -34,6 +34,7 @@ class CGuide;
/* Represents the constraint on p that dot(g.direction, p) == g.position. */
class SPGuide : public SPObject {
public:
+ SPGuide();
CGuide* cguide;
char* label;
diff --git a/src/sp-image.cpp b/src/sp-image.cpp
index ab3a1ac1b..ecae573e6 100644
--- a/src/sp-image.cpp
+++ b/src/sp-image.cpp
@@ -499,7 +499,7 @@ GdkPixbuf* pixbuf_new_from_file( const char *filename, GError **error )
}
}
-G_DEFINE_TYPE(SPImage, sp_image, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPImage, sp_image, G_TYPE_OBJECT);
static void sp_image_class_init( SPImageClass * klass )
{
@@ -512,8 +512,9 @@ CImage::CImage(SPImage* image) : CItem(image) {
CImage::~CImage() {
}
-static void sp_image_init( SPImage *image )
-{
+SPImage::SPImage() : SPItem() {
+ SPImage* image = this;
+
image->cimage = new CImage(image);
image->typeHierarchy.insert(typeid(SPImage));
@@ -521,6 +522,8 @@ static void sp_image_init( SPImage *image )
image->citem = image->cimage;
image->cobject = image->cimage;
+ image->aspect_clip = 0;
+
image->x.unset();
image->y.unset();
image->width.unset();
@@ -541,6 +544,11 @@ static void sp_image_init( SPImage *image )
image->lastMod = 0;
}
+static void sp_image_init( SPImage *image )
+{
+ new (image) SPImage();
+}
+
void CImage::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPImage* object = this->spimage;
diff --git a/src/sp-image.h b/src/sp-image.h
index 7389683ab..5fa57ce1c 100644
--- a/src/sp-image.h
+++ b/src/sp-image.h
@@ -31,6 +31,7 @@ class CImage;
class SPImage : public SPItem {
public:
+ SPImage();
CImage* cimage;
SVGLength x;
diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp
index cc617c9c4..0dbb078dd 100644
--- a/src/sp-item-group.cpp
+++ b/src/sp-item-group.cpp
@@ -57,7 +57,7 @@ static void sp_group_dispose(GObject *object);
static void sp_group_perform_patheffect(SPGroup *group, SPGroup *topgroup, bool write);
-G_DEFINE_TYPE(SPGroup, sp_group, SP_TYPE_LPE_ITEM);
+G_DEFINE_TYPE(SPGroup, sp_group, G_TYPE_OBJECT);
static void
sp_group_class_init (SPGroupClass *klass)
@@ -74,9 +74,9 @@ CGroup::CGroup(SPGroup *group) : CLPEItem(group) {
CGroup::~CGroup() {
}
-static void
-sp_group_init (SPGroup *group)
-{
+SPGroup::SPGroup() : SPLPEItem() {
+ SPGroup* group = this;
+
group->cgroup = new CGroup(group);
group->typeHierarchy.insert(typeid(SPGroup));
@@ -89,6 +89,12 @@ sp_group_init (SPGroup *group)
new (&group->_display_modes) std::map<unsigned int, SPGroup::LayerMode>();
}
+static void
+sp_group_init (SPGroup *group)
+{
+ new (group) SPGroup();
+}
+
void CGroup::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPGroup* object = this->spgroup;
diff --git a/src/sp-item-group.h b/src/sp-item-group.h
index 4e04b47f0..dbe745239 100644
--- a/src/sp-item-group.h
+++ b/src/sp-item-group.h
@@ -33,6 +33,7 @@ class DrawingItem;
class SPGroup : public SPLPEItem {
public:
+ SPGroup();
CGroup *cgroup;
enum LayerMode { GROUP, LAYER, MASK_HELPER };
diff --git a/src/sp-item.cpp b/src/sp-item.cpp
index 63fd25bcc..b6298e3a6 100644
--- a/src/sp-item.cpp
+++ b/src/sp-item.cpp
@@ -110,7 +110,7 @@ SPItem::SPItem() : SPObject() {
item->avoidRef = NULL;
item->_is_evaluated = false;
item->stop_paint = 0;
- item->_evaluated_status = 0;
+ item->_evaluated_status = StatusUnknown;
item->bbox_valid = 0;
item->freeze_stroke_width = false;
item->transform_center_x = 0;
diff --git a/src/sp-line.cpp b/src/sp-line.cpp
index 588e4f375..b6677baf3 100644
--- a/src/sp-line.cpp
+++ b/src/sp-line.cpp
@@ -25,7 +25,7 @@
#include "inkscape.h"
-G_DEFINE_TYPE(SPLine, sp_line, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPLine, sp_line, G_TYPE_OBJECT);
static void
sp_line_class_init(SPLineClass *klass)
@@ -39,9 +39,9 @@ CLine::CLine(SPLine* line) : CShape(line) {
CLine::~CLine() {
}
-static void
-sp_line_init(SPLine * line)
-{
+SPLine::SPLine() : SPShape() {
+ SPLine* line = this;
+
line->cline = new CLine(line);
line->typeHierarchy.insert(typeid(SPLine));
@@ -57,6 +57,12 @@ sp_line_init(SPLine * line)
line->y2.unset();
}
+static void
+sp_line_init(SPLine * line)
+{
+ new (line) SPLine();
+}
+
void CLine::build(SPDocument * document, Inkscape::XML::Node * repr) {
SPLine* object = this->spline;
diff --git a/src/sp-line.h b/src/sp-line.h
index 964c9717d..e06ba886d 100644
--- a/src/sp-line.h
+++ b/src/sp-line.h
@@ -31,6 +31,7 @@ GType sp_line_get_type(void) G_GNUC_CONST;
class SPLine : public SPShape {
public:
+ SPLine();
CLine* cline;
SVGLength x1;
diff --git a/src/sp-linear-gradient.h b/src/sp-linear-gradient.h
index 516cffe55..39aeceeef 100644
--- a/src/sp-linear-gradient.h
+++ b/src/sp-linear-gradient.h
@@ -14,6 +14,7 @@ class CLinearGradient;
/** Linear gradient. */
class SPLinearGradient : public SPGradient {
public:
+ SPLinearGradient();
CLinearGradient* clineargradient;
SVGLength x1;
diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp
index 4029d03aa..cb91418b6 100644
--- a/src/sp-mask.cpp
+++ b/src/sp-mask.cpp
@@ -37,7 +37,7 @@ struct SPMaskView {
SPMaskView *sp_mask_view_new_prepend (SPMaskView *list, unsigned int key, Inkscape::DrawingItem *arenaitem);
SPMaskView *sp_mask_view_list_remove (SPMaskView *list, SPMaskView *view);
-G_DEFINE_TYPE(SPMask, sp_mask, SP_TYPE_OBJECTGROUP);
+G_DEFINE_TYPE(SPMask, sp_mask, G_TYPE_OBJECT);
static void
sp_mask_class_init (SPMaskClass *klass)
@@ -51,9 +51,9 @@ CMask::CMask(SPMask* mask) : CObjectGroup(mask) {
CMask::~CMask() {
}
-static void
-sp_mask_init (SPMask *mask)
-{
+SPMask::SPMask() : SPObjectGroup() {
+ SPMask* mask = this;
+
mask->cmask = new CMask(mask);
mask->typeHierarchy.insert(typeid(SPMask));
@@ -70,6 +70,12 @@ sp_mask_init (SPMask *mask)
mask->display = NULL;
}
+static void
+sp_mask_init (SPMask *mask)
+{
+ new (mask) SPMask();
+}
+
void CMask::build(SPDocument* doc, Inkscape::XML::Node* repr) {
SPMask* object = this->spmask;
diff --git a/src/sp-mask.h b/src/sp-mask.h
index c254591e2..bc70d2850 100644
--- a/src/sp-mask.h
+++ b/src/sp-mask.h
@@ -36,6 +36,7 @@ class DrawingItem;
class SPMask : public SPObjectGroup {
public:
+ SPMask();
CMask* cmask;
unsigned int maskUnits_set : 1;
diff --git a/src/sp-mesh-gradient.h b/src/sp-mesh-gradient.h
index 40fc5d8e9..d8f2b3770 100644
--- a/src/sp-mesh-gradient.h
+++ b/src/sp-mesh-gradient.h
@@ -14,6 +14,7 @@ class CMeshGradient;
/** Mesh gradient. */
class SPMeshGradient : public SPGradient {
public:
+ SPMeshGradient();
CMeshGradient* cmeshgradient;
SVGLength x; // Upper left corner of mesh
diff --git a/src/sp-mesh-patch.h b/src/sp-mesh-patch.h
index 7ff7eeb47..37abbaf40 100644
--- a/src/sp-mesh-patch.h
+++ b/src/sp-mesh-patch.h
@@ -33,6 +33,7 @@ class CMeshPatch;
/** Gradient MeshPatch. */
class SPMeshPatch : public SPObject {
public:
+ SPMeshPatch();
CMeshPatch* cmeshpatch;
SPMeshPatch* getNextMeshPatch();
diff --git a/src/sp-mesh-row.h b/src/sp-mesh-row.h
index 595424a1c..463292d44 100644
--- a/src/sp-mesh-row.h
+++ b/src/sp-mesh-row.h
@@ -30,6 +30,7 @@ class CMeshRow;
/** Gradient MeshRow. */
class SPMeshRow : public SPObject {
public:
+ SPMeshRow();
CMeshRow* cmeshrow;
SPMeshRow* getNextMeshRow();
diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp
index 28bf1767b..40ed0c603 100644
--- a/src/sp-metadata.cpp
+++ b/src/sp-metadata.cpp
@@ -33,7 +33,7 @@
/* Metadata base class */
-G_DEFINE_TYPE(SPMetadata, sp_metadata, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPMetadata, sp_metadata, G_TYPE_OBJECT);
static void
sp_metadata_class_init (SPMetadataClass *klass)
@@ -47,9 +47,9 @@ CMetadata::CMetadata(SPMetadata* metadata) : CObject(metadata) {
CMetadata::~CMetadata() {
}
-static void
-sp_metadata_init (SPMetadata *metadata)
-{
+SPMetadata::SPMetadata() : SPObject() {
+ SPMetadata* metadata = this;
+
metadata->cmetadata = new CMetadata(metadata);
metadata->typeHierarchy.insert(typeid(SPMetadata));
@@ -60,6 +60,12 @@ sp_metadata_init (SPMetadata *metadata)
debug("0x%08x",(unsigned int)metadata);
}
+static void
+sp_metadata_init (SPMetadata *metadata)
+{
+ new (metadata) SPMetadata();
+}
+
namespace {
void strip_ids_recursively(Inkscape::XML::Node *node) {
diff --git a/src/sp-metadata.h b/src/sp-metadata.h
index 36da719f0..c0ec753cb 100644
--- a/src/sp-metadata.h
+++ b/src/sp-metadata.h
@@ -25,6 +25,7 @@ class CMetadata;
class SPMetadata : public SPObject {
public:
+ SPMetadata();
CMetadata* cmetadata;
};
diff --git a/src/sp-missing-glyph.cpp b/src/sp-missing-glyph.cpp
index b69c8f162..c1db6e26d 100644
--- a/src/sp-missing-glyph.cpp
+++ b/src/sp-missing-glyph.cpp
@@ -19,7 +19,7 @@
#include "sp-missing-glyph.h"
#include "document.h"
-G_DEFINE_TYPE(SPMissingGlyph, sp_missing_glyph, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPMissingGlyph, sp_missing_glyph, G_TYPE_OBJECT);
static void sp_missing_glyph_class_init(SPMissingGlyphClass *gc)
{
@@ -32,8 +32,9 @@ CMissingGlyph::CMissingGlyph(SPMissingGlyph* mg) : CObject(mg) {
CMissingGlyph::~CMissingGlyph() {
}
-static void sp_missing_glyph_init(SPMissingGlyph *glyph)
-{
+SPMissingGlyph::SPMissingGlyph() : SPObject() {
+ SPMissingGlyph* glyph = this;
+
glyph->cmissingglyph = new CMissingGlyph(glyph);
glyph->typeHierarchy.insert(typeid(SPMissingGlyph));
@@ -48,6 +49,11 @@ static void sp_missing_glyph_init(SPMissingGlyph *glyph)
glyph->vert_adv_y = 0;
}
+static void sp_missing_glyph_init(SPMissingGlyph *glyph)
+{
+ new (glyph) SPMissingGlyph();
+}
+
void CMissingGlyph::build(SPDocument* doc, Inkscape::XML::Node* repr) {
SPMissingGlyph* object = this->spmissingglyph;
diff --git a/src/sp-missing-glyph.h b/src/sp-missing-glyph.h
index cdd50cf51..3a4bab9fe 100644
--- a/src/sp-missing-glyph.h
+++ b/src/sp-missing-glyph.h
@@ -26,6 +26,7 @@ class CMissingGlyph;
class SPMissingGlyph : public SPObject {
public:
+ SPMissingGlyph();
CMissingGlyph* cmissingglyph;
char* d;
diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp
index 56e278b78..0387e45bf 100644
--- a/src/sp-namedview.cpp
+++ b/src/sp-namedview.cpp
@@ -55,7 +55,7 @@ static void sp_namedview_show_single_guide(SPGuide* guide, bool show);
static gboolean sp_str_to_bool(const gchar *str);
static gboolean sp_nv_read_opacity(const gchar *str, guint32 *color);
-G_DEFINE_TYPE(SPNamedView, sp_namedview, SP_TYPE_OBJECTGROUP);
+G_DEFINE_TYPE(SPNamedView, sp_namedview, G_TYPE_OBJECT);
static void sp_namedview_class_init(SPNamedViewClass * klass)
{
@@ -68,8 +68,9 @@ CNamedView::CNamedView(SPNamedView* view) : CObjectGroup(view) {
CNamedView::~CNamedView() {
}
-static void sp_namedview_init(SPNamedView *nv)
-{
+SPNamedView::SPNamedView() : SPObjectGroup(), snap_manager(this) {
+ SPNamedView* nv = this;
+
nv->cnamedview = new CNamedView(nv);
nv->typeHierarchy.insert(typeid(SPNamedView));
@@ -77,6 +78,24 @@ static void sp_namedview_init(SPNamedView *nv)
nv->cobjectgroup = nv->cnamedview;
nv->cobject = nv->cnamedview;
+ nv->zoom = 0;
+ nv->guidecolor = 0;
+ nv->guidehicolor = 0;
+ nv->views = NULL;
+ nv->borderlayer = 0;
+ nv->units = NULL;
+ nv->window_x = 0;
+ nv->cy = 0;
+ nv->window_y = 0;
+ nv->doc_units = NULL;
+ nv->pagecolor = 0;
+ nv->cx = 0;
+ nv->pageshadow = 0;
+ nv->window_width = 0;
+ nv->window_height = 0;
+ nv->window_maximized = 0;
+ nv->bordercolor = 0;
+
nv->editable = TRUE;
nv->showguides = TRUE;
nv->grids_visible = false;
@@ -91,7 +110,12 @@ static void sp_namedview_init(SPNamedView *nv)
nv->connector_spacing = defaultConnSpacing;
- new (&nv->snap_manager) SnapManager(nv);
+ //new (&nv->snap_manager) SnapManager(nv);
+}
+
+static void sp_namedview_init(SPNamedView *nv)
+{
+ new (nv) SPNamedView();
}
static void sp_namedview_generate_old_grid(SPNamedView * /*nv*/, SPDocument *document, Inkscape::XML::Node *repr) {
diff --git a/src/sp-namedview.h b/src/sp-namedview.h
index 0adccde75..28defe4d9 100644
--- a/src/sp-namedview.h
+++ b/src/sp-namedview.h
@@ -40,6 +40,7 @@ class CNamedView;
class SPNamedView : public SPObjectGroup {
public:
+ SPNamedView();
CNamedView* cnamedview;
unsigned int editable : 1;
diff --git a/src/sp-object-group.cpp b/src/sp-object-group.cpp
index 093d044c4..29ac0eb43 100644
--- a/src/sp-object-group.cpp
+++ b/src/sp-object-group.cpp
@@ -17,16 +17,16 @@
#include "document.h"
-G_DEFINE_TYPE(SPObjectGroup, sp_objectgroup, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPObjectGroup, sp_objectgroup, G_TYPE_OBJECT);
static void
sp_objectgroup_class_init(SPObjectGroupClass *klass)
{
}
-static void
-sp_objectgroup_init(SPObjectGroup * objectgroup)
-{
+SPObjectGroup::SPObjectGroup() : SPObject() {
+ SPObjectGroup* objectgroup = this;
+
objectgroup->cobjectgroup = new CObjectGroup(objectgroup);
objectgroup->typeHierarchy.insert(typeid(SPObjectGroup));
@@ -34,6 +34,12 @@ sp_objectgroup_init(SPObjectGroup * objectgroup)
objectgroup->cobject = objectgroup->cobjectgroup;
}
+static void
+sp_objectgroup_init(SPObjectGroup * objectgroup)
+{
+ new (objectgroup) SPObjectGroup();
+}
+
CObjectGroup::CObjectGroup(SPObjectGroup* gr) : CObject(gr) {
this->spobjectgroup = gr;
}
diff --git a/src/sp-object-group.h b/src/sp-object-group.h
index e1e4b279e..74c406b1e 100644
--- a/src/sp-object-group.h
+++ b/src/sp-object-group.h
@@ -25,6 +25,7 @@ class CObjectGroup;
class SPObjectGroup : public SPObject {
public:
+ SPObjectGroup();
CObjectGroup* cobjectgroup;
private:
diff --git a/src/sp-offset.cpp b/src/sp-offset.cpp
index 511a0c4b1..3a8bf5a10 100644
--- a/src/sp-offset.cpp
+++ b/src/sp-offset.cpp
@@ -87,7 +87,7 @@ static void sp_offset_source_modified (SPObject *iSource, guint flags, SPItem *i
// reappearing in offset when the radius becomes too large
static bool use_slow_but_correct_offset_method=false;
-G_DEFINE_TYPE(SPOffset, sp_offset, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPOffset, sp_offset, G_TYPE_OBJECT);
/**
* SPOffset vtable initialization.
@@ -106,12 +106,9 @@ COffset::COffset(SPOffset* offset) : CShape(offset) {
COffset::~COffset() {
}
-/**
- * Callback for SPOffset object initialization.
- */
-static void
-sp_offset_init(SPOffset *offset)
-{
+SPOffset::SPOffset() : SPShape() {
+ SPOffset* offset = this;
+
offset->coffset = new COffset(offset);
offset->typeHierarchy.insert(typeid(SPOffset));
@@ -141,6 +138,15 @@ sp_offset_init(SPOffset *offset)
}
/**
+ * Callback for SPOffset object initialization.
+ */
+static void
+sp_offset_init(SPOffset *offset)
+{
+ new (offset) SPOffset();
+}
+
+/**
* Callback for SPOffset finalization.
*/
static void
diff --git a/src/sp-offset.h b/src/sp-offset.h
index 78c5b6468..35030cfeb 100644
--- a/src/sp-offset.h
+++ b/src/sp-offset.h
@@ -53,6 +53,7 @@ class SPUseReference;
*/
class SPOffset : public SPShape {
public:
+ SPOffset();
COffset* coffset;
void *originalPath; ///< will be a livarot Path, just don't declare it here to please the gcc linker
diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp
index f75176f0e..cabd6809c 100644
--- a/src/sp-paint-server.cpp
+++ b/src/sp-paint-server.cpp
@@ -30,7 +30,7 @@ bool SPPaintServerReference::_acceptObject(SPObject *obj) const
return SP_IS_PAINT_SERVER(obj);
}
-G_DEFINE_TYPE(SPPaintServer, sp_paint_server, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPPaintServer, sp_paint_server, G_TYPE_OBJECT);
static void sp_paint_server_class_init(SPPaintServerClass *psc)
{
@@ -43,14 +43,22 @@ CPaintServer::CPaintServer(SPPaintServer* paintserver) : CObject(paintserver) {
CPaintServer::~CPaintServer() {
}
-static void
-sp_paint_server_init(SPPaintServer *ps)
-{
+SPPaintServer::SPPaintServer() : SPObject() {
+ SPPaintServer* ps = this;
+
ps->cpaintserver = new CPaintServer(ps);
ps->typeHierarchy.insert(typeid(SPPaintServer));
delete ps->cobject;
ps->cobject = ps->cpaintserver;
+
+ ps->swatch = 0;
+}
+
+static void
+sp_paint_server_init(SPPaintServer *ps)
+{
+ new (ps) SPPaintServer();
}
cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps,
diff --git a/src/sp-paint-server.h b/src/sp-paint-server.h
index 53e728827..d00b57efc 100644
--- a/src/sp-paint-server.h
+++ b/src/sp-paint-server.h
@@ -30,6 +30,7 @@ class CPaintServer;
class SPPaintServer : public SPObject {
public:
+ SPPaintServer();
CPaintServer* cpaintserver;
protected:
diff --git a/src/sp-path.cpp b/src/sp-path.cpp
index 43bf0a6a2..132415e51 100644
--- a/src/sp-path.cpp
+++ b/src/sp-path.cpp
@@ -53,7 +53,7 @@
static void sp_path_finalize(GObject *obj);
-G_DEFINE_TYPE(SPPath, sp_path, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPPath, sp_path, G_TYPE_OBJECT);
/**
* Does the object-oriented work of initializing the class structure
@@ -134,12 +134,9 @@ CPath::CPath(SPPath* path) : CShape(path) {
CPath::~CPath() {
}
-/**
- * Initializes an SPPath.
- */
-static void
-sp_path_init(SPPath *path)
-{
+SPPath::SPPath() : SPShape(), connEndPair(this) {
+ SPPath* path = this;
+
path->cpath = new CPath(path);
path->typeHierarchy.insert(typeid(SPPath));
@@ -149,7 +146,16 @@ sp_path_init(SPPath *path)
path->citem = path->cpath;
path->cobject = path->cpath;
- new (&path->connEndPair) SPConnEndPair(path);
+ //new (&path->connEndPair) SPConnEndPair(path);
+}
+
+/**
+ * Initializes an SPPath.
+ */
+static void
+sp_path_init(SPPath *path)
+{
+ new (path) SPPath();
}
static void
diff --git a/src/sp-path.h b/src/sp-path.h
index 21e830d4c..a9a8a217d 100644
--- a/src/sp-path.h
+++ b/src/sp-path.h
@@ -31,6 +31,7 @@ class CPath;
*/
class SPPath : public SPShape {
public:
+ SPPath();
CPath* cpath;
gint nodesInPath() const;
diff --git a/src/sp-pattern.cpp b/src/sp-pattern.cpp
index f04ba3f0a..a9b8ae2ed 100644
--- a/src/sp-pattern.cpp
+++ b/src/sp-pattern.cpp
@@ -43,7 +43,7 @@
static void pattern_ref_changed(SPObject *old_ref, SPObject *ref, SPPattern *pat);
static void pattern_ref_modified (SPObject *ref, guint flags, SPPattern *pattern);
-G_DEFINE_TYPE(SPPattern, sp_pattern, SP_TYPE_PAINT_SERVER);
+G_DEFINE_TYPE(SPPattern, sp_pattern, G_TYPE_OBJECT);
static void
sp_pattern_class_init (SPPatternClass *klass)
@@ -57,9 +57,9 @@ CPattern::CPattern(SPPattern* pattern) : CPaintServer(pattern) {
CPattern::~CPattern() {
}
-static void
-sp_pattern_init (SPPattern *pat)
-{
+SPPattern::SPPattern() : SPPaintServer() {
+ SPPattern* pat = this;
+
pat->cpattern = new CPattern(pat);
pat->typeHierarchy.insert(typeid(SPPattern));
@@ -67,6 +67,8 @@ sp_pattern_init (SPPattern *pat)
pat->cpaintserver = pat->cpattern;
pat->cobject = pat->cpattern;
+ pat->href = NULL;
+
pat->ref = new SPPatternReference(pat);
pat->ref->changedSignal().connect(sigc::bind(sigc::ptr_fun(pattern_ref_changed), pat));
@@ -89,6 +91,12 @@ sp_pattern_init (SPPattern *pat)
new (&pat->modified_connection) sigc::connection();
}
+static void
+sp_pattern_init (SPPattern *pat)
+{
+ new (pat) SPPattern();
+}
+
void CPattern::build(SPDocument* doc, Inkscape::XML::Node* repr) {
SPPattern* object = this->sppattern;
diff --git a/src/sp-pattern.h b/src/sp-pattern.h
index 5a35db4d2..7c56184fb 100644
--- a/src/sp-pattern.h
+++ b/src/sp-pattern.h
@@ -36,6 +36,7 @@ class CPattern;
class SPPattern : public SPPaintServer {
public:
+ SPPattern();
CPattern* cpattern;
/* Reference (href) */
diff --git a/src/sp-polygon.cpp b/src/sp-polygon.cpp
index 7f9192839..dd09663c7 100644
--- a/src/sp-polygon.cpp
+++ b/src/sp-polygon.cpp
@@ -25,7 +25,7 @@
#include "xml/repr.h"
#include "document.h"
-G_DEFINE_TYPE(SPPolygon, sp_polygon, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPPolygon, sp_polygon, G_TYPE_OBJECT);
static void sp_polygon_class_init(SPPolygonClass *pc)
{
@@ -38,8 +38,9 @@ CPolygon::CPolygon(SPPolygon* polygon) : CShape(polygon) {
CPolygon::~CPolygon() {
}
-static void sp_polygon_init(SPPolygon *polygon)
-{
+SPPolygon::SPPolygon() : SPShape() {
+ SPPolygon* polygon = this;
+
polygon->cpolygon = new CPolygon(polygon);
polygon->typeHierarchy.insert(typeid(SPPolygon));
@@ -50,6 +51,11 @@ static void sp_polygon_init(SPPolygon *polygon)
polygon->cobject = polygon->cpolygon;
}
+static void sp_polygon_init(SPPolygon *polygon)
+{
+ new (polygon) SPPolygon();
+}
+
void CPolygon::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPPolygon* object = this->sppolygon;
diff --git a/src/sp-polygon.h b/src/sp-polygon.h
index 2d82c7014..9486f61f3 100644
--- a/src/sp-polygon.h
+++ b/src/sp-polygon.h
@@ -23,6 +23,7 @@ class CPolygon;
class SPPolygon : public SPShape {
public:
+ SPPolygon();
CPolygon* cpolygon;
};
diff --git a/src/sp-polyline.cpp b/src/sp-polyline.cpp
index 27d17d081..83d1265df 100644
--- a/src/sp-polyline.cpp
+++ b/src/sp-polyline.cpp
@@ -21,7 +21,7 @@
#include "document.h"
-G_DEFINE_TYPE(SPPolyLine, sp_polyline, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPPolyLine, sp_polyline, G_TYPE_OBJECT);
static void
sp_polyline_class_init(SPPolyLineClass *klass)
@@ -35,8 +35,9 @@ CPolyLine::CPolyLine(SPPolyLine* polyline) : CShape(polyline) {
CPolyLine::~CPolyLine() {
}
-void sp_polyline_init(SPPolyLine * polyline)
-{
+SPPolyLine::SPPolyLine() : SPShape() {
+ SPPolyLine* polyline = this;
+
polyline->cpolyline = new CPolyLine(polyline);
polyline->typeHierarchy.insert(typeid(SPPolyLine));
@@ -47,6 +48,11 @@ void sp_polyline_init(SPPolyLine * polyline)
polyline->cobject = polyline->cpolyline;
}
+void sp_polyline_init(SPPolyLine * polyline)
+{
+ new (polyline) SPPolyLine();
+}
+
void CPolyLine::build(SPDocument * document, Inkscape::XML::Node * repr) {
SPPolyLine* object = this->sppolyline;
diff --git a/src/sp-polyline.h b/src/sp-polyline.h
index acba1bb8b..565edbfe6 100644
--- a/src/sp-polyline.h
+++ b/src/sp-polyline.h
@@ -17,6 +17,8 @@ GType sp_polyline_get_type (void) G_GNUC_CONST;
class SPPolyLine : public SPShape {
public:
+ SPPolyLine();
+
CPolyLine* cpolyline;
private:
diff --git a/src/sp-radial-gradient.h b/src/sp-radial-gradient.h
index adfa442ed..c32e8b099 100644
--- a/src/sp-radial-gradient.h
+++ b/src/sp-radial-gradient.h
@@ -15,6 +15,7 @@ class CRadialGradient;
/** Radial gradient. */
class SPRadialGradient : public SPGradient {
public:
+ SPRadialGradient();
CRadialGradient* cradialgradient;
SVGLength cx;
diff --git a/src/sp-root.cpp b/src/sp-root.cpp
index 1767c4cd2..ac2ffdbf7 100644
--- a/src/sp-root.cpp
+++ b/src/sp-root.cpp
@@ -31,7 +31,7 @@
#include "svg/svg.h"
#include "xml/repr.h"
-G_DEFINE_TYPE(SPRoot, sp_root, SP_TYPE_GROUP);
+G_DEFINE_TYPE(SPRoot, sp_root, G_TYPE_OBJECT);
/**
* Initializes an SPRootClass object by setting its class and parent class objects, and registering
@@ -48,11 +48,9 @@ CRoot::CRoot(SPRoot* root) : CGroup(root) {
CRoot::~CRoot() {
}
-/**
- * Initializes an SPRoot object by setting its default parameter values.
- */
-static void sp_root_init(SPRoot *root)
-{
+SPRoot::SPRoot() : SPGroup() {
+ SPRoot* root = this;
+
root->croot = new CRoot(root);
root->typeHierarchy.insert(typeid(SPRoot));
@@ -62,6 +60,11 @@ static void sp_root_init(SPRoot *root)
root->citem = root->croot;
root->cobject = root->croot;
+ root->aspect_set = 0;
+ root->aspect_align = 0;
+ root->onload = NULL;
+ root->aspect_clip = 0;
+
static Inkscape::Version const zero_version(0, 0);
sp_version_from_string(SVG_VERSION, &root->original.svg);
@@ -82,6 +85,14 @@ static void sp_root_init(SPRoot *root)
root->defs = NULL;
}
+/**
+ * Initializes an SPRoot object by setting its default parameter values.
+ */
+static void sp_root_init(SPRoot *root)
+{
+ new (root) SPRoot();
+}
+
void CRoot::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPRoot* object = this->sproot;
diff --git a/src/sp-root.h b/src/sp-root.h
index 56814ef2c..1a55f19b0 100644
--- a/src/sp-root.h
+++ b/src/sp-root.h
@@ -29,6 +29,7 @@ class CRoot;
/** \<svg\> element */
class SPRoot : public SPGroup {
public:
+ SPRoot();
CRoot* croot;
struct {
diff --git a/src/sp-script.cpp b/src/sp-script.cpp
index 6c2a029a0..0c286e276 100644
--- a/src/sp-script.cpp
+++ b/src/sp-script.cpp
@@ -16,7 +16,7 @@
#include <cstring>
#include "document.h"
-G_DEFINE_TYPE(SPScript, sp_script, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPScript, sp_script, G_TYPE_OBJECT);
static void sp_script_class_init(SPScriptClass *sc)
{
@@ -29,13 +29,21 @@ CScript::CScript(SPScript* script) : CObject(script) {
CScript::~CScript() {
}
-static void sp_script_init(SPScript *script)
-{
+SPScript::SPScript() : SPObject() {
+ SPScript* script = this;
+
script->cscript = new CScript(script);
script->typeHierarchy.insert(typeid(SPScript));
delete script->cobject;
script->cobject = script->cscript;
+
+ script->xlinkhref = NULL;
+}
+
+static void sp_script_init(SPScript *script)
+{
+ new (script) SPScript();
}
void CScript::build(SPDocument* doc, Inkscape::XML::Node* repr) {
diff --git a/src/sp-script.h b/src/sp-script.h
index b62ae22fc..5bb7bfbc6 100644
--- a/src/sp-script.h
+++ b/src/sp-script.h
@@ -24,6 +24,7 @@ class CScript;
class SPScript : public SPObject {
public:
+ SPScript();
CScript* cscript;
gchar *xlinkhref;
diff --git a/src/sp-spiral.cpp b/src/sp-spiral.cpp
index 6c1deb4d5..eec5e953e 100644
--- a/src/sp-spiral.cpp
+++ b/src/sp-spiral.cpp
@@ -28,7 +28,7 @@
#include "sp-spiral.h"
-G_DEFINE_TYPE(SPSpiral, sp_spiral, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPSpiral, sp_spiral, G_TYPE_OBJECT);
/**
* SPSpiral vtable initialization.
@@ -44,12 +44,9 @@ CSpiral::CSpiral(SPSpiral* spiral) : CShape(spiral) {
CSpiral::~CSpiral() {
}
-/**
- * Callback for SPSpiral object initialization.
- */
-static void
-sp_spiral_init (SPSpiral * spiral)
-{
+SPSpiral::SPSpiral() : SPShape() {
+ SPSpiral* spiral = this;
+
spiral->cspiral = new CSpiral(spiral);
spiral->typeHierarchy.insert(typeid(SPSpiral));
@@ -68,6 +65,15 @@ sp_spiral_init (SPSpiral * spiral)
spiral->t0 = 0.0;
}
+/**
+ * Callback for SPSpiral object initialization.
+ */
+static void
+sp_spiral_init (SPSpiral * spiral)
+{
+ new (spiral) SPSpiral();
+}
+
void CSpiral::build(SPDocument * document, Inkscape::XML::Node * repr) {
SPSpiral* object = this->spspiral;
diff --git a/src/sp-spiral.h b/src/sp-spiral.h
index 0ef82defc..9613a631b 100644
--- a/src/sp-spiral.h
+++ b/src/sp-spiral.h
@@ -42,6 +42,7 @@ class CSpiral;
*/
class SPSpiral : public SPShape {
public:
+ SPSpiral();
CSpiral* cspiral;
float cx, cy;
diff --git a/src/sp-star.cpp b/src/sp-star.cpp
index 0b89ed10c..11e367faf 100644
--- a/src/sp-star.cpp
+++ b/src/sp-star.cpp
@@ -32,7 +32,7 @@
#include "sp-star.h"
-G_DEFINE_TYPE(SPStar, sp_star, SP_TYPE_SHAPE);
+G_DEFINE_TYPE(SPStar, sp_star, G_TYPE_OBJECT);
static void sp_star_class_init(SPStarClass *klass)
{
@@ -45,9 +45,9 @@ CStar::CStar(SPStar* star) : CPolygon(star) {
CStar::~CStar() {
}
-static void
-sp_star_init (SPStar * star)
-{
+SPStar::SPStar() : SPPolygon() {
+ SPStar* star = this;
+
star->cstar = new CStar(star);
star->typeHierarchy.insert(typeid(SPStar));
@@ -68,6 +68,12 @@ sp_star_init (SPStar * star)
star->randomized = 0.0;
}
+static void
+sp_star_init (SPStar * star)
+{
+ new (star) SPStar();
+}
+
void CStar::build(SPDocument * document, Inkscape::XML::Node * repr) {
SPStar* object = this->spstar;
diff --git a/src/sp-star.h b/src/sp-star.h
index 43ba217ef..34a3b8989 100644
--- a/src/sp-star.h
+++ b/src/sp-star.h
@@ -28,6 +28,7 @@ typedef enum {
class SPStar : public SPPolygon {
public:
+ SPStar();
CStar* cstar;
gint sides;
diff --git a/src/sp-stop.h b/src/sp-stop.h
index 2dcf04d6c..fd0c9e001 100644
--- a/src/sp-stop.h
+++ b/src/sp-stop.h
@@ -27,6 +27,7 @@ class CStop;
/** Gradient stop. */
class SPStop : public SPObject {
public:
+ SPStop();
CStop* cstop;
/// \todo fixme: Should be SPSVGPercentage
diff --git a/src/sp-string.cpp b/src/sp-string.cpp
index 1625729b1..332ccaf31 100644
--- a/src/sp-string.cpp
+++ b/src/sp-string.cpp
@@ -37,7 +37,7 @@
# SPSTRING
#####################################################*/
-G_DEFINE_TYPE(SPString, sp_string, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPString, sp_string, G_TYPE_OBJECT);
static void
sp_string_class_init(SPStringClass *classname)
@@ -51,9 +51,9 @@ CString::CString(SPString* str) : CObject(str) {
CString::~CString() {
}
-static void
-sp_string_init(SPString *string)
-{
+SPString::SPString() : SPObject() {
+ SPString* string = this;
+
string->cstring = new CString(string);
string->typeHierarchy.insert(typeid(SPString));
@@ -63,6 +63,12 @@ sp_string_init(SPString *string)
new (&string->string) Glib::ustring();
}
+static void
+sp_string_init(SPString *string)
+{
+ new (string) SPString();
+}
+
void CString::build(SPDocument *doc, Inkscape::XML::Node *repr) {
SPString* object = this->spstring;
object->cstring->read_content();
diff --git a/src/sp-string.h b/src/sp-string.h
index 9e12f8429..64b19e950 100644
--- a/src/sp-string.h
+++ b/src/sp-string.h
@@ -18,6 +18,7 @@ class CString;
class SPString : public SPObject {
public:
+ SPString();
CString* cstring;
Glib::ustring string;
diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp
index 5fc7f6377..ac5d767f7 100644
--- a/src/sp-style-elem.cpp
+++ b/src/sp-style-elem.cpp
@@ -7,7 +7,7 @@
#include "style.h"
using Inkscape::XML::TEXT_NODE;
-G_DEFINE_TYPE(SPStyleElem, sp_style_elem, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPStyleElem, sp_style_elem, G_TYPE_OBJECT);
static void
sp_style_elem_class_init(SPStyleElemClass *klass)
@@ -21,9 +21,9 @@ CStyleElem::CStyleElem(SPStyleElem* se) : CObject(se) {
CStyleElem::~CStyleElem() {
}
-static void
-sp_style_elem_init(SPStyleElem *style_elem)
-{
+SPStyleElem::SPStyleElem() : SPObject() {
+ SPStyleElem* style_elem = this;
+
style_elem->cstyleelem = new CStyleElem(style_elem);
style_elem->typeHierarchy.insert(typeid(SPStyleElem));
@@ -34,6 +34,12 @@ sp_style_elem_init(SPStyleElem *style_elem)
style_elem->is_css = false;
}
+static void
+sp_style_elem_init(SPStyleElem *style_elem)
+{
+ new (style_elem) SPStyleElem();
+}
+
void CStyleElem::set(unsigned int key, const gchar* value) {
SPStyleElem* object = this->spstyleelem;
diff --git a/src/sp-style-elem.h b/src/sp-style-elem.h
index 46ae73f7d..2cc9dcb53 100644
--- a/src/sp-style-elem.h
+++ b/src/sp-style-elem.h
@@ -12,6 +12,7 @@ class CStyleElem;
class SPStyleElem : public SPObject {
public:
+ SPStyleElem();
CStyleElem* cstyleelem;
Media media;
diff --git a/src/sp-switch.cpp b/src/sp-switch.cpp
index 68f021fda..fe5ae1db5 100644
--- a/src/sp-switch.cpp
+++ b/src/sp-switch.cpp
@@ -25,7 +25,7 @@
#include <sigc++/functors/ptr_fun.h>
#include <sigc++/adaptors/bind.h>
-G_DEFINE_TYPE(SPSwitch, sp_switch, SP_TYPE_GROUP);
+G_DEFINE_TYPE(SPSwitch, sp_switch, G_TYPE_OBJECT);
static void
sp_switch_class_init (SPSwitchClass *)
@@ -39,8 +39,9 @@ CSwitch::CSwitch(SPSwitch* sw) : CGroup(sw) {
CSwitch::~CSwitch() {
}
-static void sp_switch_init (SPSwitch *sw)
-{
+SPSwitch::SPSwitch() : SPGroup() {
+ SPSwitch* sw = this;
+
sw->cswitch = new CSwitch(sw);
sw->typeHierarchy.insert(typeid(SPSwitch));
@@ -53,6 +54,11 @@ static void sp_switch_init (SPSwitch *sw)
sw->_cached_item = 0;
}
+static void sp_switch_init (SPSwitch *sw)
+{
+ new (sw) SPSwitch();
+}
+
SPObject *SPSwitch::_evaluateFirst() {
SPObject *first = 0;
for (SPObject *child = this->firstChild() ; child && !first ; child = child->getNext() ) {
diff --git a/src/sp-switch.h b/src/sp-switch.h
index 391815959..f60834a95 100644
--- a/src/sp-switch.h
+++ b/src/sp-switch.h
@@ -28,6 +28,7 @@ class CSwitch;
class SPSwitch : public SPGroup {
public:
+ SPSwitch();
CSwitch* cswitch;
static GType getType();
diff --git a/src/sp-symbol.cpp b/src/sp-symbol.cpp
index 43d86c746..6c1212d71 100644
--- a/src/sp-symbol.cpp
+++ b/src/sp-symbol.cpp
@@ -26,7 +26,7 @@
#include "sp-symbol.h"
#include "document.h"
-G_DEFINE_TYPE(SPSymbol, sp_symbol, SP_TYPE_GROUP);
+G_DEFINE_TYPE(SPSymbol, sp_symbol, G_TYPE_OBJECT);
static void sp_symbol_class_init(SPSymbolClass *klass)
{
@@ -39,8 +39,9 @@ CSymbol::CSymbol(SPSymbol* symbol) : CGroup(symbol) {
CSymbol::~CSymbol() {
}
-static void sp_symbol_init(SPSymbol *symbol)
-{
+SPSymbol::SPSymbol() : SPGroup() {
+ SPSymbol* symbol = this;
+
symbol->csymbol = new CSymbol(symbol);
symbol->typeHierarchy.insert(typeid(SPSymbol));
@@ -50,10 +51,19 @@ static void sp_symbol_init(SPSymbol *symbol)
symbol->citem = symbol->csymbol;
symbol->cobject = symbol->csymbol;
+ symbol->aspect_align = 0;
+ symbol->aspect_clip = 0;
+ symbol->aspect_set = 0;
+
symbol->viewBox_set = FALSE;
symbol->c2p = Geom::identity();
}
+static void sp_symbol_init(SPSymbol *symbol)
+{
+ new (symbol) SPSymbol();
+}
+
void CSymbol::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPSymbol* object = this->spsymbol;
diff --git a/src/sp-symbol.h b/src/sp-symbol.h
index 1ced63c52..a1fc0c3c0 100644
--- a/src/sp-symbol.h
+++ b/src/sp-symbol.h
@@ -30,6 +30,7 @@ class CSymbol;
class SPSymbol : public SPGroup {
public:
+ SPSymbol();
CSymbol* csymbol;
/* viewBox; */
diff --git a/src/sp-text.cpp b/src/sp-text.cpp
index 8db9b5be3..6d9cd105d 100644
--- a/src/sp-text.cpp
+++ b/src/sp-text.cpp
@@ -61,7 +61,7 @@
/*#####################################################
# SPTEXT
#####################################################*/
-G_DEFINE_TYPE(SPText, sp_text, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPText, sp_text, G_TYPE_OBJECT);
static void
sp_text_class_init (SPTextClass *classname)
@@ -75,9 +75,9 @@ CText::CText(SPText* text) : CItem(text) {
CText::~CText() {
}
-static void
-sp_text_init (SPText *text)
-{
+SPText::SPText() : SPItem() {
+ SPText* text = this;
+
text->ctext = new CText(text);
text->typeHierarchy.insert(typeid(SPText));
@@ -89,6 +89,12 @@ sp_text_init (SPText *text)
new (&text->attributes) TextTagAttributes;
}
+static void
+sp_text_init (SPText *text)
+{
+ new (text) SPText();
+}
+
void CText::release() {
SPText* object = this->sptext;
diff --git a/src/sp-text.h b/src/sp-text.h
index 51d248e1a..6ed069f6b 100644
--- a/src/sp-text.h
+++ b/src/sp-text.h
@@ -36,6 +36,7 @@ class CText;
class SPText : public SPItem {
public:
+ SPText();
CText* ctext;
/** Converts the text object to its component curves */
diff --git a/src/sp-textpath.h b/src/sp-textpath.h
index 52b18a735..e45122d13 100644
--- a/src/sp-textpath.h
+++ b/src/sp-textpath.h
@@ -17,6 +17,7 @@ class CTextPath;
class SPTextPath : public SPItem {
public:
+ SPTextPath();
CTextPath* ctextpath;
TextTagAttributes attributes;
diff --git a/src/sp-title.cpp b/src/sp-title.cpp
index 815f0e009..a71b53e38 100644
--- a/src/sp-title.cpp
+++ b/src/sp-title.cpp
@@ -16,7 +16,7 @@
#include "sp-title.h"
#include "xml/repr.h"
-G_DEFINE_TYPE(SPTitle, sp_title, SP_TYPE_OBJECT);
+G_DEFINE_TYPE(SPTitle, sp_title, G_TYPE_OBJECT);
static void
sp_title_class_init(SPTitleClass *klass)
@@ -30,9 +30,9 @@ CTitle::CTitle(SPTitle* title) : CObject(title) {
CTitle::~CTitle() {
}
-static void
-sp_title_init(SPTitle *desc)
-{
+SPTitle::SPTitle() : SPObject() {
+ SPTitle* desc = this;
+
desc->ctitle = new CTitle(desc);
desc->typeHierarchy.insert(typeid(SPTitle));
@@ -40,6 +40,12 @@ sp_title_init(SPTitle *desc)
desc->cobject = desc->ctitle;
}
+static void
+sp_title_init(SPTitle *desc)
+{
+ new (desc) SPTitle();
+}
+
Inkscape::XML::Node* CTitle::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
SPTitle* object = this->sptitle;
diff --git a/src/sp-title.h b/src/sp-title.h
index f276ab177..427021026 100644
--- a/src/sp-title.h
+++ b/src/sp-title.h
@@ -22,6 +22,7 @@ class CTitle;
class SPTitle : public SPObject {
public:
+ SPTitle();
CTitle* ctitle;
};
diff --git a/src/sp-tref.cpp b/src/sp-tref.cpp
index 398304e4c..83b0746d8 100644
--- a/src/sp-tref.cpp
+++ b/src/sp-tref.cpp
@@ -57,7 +57,7 @@ static void sp_tref_finalize(GObject *obj);
static void sp_tref_href_changed(SPObject *old_ref, SPObject *ref, SPTRef *tref);
static void sp_tref_delete_self(SPObject *deleted, SPTRef *self);
-G_DEFINE_TYPE(SPTRef, sp_tref, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPTRef, sp_tref, G_TYPE_OBJECT);
static void
sp_tref_class_init(SPTRefClass *tref_class)
@@ -73,9 +73,9 @@ CTRef::CTRef(SPTRef* tref) : CItem(tref) {
CTRef::~CTRef() {
}
-static void
-sp_tref_init(SPTRef *tref)
-{
+SPTRef::SPTRef() : SPItem() {
+ SPTRef* tref = this;
+
tref->ctref = new CTRef(tref);
tref->typeHierarchy.insert(typeid(SPTRef));
@@ -83,6 +83,8 @@ sp_tref_init(SPTRef *tref)
tref->citem = tref->ctref;
tref->cobject = tref->ctref;
+ tref->stringChild = NULL;
+
new (&tref->attributes) TextTagAttributes;
tref->href = NULL;
@@ -95,6 +97,12 @@ sp_tref_init(SPTRef *tref)
}
static void
+sp_tref_init(SPTRef *tref)
+{
+ new (tref) SPTRef();
+}
+
+static void
sp_tref_finalize(GObject *obj)
{
SPTRef *tref = (SPTRef *) obj;
diff --git a/src/sp-tref.h b/src/sp-tref.h
index e953a95be..f4271bf61 100644
--- a/src/sp-tref.h
+++ b/src/sp-tref.h
@@ -30,6 +30,7 @@ class CTRef;
class SPTRef : public SPItem {
public:
+ SPTRef();
CTRef* ctref;
// Attributes that are used in the same way they would be in a tspan
diff --git a/src/sp-tspan.cpp b/src/sp-tspan.cpp
index 853966e46..e9cc6f161 100644
--- a/src/sp-tspan.cpp
+++ b/src/sp-tspan.cpp
@@ -47,7 +47,7 @@
/*#####################################################
# SPTSPAN
#####################################################*/
-G_DEFINE_TYPE(SPTSpan, sp_tspan, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPTSpan, sp_tspan, G_TYPE_OBJECT);
static void
sp_tspan_class_init(SPTSpanClass *classname)
@@ -61,9 +61,9 @@ CTSpan::CTSpan(SPTSpan* span) : CItem(span) {
CTSpan::~CTSpan() {
}
-static void
-sp_tspan_init(SPTSpan *tspan)
-{
+SPTSpan::SPTSpan() : SPItem() {
+ SPTSpan* tspan = this;
+
tspan->ctspan = new CTSpan(tspan);
tspan->typeHierarchy.insert(typeid(SPTSpan));
@@ -75,6 +75,12 @@ sp_tspan_init(SPTSpan *tspan)
new (&tspan->attributes) TextTagAttributes;
}
+static void
+sp_tspan_init(SPTSpan *tspan)
+{
+ new (tspan) SPTSpan();
+}
+
void CTSpan::release() {
SPTSpan* object = this->sptspan;
@@ -247,7 +253,7 @@ static void sp_textpath_finalize(GObject *obj);
void refresh_textpath_source(SPTextPath* offset);
-G_DEFINE_TYPE(SPTextPath, sp_textpath, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPTextPath, sp_textpath, G_TYPE_OBJECT);
static void
sp_textpath_class_init(SPTextPathClass *classname)
@@ -264,9 +270,9 @@ CTextPath::CTextPath(SPTextPath* textpath) : CItem(textpath) {
CTextPath::~CTextPath() {
}
-static void
-sp_textpath_init(SPTextPath *textpath)
-{
+SPTextPath::SPTextPath() : SPItem() {
+ SPTextPath* textpath = this;
+
textpath->ctextpath = new CTextPath(textpath);
textpath->typeHierarchy.insert(typeid(SPTextPath));
@@ -285,6 +291,12 @@ sp_textpath_init(SPTextPath *textpath)
}
static void
+sp_textpath_init(SPTextPath *textpath)
+{
+ new (textpath) SPTextPath();
+}
+
+static void
sp_textpath_finalize(GObject *obj)
{
SPTextPath *textpath = (SPTextPath *) obj;
diff --git a/src/sp-tspan.h b/src/sp-tspan.h
index e9dd25569..69a950e2d 100644
--- a/src/sp-tspan.h
+++ b/src/sp-tspan.h
@@ -25,6 +25,7 @@ class CTSpan;
class SPTSpan : public SPItem {
public:
+ SPTSpan();
CTSpan* ctspan;
guint role : 2;
diff --git a/src/sp-use.cpp b/src/sp-use.cpp
index 64a167014..f146ef1db 100644
--- a/src/sp-use.cpp
+++ b/src/sp-use.cpp
@@ -47,7 +47,7 @@ static void sp_use_delete_self(SPObject *deleted, SPUse *self);
//void m_print(gchar *say, Geom::Affine m)
//{ g_print("%s %g %g %g %g %g %g\n", say, m[0], m[1], m[2], m[3], m[4], m[5]); }
-G_DEFINE_TYPE(SPUse, sp_use, SP_TYPE_ITEM);
+G_DEFINE_TYPE(SPUse, sp_use, G_TYPE_OBJECT);
static void
sp_use_class_init(SPUseClass *classname)
@@ -63,9 +63,9 @@ CUse::CUse(SPUse* use) : CItem(use) {
CUse::~CUse() {
}
-static void
-sp_use_init(SPUse *use)
-{
+SPUse::SPUse() : SPItem() {
+ SPUse* use = this;
+
use->cuse = new CUse(use);
use->typeHierarchy.insert(typeid(SPUse));
@@ -73,6 +73,8 @@ sp_use_init(SPUse *use)
use->citem = use->cuse;
use->cobject = use->cuse;
+ use->child = NULL;
+
use->x.unset();
use->y.unset();
use->width.unset(SVGLength::PERCENT, 1.0, 1.0);
@@ -90,6 +92,12 @@ sp_use_init(SPUse *use)
}
static void
+sp_use_init(SPUse *use)
+{
+ new (use) SPUse();
+}
+
+static void
sp_use_finalize(GObject *obj)
{
SPUse *use = reinterpret_cast<SPUse *>(obj);
diff --git a/src/sp-use.h b/src/sp-use.h
index 171b4787a..f8b3c2f66 100644
--- a/src/sp-use.h
+++ b/src/sp-use.h
@@ -28,6 +28,7 @@ class CUse;
class SPUse : public SPItem {
public:
+ SPUse();
CUse* cuse;
// item built from the original's repr (the visible clone)