diff options
Diffstat (limited to 'src')
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) |
