summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-04-07 15:10:06 +0000
committerMarkus Engel <markus.engel@tum.de>2013-04-07 15:10:06 +0000
commitd06e9965e2120f4bf6c79c9f94c1d90c04f9d80f (patch)
tree705ac5b082533d147c50fabc2c9c81a4831aebc6 /src
parentMerged more classes. (diff)
downloadinkscape-d06e9965e2120f4bf6c79c9f94c1d90c04f9d80f.tar.gz
inkscape-d06e9965e2120f4bf6c79c9f94c1d90c04f9d80f.zip
Merged FilterPrimitive and subclasses.
(bzr r11608.1.85)
Diffstat (limited to 'src')
-rw-r--r--src/filters/blend.cpp65
-rw-r--r--src/filters/blend.h24
-rw-r--r--src/filters/colormatrix.cpp65
-rw-r--r--src/filters/colormatrix.h22
-rw-r--r--src/filters/componenttransfer.cpp73
-rw-r--r--src/filters/componenttransfer.h24
-rw-r--r--src/filters/composite.cpp76
-rw-r--r--src/filters/composite.h24
-rw-r--r--src/filters/convolvematrix.cpp83
-rw-r--r--src/filters/convolvematrix.h22
-rw-r--r--src/filters/diffuselighting.cpp94
-rw-r--r--src/filters/diffuselighting.h22
-rw-r--r--src/filters/displacementmap.cpp69
-rw-r--r--src/filters/displacementmap.h22
-rw-r--r--src/filters/flood.cpp65
-rw-r--r--src/filters/flood.h27
-rw-r--r--src/filters/gaussian-blur.cpp61
-rw-r--r--src/filters/gaussian-blur.h22
-rw-r--r--src/filters/image.cpp75
-rw-r--r--src/filters/image.h22
-rw-r--r--src/filters/merge.cpp59
-rw-r--r--src/filters/merge.h23
-rw-r--r--src/filters/morphology.cpp65
-rw-r--r--src/filters/morphology.h23
-rw-r--r--src/filters/offset.cpp65
-rw-r--r--src/filters/offset.h23
-rw-r--r--src/filters/specularlighting.cpp98
-rw-r--r--src/filters/specularlighting.h23
-rw-r--r--src/filters/tile.cpp59
-rw-r--r--src/filters/tile.h22
-rw-r--r--src/filters/turbulence.cpp71
-rw-r--r--src/filters/turbulence.h23
-rw-r--r--src/sp-filter-primitive.cpp86
-rw-r--r--src/sp-filter-primitive.h25
-rw-r--r--src/sp-filter.cpp2
35 files changed, 431 insertions, 1193 deletions
diff --git a/src/filters/blend.cpp b/src/filters/blend.cpp
index 4ca8a8496..7a9a2d2b2 100644
--- a/src/filters/blend.cpp
+++ b/src/filters/blend.cpp
@@ -40,40 +40,15 @@ namespace {
bool blendRegistered = SPFactory::instance().registerObject("svg:feBlend", createBlend);
}
-/* FeBlend base class */
-G_DEFINE_TYPE(SPFeBlend, sp_feBlend, G_TYPE_OBJECT);
-
-static void
-sp_feBlend_class_init(SPFeBlendClass *klass)
-{
-}
-
-CFeBlend::CFeBlend(SPFeBlend* blend) : CFilterPrimitive(blend) {
- this->spfeblend = blend;
-}
-
-CFeBlend::~CFeBlend() {
-}
-
SPFeBlend::SPFeBlend() : SPFilterPrimitive() {
- SPFeBlend* feBlend = this;
-
- feBlend->cfeblend = new CFeBlend(feBlend);
- feBlend->typeHierarchy.insert(typeid(SPFeBlend));
+ this->cobject = this;
- delete feBlend->cfilterprimitive;
- feBlend->cfilterprimitive = feBlend->cfeblend;
- feBlend->cobject = feBlend->cfeblend;
+ this->blend_mode = Inkscape::Filters::BLEND_NORMAL;
- feBlend->blend_mode = Inkscape::Filters::BLEND_NORMAL;
-
- feBlend->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
+ this->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
-static void
-sp_feBlend_init(SPFeBlend *feBlend)
-{
- new (feBlend) SPFeBlend();
+SPFeBlend::~SPFeBlend() {
}
/**
@@ -81,12 +56,12 @@ sp_feBlend_init(SPFeBlend *feBlend)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeBlend::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeBlend* object = this->spfeblend;
+void SPFeBlend::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFeBlend* object = this;
SPFeBlend *blend = SP_FEBLEND(object);
- CFilterPrimitive::build(document, repr);
+ SPFilterPrimitive::build(document, repr);
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "mode" );
@@ -106,8 +81,8 @@ void CFeBlend::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeBlend::release() {
- CFilterPrimitive::release();
+void SPFeBlend::release() {
+ SPFilterPrimitive::release();
}
static Inkscape::Filters::FilterBlendMode sp_feBlend_readmode(gchar const *value)
@@ -144,8 +119,8 @@ static Inkscape::Filters::FilterBlendMode sp_feBlend_readmode(gchar const *value
/**
* Sets a specific value in the SPFeBlend.
*/
-void CFeBlend::set(unsigned int key, gchar const *value) {
- SPFeBlend* object = this->spfeblend;
+void SPFeBlend::set(unsigned int key, gchar const *value) {
+ SPFeBlend* object = this;
SPFeBlend *feBlend = SP_FEBLEND(object);
(void)feBlend;
@@ -169,7 +144,7 @@ void CFeBlend::set(unsigned int key, gchar const *value) {
}
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -177,8 +152,8 @@ void CFeBlend::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeBlend::update(SPCtx *ctx, guint flags) {
- SPFeBlend* object = this->spfeblend;
+void SPFeBlend::update(SPCtx *ctx, guint flags) {
+ SPFeBlend* object = this;
SPFeBlend *blend = SP_FEBLEND(object);
@@ -199,14 +174,14 @@ void CFeBlend::update(SPCtx *ctx, guint flags) {
object->getRepr()->setAttribute("in2", sp_filter_name_for_image(parent, blend->in2));
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeBlend* object = this->spfeblend;
+Inkscape::XML::Node* SPFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeBlend* object = this;
SPFeBlend *blend = SP_FEBLEND(object);
SPFilter *parent = SP_FILTER(object->parent);
@@ -246,13 +221,13 @@ Inkscape::XML::Node* CFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XML
}
repr->setAttribute("mode", mode);
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeBlend::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeBlend* primitive = this->spfeblend;
+void SPFeBlend::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeBlend* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/blend.h b/src/filters/blend.h
index 6b8e70b2f..4377f2cab 100644
--- a/src/filters/blend.h
+++ b/src/filters/blend.h
@@ -16,29 +16,16 @@
#include "sp-filter-primitive.h"
#include "display/nr-filter-blend.h"
-#define SP_TYPE_FEBLEND (sp_feBlend_get_type())
#define SP_FEBLEND(obj) ((SPFeBlend*)obj)
-#define SP_IS_FEBLEND(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeBlend)))
-
-class CFeBlend;
+#define SP_IS_FEBLEND(obj) (dynamic_cast<const SPFeBlend*>((SPObject*)obj))
class SPFeBlend : public SPFilterPrimitive {
public:
SPFeBlend();
- CFeBlend* cfeblend;
+ virtual ~SPFeBlend();
Inkscape::Filters::FilterBlendMode blend_mode;
int in2;
-};
-
-struct SPFeBlendClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeBlend : public CFilterPrimitive {
-public:
- CFeBlend(SPFeBlend* blend);
- virtual ~CFeBlend();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -50,15 +37,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeBlend* spfeblend;
};
-
-GType sp_feBlend_get_type();
-
-
#endif /* !SP_FEBLEND_H_SEEN */
/*
diff --git a/src/filters/colormatrix.cpp b/src/filters/colormatrix.cpp
index ee27a85e6..02acd30ac 100644
--- a/src/filters/colormatrix.cpp
+++ b/src/filters/colormatrix.cpp
@@ -39,39 +39,14 @@ namespace {
bool colorMatrixRegistered = SPFactory::instance().registerObject("svg:feColorMatrix", createColorMatrix);
}
-/* FeColorMatrix base class */
-G_DEFINE_TYPE(SPFeColorMatrix, sp_feColorMatrix, G_TYPE_OBJECT);
-
-static void
-sp_feColorMatrix_class_init(SPFeColorMatrixClass *klass)
-{
-}
-
-CFeColorMatrix::CFeColorMatrix(SPFeColorMatrix* matrix) : CFilterPrimitive(matrix) {
- this->spfecolormatrix = matrix;
-}
-
-CFeColorMatrix::~CFeColorMatrix() {
-}
-
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;
+ this->cobject = this;
- feColorMatrix->value = 0;
- feColorMatrix->type = Inkscape::Filters::COLORMATRIX_MATRIX;
+ this->value = 0;
+ this->type = Inkscape::Filters::COLORMATRIX_MATRIX;
}
-static void
-sp_feColorMatrix_init(SPFeColorMatrix *feColorMatrix)
-{
- new (feColorMatrix) SPFeColorMatrix();
+SPFeColorMatrix::~SPFeColorMatrix() {
}
/**
@@ -79,10 +54,10 @@ sp_feColorMatrix_init(SPFeColorMatrix *feColorMatrix)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeColorMatrix::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeColorMatrix::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
- SPFeColorMatrix* object = this->spfecolormatrix;
+ SPFeColorMatrix* object = this;
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "type" );
@@ -92,8 +67,8 @@ void CFeColorMatrix::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeColorMatrix::release() {
- CFilterPrimitive::release();
+void SPFeColorMatrix::release() {
+ SPFilterPrimitive::release();
}
static Inkscape::Filters::FilterColorMatrixType sp_feColorMatrix_read_type(gchar const *value){
@@ -118,8 +93,8 @@ static Inkscape::Filters::FilterColorMatrixType sp_feColorMatrix_read_type(gchar
/**
* Sets a specific value in the SPFeColorMatrix.
*/
-void CFeColorMatrix::set(unsigned int key, gchar const *str) {
- SPFeColorMatrix* object = this->spfecolormatrix;
+void SPFeColorMatrix::set(unsigned int key, gchar const *str) {
+ SPFeColorMatrix* object = this;
SPFeColorMatrix *feColorMatrix = SP_FECOLORMATRIX(object);
(void)feColorMatrix;
@@ -142,7 +117,7 @@ void CFeColorMatrix::set(unsigned int key, gchar const *str) {
}
break;
default:
- CFilterPrimitive::set(key, str);
+ SPFilterPrimitive::set(key, str);
break;
}
}
@@ -150,8 +125,8 @@ void CFeColorMatrix::set(unsigned int key, gchar const *str) {
/**
* Receives update notifications.
*/
-void CFeColorMatrix::update(SPCtx *ctx, guint flags) {
- SPFeColorMatrix* object = this->spfecolormatrix;
+void SPFeColorMatrix::update(SPCtx *ctx, guint flags) {
+ SPFeColorMatrix* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -160,14 +135,14 @@ void CFeColorMatrix::update(SPCtx *ctx, guint flags) {
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeColorMatrix::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeColorMatrix* object = this->spfecolormatrix;
+Inkscape::XML::Node* SPFeColorMatrix::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeColorMatrix* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -175,13 +150,13 @@ Inkscape::XML::Node* CFeColorMatrix::write(Inkscape::XML::Document *doc, Inkscap
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeColorMatrix::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeColorMatrix* primitive = this->spfecolormatrix;
+void SPFeColorMatrix::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeColorMatrix* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/colormatrix.h b/src/filters/colormatrix.h
index 430cd6fcd..3239d2f8d 100644
--- a/src/filters/colormatrix.h
+++ b/src/filters/colormatrix.h
@@ -15,30 +15,17 @@
#include "sp-filter-primitive.h"
#include "display/nr-filter-colormatrix.h"
-#define SP_TYPE_FECOLORMATRIX (sp_feColorMatrix_get_type())
#define SP_FECOLORMATRIX(obj) ((SPFeColorMatrix*)obj)
-#define SP_IS_FECOLORMATRIX(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeColorMatrix)))
-
-class CFeColorMatrix;
+#define SP_IS_FECOLORMATRIX(obj) (dynamic_cast<const SPFeColorMatrix*>((SPObject*)obj))
class SPFeColorMatrix : public SPFilterPrimitive {
public:
SPFeColorMatrix();
- CFeColorMatrix* cfecolormatrix;
+ virtual ~SPFeColorMatrix();
Inkscape::Filters::FilterColorMatrixType type;
gdouble value;
std::vector<gdouble> values;
-};
-
-struct SPFeColorMatrixClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeColorMatrix : public CFilterPrimitive {
-public:
- CFeColorMatrix(SPFeColorMatrix* matrix);
- virtual ~CFeColorMatrix();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -50,13 +37,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeColorMatrix* spfecolormatrix;
};
-GType sp_feColorMatrix_get_type();
-
#endif /* !SP_FECOLORMATRIX_H_SEEN */
/*
diff --git a/src/filters/componenttransfer.cpp b/src/filters/componenttransfer.cpp
index 0a35c9a14..96848a095 100644
--- a/src/filters/componenttransfer.cpp
+++ b/src/filters/componenttransfer.cpp
@@ -37,38 +37,13 @@ namespace {
bool componentTransferRegistered = SPFactory::instance().registerObject("svg:feComponentTransfer", createComponentTransfer);
}
-/* FeComponentTransfer base class */
-G_DEFINE_TYPE(SPFeComponentTransfer, sp_feComponentTransfer, G_TYPE_OBJECT);
-
-static void
-sp_feComponentTransfer_class_init(SPFeComponentTransferClass *klass)
-{
-}
-
-CFeComponentTransfer::CFeComponentTransfer(SPFeComponentTransfer* tr) : CFilterPrimitive(tr) {
- this->spfecomponenttransfer = tr;
-}
-
-CFeComponentTransfer::~CFeComponentTransfer() {
-}
-
SPFeComponentTransfer::SPFeComponentTransfer() : SPFilterPrimitive() {
- SPFeComponentTransfer* feComponentTransfer = this;
-
- feComponentTransfer->cfecomponenttransfer = new CFeComponentTransfer(feComponentTransfer);
- feComponentTransfer->typeHierarchy.insert(typeid(SPFeComponentTransfer));
+ this->cobject = this;
- delete feComponentTransfer->cfilterprimitive;
- feComponentTransfer->cfilterprimitive = feComponentTransfer->cfecomponenttransfer;
- feComponentTransfer->cobject = feComponentTransfer->cfecomponenttransfer;
-
- feComponentTransfer->renderer = NULL;
+ this->renderer = NULL;
}
-static void
-sp_feComponentTransfer_init(SPFeComponentTransfer *feComponentTransfer)
-{
- new (feComponentTransfer) SPFeComponentTransfer();
+SPFeComponentTransfer::~SPFeComponentTransfer() {
}
/**
@@ -76,8 +51,8 @@ sp_feComponentTransfer_init(SPFeComponentTransfer *feComponentTransfer)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeComponentTransfer::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeComponentTransfer::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
/*LOAD ATTRIBUTES FROM REPR HERE*/
@@ -121,12 +96,12 @@ static void sp_feComponentTransfer_children_modified(SPFeComponentTransfer *sp_c
/**
* Callback for child_added event.
*/
-void CFeComponentTransfer::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) {
- SPFeComponentTransfer* object = this->spfecomponenttransfer;
+void SPFeComponentTransfer::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) {
+ SPFeComponentTransfer* object = this;
SPFeComponentTransfer *f = SP_FECOMPONENTTRANSFER(object);
- CFilterPrimitive::child_added(child, ref);
+ SPFilterPrimitive::child_added(child, ref);
sp_feComponentTransfer_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
@@ -135,12 +110,12 @@ void CFeComponentTransfer::child_added(Inkscape::XML::Node *child, Inkscape::XML
/**
* Callback for remove_child event.
*/
-void CFeComponentTransfer::remove_child(Inkscape::XML::Node *child) {
- SPFeComponentTransfer* object = this->spfecomponenttransfer;
+void SPFeComponentTransfer::remove_child(Inkscape::XML::Node *child) {
+ SPFeComponentTransfer* object = this;
SPFeComponentTransfer *f = SP_FECOMPONENTTRANSFER(object);
- CFilterPrimitive::remove_child(child);
+ SPFilterPrimitive::remove_child(child);
sp_feComponentTransfer_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
@@ -149,15 +124,15 @@ void CFeComponentTransfer::remove_child(Inkscape::XML::Node *child) {
/**
* Drops any allocated memory.
*/
-void CFeComponentTransfer::release() {
- CFilterPrimitive::release();
+void SPFeComponentTransfer::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPFeComponentTransfer.
*/
-void CFeComponentTransfer::set(unsigned int key, gchar const *value) {
- SPFeComponentTransfer* object = this->spfecomponenttransfer;
+void SPFeComponentTransfer::set(unsigned int key, gchar const *value) {
+ SPFeComponentTransfer* object = this;
SPFeComponentTransfer *feComponentTransfer = SP_FECOMPONENTTRANSFER(object);
(void)feComponentTransfer;
@@ -165,7 +140,7 @@ void CFeComponentTransfer::set(unsigned int key, gchar const *value) {
switch(key) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -173,8 +148,8 @@ void CFeComponentTransfer::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeComponentTransfer::update(SPCtx *ctx, guint flags) {
- SPFeComponentTransfer* object = this->spfecomponenttransfer;
+void SPFeComponentTransfer::update(SPCtx *ctx, guint flags) {
+ SPFeComponentTransfer* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -183,14 +158,14 @@ void CFeComponentTransfer::update(SPCtx *ctx, guint flags) {
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeComponentTransfer::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeComponentTransfer* object = this->spfecomponenttransfer;
+Inkscape::XML::Node* SPFeComponentTransfer::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeComponentTransfer* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -198,13 +173,13 @@ Inkscape::XML::Node* CFeComponentTransfer::write(Inkscape::XML::Document *doc, I
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeComponentTransfer::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeComponentTransfer* primitive = this->spfecomponenttransfer;
+void SPFeComponentTransfer::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeComponentTransfer* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/componenttransfer.h b/src/filters/componenttransfer.h
index bf1d19e9b..79d842b77 100644
--- a/src/filters/componenttransfer.h
+++ b/src/filters/componenttransfer.h
@@ -13,33 +13,20 @@
#include "sp-filter-primitive.h"
-#define SP_TYPE_FECOMPONENTTRANSFER (sp_feComponentTransfer_get_type())
#define SP_FECOMPONENTTRANSFER(obj) ((SPFeComponentTransfer*)obj)
-#define SP_IS_FECOMPONENTTRANSFER(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeComponentTransfer)))
+#define SP_IS_FECOMPONENTTRANSFER(obj) (dynamic_cast<const SPFeComponentTransfer*>((SPObject*)obj))
namespace Inkscape {
namespace Filters {
class FilterComponentTransfer;
} }
-class CFeComponentTransfer;
-
class SPFeComponentTransfer : public SPFilterPrimitive {
public:
SPFeComponentTransfer();
- CFeComponentTransfer* cfecomponenttransfer;
+ virtual ~SPFeComponentTransfer();
Inkscape::Filters::FilterComponentTransfer *renderer;
-};
-
-struct SPFeComponentTransferClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeComponentTransfer : public CFilterPrimitive {
-public:
- CFeComponentTransfer(SPFeComponentTransfer* tr);
- virtual ~CFeComponentTransfer();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -54,15 +41,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeComponentTransfer* spfecomponenttransfer;
};
-
-GType sp_feComponentTransfer_get_type();
-
-
#endif /* !SP_FECOMPONENTTRANSFER_H_SEEN */
/*
diff --git a/src/filters/composite.cpp b/src/filters/composite.cpp
index a6bf107d9..ebc248c1e 100644
--- a/src/filters/composite.cpp
+++ b/src/filters/composite.cpp
@@ -35,43 +35,18 @@ namespace {
bool compositeRegistered = SPFactory::instance().registerObject("svg:feComposite", createComposite);
}
-/* FeComposite base class */
-G_DEFINE_TYPE(SPFeComposite, sp_feComposite, G_TYPE_OBJECT);
-
-static void
-sp_feComposite_class_init(SPFeCompositeClass *klass)
-{
-}
-
-CFeComposite::CFeComposite(SPFeComposite* comp) : CFilterPrimitive(comp) {
- this->spfecomposite = comp;
-}
-
-CFeComposite::~CFeComposite() {
-}
-
SPFeComposite::SPFeComposite() : SPFilterPrimitive() {
- SPFeComposite* feComposite = this;
-
- feComposite->cfecomposite = new CFeComposite(feComposite);
- feComposite->typeHierarchy.insert(typeid(SPFeComposite));
-
- delete feComposite->cfilterprimitive;
- feComposite->cfilterprimitive = feComposite->cfecomposite;
- feComposite->cobject = feComposite->cfecomposite;
-
- feComposite->composite_operator = COMPOSITE_DEFAULT;
- feComposite->k1 = 0;
- feComposite->k2 = 0;
- feComposite->k3 = 0;
- feComposite->k4 = 0;
- feComposite->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
+ this->cobject = this;
+
+ this->composite_operator = COMPOSITE_DEFAULT;
+ this->k1 = 0;
+ this->k2 = 0;
+ this->k3 = 0;
+ this->k4 = 0;
+ this->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
-static void
-sp_feComposite_init(SPFeComposite *feComposite)
-{
- new (feComposite) SPFeComposite();
+SPFeComposite::~SPFeComposite() {
}
/**
@@ -79,10 +54,10 @@ sp_feComposite_init(SPFeComposite *feComposite)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeComposite::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeComposite* object = this->spfecomposite;
+void SPFeComposite::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFeComposite* object = this;
- CFilterPrimitive::build(document, repr);
+ SPFilterPrimitive::build(document, repr);
SPFeComposite *comp = SP_FECOMPOSITE(object);
@@ -109,8 +84,8 @@ void CFeComposite::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeComposite::release() {
- CFilterPrimitive::release();
+void SPFeComposite::release() {
+ SPFilterPrimitive::release();
}
static FeCompositeOperator
@@ -129,8 +104,8 @@ sp_feComposite_read_operator(gchar const *value) {
/**
* Sets a specific value in the SPFeComposite.
*/
-void CFeComposite::set(unsigned int key, gchar const *value) {
- SPFeComposite* object = this->spfecomposite;
+void SPFeComposite::set(unsigned int key, gchar const *value) {
+ SPFeComposite* object = this;
SPFeComposite *feComposite = SP_FECOMPOSITE(object);
(void)feComposite;
@@ -193,7 +168,7 @@ void CFeComposite::set(unsigned int key, gchar const *value) {
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -201,9 +176,8 @@ void CFeComposite::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void
-CFeComposite::update(SPCtx *ctx, guint flags) {
- SPFeComposite* object = this->spfecomposite;
+void SPFeComposite::update(SPCtx *ctx, guint flags) {
+ SPFeComposite* object = this;
SPFeComposite *comp = SP_FECOMPOSITE(object);
@@ -226,14 +200,14 @@ CFeComposite::update(SPCtx *ctx, guint flags) {
object->getRepr()->setAttribute("in2", sp_filter_name_for_image(parent, comp->in2));
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeComposite::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeComposite* object = this->spfecomposite;
+Inkscape::XML::Node* SPFeComposite::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeComposite* object = this;
SPFeComposite *comp = SP_FECOMPOSITE(object);
SPFilter *parent = SP_FILTER(object->parent);
@@ -287,13 +261,13 @@ Inkscape::XML::Node* CFeComposite::write(Inkscape::XML::Document *doc, Inkscape:
repr->setAttribute("k4", 0);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeComposite::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeComposite* primitive = this->spfecomposite;
+void SPFeComposite::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeComposite* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/composite.h b/src/filters/composite.h
index 5b0ad80b7..d4272a2b0 100644
--- a/src/filters/composite.h
+++ b/src/filters/composite.h
@@ -13,9 +13,8 @@
#include "sp-filter-primitive.h"
-#define SP_TYPE_FECOMPOSITE (sp_feComposite_get_type())
#define SP_FECOMPOSITE(obj) ((SPFeComposite*)obj)
-#define SP_IS_FECOMPOSITE(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeComposite)))
+#define SP_IS_FECOMPOSITE(obj) (dynamic_cast<const SPFeComposite*>((SPObject*)obj))
enum FeCompositeOperator {
// Default value is 'over', but let's distinquish specifying the
@@ -30,28 +29,16 @@ enum FeCompositeOperator {
COMPOSITE_ENDOPERATOR
};
-class CFeComposite;
-
class SPFeComposite : public SPFilterPrimitive {
public:
SPFeComposite();
- CFeComposite* cfecomposite;
+ virtual ~SPFeComposite();
FeCompositeOperator composite_operator;
double k1, k2, k3, k4;
int in2;
-};
-
-struct SPFeCompositeClass {
- SPFilterPrimitiveClass parent_class;
-};
-class CFeComposite : public CFilterPrimitive {
-public:
- CFeComposite(SPFeComposite* comp);
- virtual ~CFeComposite();
-
- virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
+ virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
virtual void set(unsigned int key, const gchar* value);
@@ -61,13 +48,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeComposite* spfecomposite;
};
-GType sp_feComposite_get_type();
-
#endif /* !SP_FECOMPOSITE_H_SEEN */
/*
diff --git a/src/filters/convolvematrix.cpp b/src/filters/convolvematrix.cpp
index d1be96a73..5f487e9d6 100644
--- a/src/filters/convolvematrix.cpp
+++ b/src/filters/convolvematrix.cpp
@@ -38,52 +38,27 @@ namespace {
bool convolveMatrixRegistered = SPFactory::instance().registerObject("svg:feConvolveMatrix", createConvolveMatrix);
}
-/* FeConvolveMatrix base class */
-G_DEFINE_TYPE(SPFeConvolveMatrix, sp_feConvolveMatrix, G_TYPE_OBJECT);
-
-static void
-sp_feConvolveMatrix_class_init(SPFeConvolveMatrixClass *klass)
-{
-}
-
-CFeConvolveMatrix::CFeConvolveMatrix(SPFeConvolveMatrix* matrix) : CFilterPrimitive(matrix) {
- this->spfeconvolvematrix = matrix;
-}
-
-CFeConvolveMatrix::~CFeConvolveMatrix() {
-}
-
SPFeConvolveMatrix::SPFeConvolveMatrix() : SPFilterPrimitive() {
- SPFeConvolveMatrix* feConvolveMatrix = this;
-
- feConvolveMatrix->cfeconvolvematrix = new CFeConvolveMatrix(feConvolveMatrix);
- feConvolveMatrix->typeHierarchy.insert(typeid(SPFeConvolveMatrix));
-
- delete feConvolveMatrix->cfilterprimitive;
- feConvolveMatrix->cfilterprimitive = feConvolveMatrix->cfeconvolvematrix;
- feConvolveMatrix->cobject = feConvolveMatrix->cfeconvolvematrix;
+ this->cobject = this;
- feConvolveMatrix->bias = 0;
- feConvolveMatrix->divisorIsSet = 0;
- feConvolveMatrix->divisor = 0;
+ this->bias = 0;
+ this->divisorIsSet = 0;
+ this->divisor = 0;
//Setting default values:
- feConvolveMatrix->order.set("3 3");
- feConvolveMatrix->targetX = 1;
- feConvolveMatrix->targetY = 1;
- feConvolveMatrix->edgeMode = Inkscape::Filters::CONVOLVEMATRIX_EDGEMODE_DUPLICATE;
- feConvolveMatrix->preserveAlpha = false;
+ this->order.set("3 3");
+ this->targetX = 1;
+ this->targetY = 1;
+ this->edgeMode = Inkscape::Filters::CONVOLVEMATRIX_EDGEMODE_DUPLICATE;
+ this->preserveAlpha = false;
//some helper variables:
- feConvolveMatrix->targetXIsSet = false;
- feConvolveMatrix->targetYIsSet = false;
- feConvolveMatrix->kernelMatrixIsSet = false;
+ this->targetXIsSet = false;
+ this->targetYIsSet = false;
+ this->kernelMatrixIsSet = false;
}
-static void
-sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix)
-{
- new (feConvolveMatrix) SPFeConvolveMatrix();
+SPFeConvolveMatrix::~SPFeConvolveMatrix() {
}
/**
@@ -91,10 +66,10 @@ sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeConvolveMatrix::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeConvolveMatrix::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
- SPFeConvolveMatrix* object = this->spfeconvolvematrix;
+ SPFeConvolveMatrix* object = this;
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "order" );
@@ -111,8 +86,8 @@ void CFeConvolveMatrix::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeConvolveMatrix::release() {
- CFilterPrimitive::release();
+void SPFeConvolveMatrix::release() {
+ SPFilterPrimitive::release();
}
static Inkscape::Filters::FilterConvolveMatrixEdgeMode sp_feConvolveMatrix_read_edgeMode(gchar const *value){
@@ -134,8 +109,8 @@ static Inkscape::Filters::FilterConvolveMatrixEdgeMode sp_feConvolveMatrix_read_
/**
* Sets a specific value in the SPFeConvolveMatrix.
*/
-void CFeConvolveMatrix::set(unsigned int key, gchar const *value) {
- SPFeConvolveMatrix* object = this->spfeconvolvematrix;
+void SPFeConvolveMatrix::set(unsigned int key, gchar const *value) {
+ SPFeConvolveMatrix* object = this;
SPFeConvolveMatrix *feConvolveMatrix = SP_FECONVOLVEMATRIX(object);
(void)feConvolveMatrix;
@@ -250,7 +225,7 @@ void CFeConvolveMatrix::set(unsigned int key, gchar const *value) {
}
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
@@ -259,8 +234,8 @@ void CFeConvolveMatrix::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeConvolveMatrix::update(SPCtx *ctx, guint flags) {
- SPFeConvolveMatrix* object = this->spfeconvolvematrix;
+void SPFeConvolveMatrix::update(SPCtx *ctx, guint flags) {
+ SPFeConvolveMatrix* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -269,14 +244,14 @@ void CFeConvolveMatrix::update(SPCtx *ctx, guint flags) {
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeConvolveMatrix::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeConvolveMatrix* object = this->spfeconvolvematrix;
+Inkscape::XML::Node* SPFeConvolveMatrix::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeConvolveMatrix* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -285,13 +260,13 @@ Inkscape::XML::Node* CFeConvolveMatrix::write(Inkscape::XML::Document *doc, Inks
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeConvolveMatrix::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeConvolveMatrix* primitive = this->spfeconvolvematrix;
+void SPFeConvolveMatrix::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeConvolveMatrix* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/convolvematrix.h b/src/filters/convolvematrix.h
index 65f56f15d..21bf210c4 100644
--- a/src/filters/convolvematrix.h
+++ b/src/filters/convolvematrix.h
@@ -18,16 +18,13 @@
#include "number-opt-number.h"
#include "display/nr-filter-convolve-matrix.h"
-#define SP_TYPE_FECONVOLVEMATRIX (sp_feConvolveMatrix_get_type())
#define SP_FECONVOLVEMATRIX(obj) ((SPFeConvolveMatrix*)obj)
-#define SP_IS_FECONVOLVEMATRIX(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeConvolveMatrix)))
-
-class CFeConvolveMatrix;
+#define SP_IS_FECONVOLVEMATRIX(obj) (dynamic_cast<const SPFeConvolveMatrix*>((SPObject*)obj))
class SPFeConvolveMatrix : public SPFilterPrimitive {
public:
SPFeConvolveMatrix();
- CFeConvolveMatrix* cfeconvolvematrix;
+ virtual ~SPFeConvolveMatrix();
NumberOptNumber order;
std::vector<gdouble> kernelMatrix;
@@ -41,16 +38,6 @@ public:
bool targetYIsSet;
bool divisorIsSet;
bool kernelMatrixIsSet;
-};
-
-struct SPFeConvolveMatrixClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeConvolveMatrix : public CFilterPrimitive {
-public:
- CFeConvolveMatrix(SPFeConvolveMatrix* matrix);
- virtual ~CFeConvolveMatrix();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -62,13 +49,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeConvolveMatrix* spfeconvolvematrix;
};
-GType sp_feConvolveMatrix_get_type();
-
#endif /* !SP_FECONVOLVEMATRIX_H_SEEN */
/*
diff --git a/src/filters/diffuselighting.cpp b/src/filters/diffuselighting.cpp
index 8cdd5e76b..45a3bbbf9 100644
--- a/src/filters/diffuselighting.cpp
+++ b/src/filters/diffuselighting.cpp
@@ -46,47 +46,23 @@ namespace {
bool diffuseLightingRegistered = SPFactory::instance().registerObject("svg:feDiffuseLighting", createDiffuseLighting);
}
-G_DEFINE_TYPE(SPFeDiffuseLighting, sp_feDiffuseLighting, G_TYPE_OBJECT);
-
-static void
-sp_feDiffuseLighting_class_init(SPFeDiffuseLightingClass *klass)
-{
-}
-
-CFeDiffuseLighting::CFeDiffuseLighting(SPFeDiffuseLighting* dl) : CFilterPrimitive(dl) {
- this->spfediffuselighting = dl;
-}
-
-CFeDiffuseLighting::~CFeDiffuseLighting() {
-}
-
SPFeDiffuseLighting::SPFeDiffuseLighting() : SPFilterPrimitive() {
- SPFeDiffuseLighting* feDiffuseLighting = this;
-
- feDiffuseLighting->cfediffuselighting = new CFeDiffuseLighting(feDiffuseLighting);
- feDiffuseLighting->typeHierarchy.insert(typeid(SPFeDiffuseLighting));
+ this->cobject = this;
- delete feDiffuseLighting->cfilterprimitive;
- feDiffuseLighting->cfilterprimitive = feDiffuseLighting->cfediffuselighting;
- feDiffuseLighting->cobject = feDiffuseLighting->cfediffuselighting;
-
- feDiffuseLighting->surfaceScale = 1;
- feDiffuseLighting->diffuseConstant = 1;
- feDiffuseLighting->lighting_color = 0xffffffff;
- feDiffuseLighting->icc = NULL;
+ this->surfaceScale = 1;
+ this->diffuseConstant = 1;
+ this->lighting_color = 0xffffffff;
+ this->icc = NULL;
//TODO kernelUnit
- feDiffuseLighting->renderer = NULL;
+ this->renderer = NULL;
- feDiffuseLighting->surfaceScale_set = FALSE;
- feDiffuseLighting->diffuseConstant_set = FALSE;
- feDiffuseLighting->lighting_color_set = FALSE;
+ this->surfaceScale_set = FALSE;
+ this->diffuseConstant_set = FALSE;
+ this->lighting_color_set = FALSE;
}
-static void
-sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting)
-{
- new (feDiffuseLighting) SPFeDiffuseLighting();
+SPFeDiffuseLighting::~SPFeDiffuseLighting() {
}
/**
@@ -94,10 +70,10 @@ sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeDiffuseLighting::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeDiffuseLighting::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
- SPFeDiffuseLighting* object = this->spfediffuselighting;
+ SPFeDiffuseLighting* object = this;
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "surfaceScale" );
@@ -109,15 +85,15 @@ void CFeDiffuseLighting::build(SPDocument *document, Inkscape::XML::Node *repr)
/**
* Drops any allocated memory.
*/
-void CFeDiffuseLighting::release() {
- CFilterPrimitive::release();
+void SPFeDiffuseLighting::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPFeDiffuseLighting.
*/
-void CFeDiffuseLighting::set(unsigned int key, gchar const *value) {
- SPFeDiffuseLighting* object = this->spfediffuselighting;
+void SPFeDiffuseLighting::set(unsigned int key, gchar const *value) {
+ SPFeDiffuseLighting* object = this;
SPFeDiffuseLighting *feDiffuseLighting = SP_FEDIFFUSELIGHTING(object);
gchar const *cend_ptr = NULL;
@@ -198,7 +174,7 @@ void CFeDiffuseLighting::set(unsigned int key, gchar const *value) {
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -206,8 +182,8 @@ void CFeDiffuseLighting::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeDiffuseLighting::update(SPCtx *ctx, guint flags) {
- SPFeDiffuseLighting* object = this->spfediffuselighting;
+void SPFeDiffuseLighting::update(SPCtx *ctx, guint flags) {
+ SPFeDiffuseLighting* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG)) {
object->readAttr( "surfaceScale" );
@@ -216,14 +192,14 @@ void CFeDiffuseLighting::update(SPCtx *ctx, guint flags) {
object->readAttr( "lighting-color" );
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeDiffuseLighting::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeDiffuseLighting* object = this->spfediffuselighting;
+Inkscape::XML::Node* SPFeDiffuseLighting::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeDiffuseLighting* object = this;
SPFeDiffuseLighting *fediffuselighting = SP_FEDIFFUSELIGHTING(object);
@@ -250,7 +226,7 @@ Inkscape::XML::Node* CFeDiffuseLighting::write(Inkscape::XML::Document *doc, Ink
} else
repr->setAttribute("lighting-color", NULL);
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
@@ -258,12 +234,12 @@ Inkscape::XML::Node* CFeDiffuseLighting::write(Inkscape::XML::Document *doc, Ink
/**
* Callback for child_added event.
*/
-void CFeDiffuseLighting::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) {
- SPFeDiffuseLighting* object = this->spfediffuselighting;
+void SPFeDiffuseLighting::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) {
+ SPFeDiffuseLighting* object = this;
SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object);
- CFilterPrimitive::child_added(child, ref);
+ SPFilterPrimitive::child_added(child, ref);
sp_feDiffuseLighting_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
@@ -272,22 +248,22 @@ void CFeDiffuseLighting::child_added(Inkscape::XML::Node *child, Inkscape::XML::
/**
* Callback for remove_child event.
*/
-void CFeDiffuseLighting::remove_child(Inkscape::XML::Node *child) {
- SPFeDiffuseLighting* object = this->spfediffuselighting;
+void SPFeDiffuseLighting::remove_child(Inkscape::XML::Node *child) {
+ SPFeDiffuseLighting* object = this;
SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object);
- CFilterPrimitive::remove_child(child);
+ SPFilterPrimitive::remove_child(child);
sp_feDiffuseLighting_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
-void CFeDiffuseLighting::order_changed(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) {
- SPFeDiffuseLighting* object = this->spfediffuselighting;
+void SPFeDiffuseLighting::order_changed(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) {
+ SPFeDiffuseLighting* object = this;
SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object);
- CFilterPrimitive::order_changed(child, old_ref, new_ref);
+ SPFilterPrimitive::order_changed(child, old_ref, new_ref);
sp_feDiffuseLighting_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
@@ -312,8 +288,8 @@ static void sp_feDiffuseLighting_children_modified(SPFeDiffuseLighting *sp_diffu
}
}
-void CFeDiffuseLighting::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeDiffuseLighting* primitive = this->spfediffuselighting;
+void SPFeDiffuseLighting::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeDiffuseLighting* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/diffuselighting.h b/src/filters/diffuselighting.h
index 9f23aba08..0434e0638 100644
--- a/src/filters/diffuselighting.h
+++ b/src/filters/diffuselighting.h
@@ -15,9 +15,8 @@
#include "sp-filter-primitive.h"
#include "number-opt-number.h"
-#define SP_TYPE_FEDIFFUSELIGHTING (sp_feDiffuseLighting_get_type())
#define SP_FEDIFFUSELIGHTING(obj) ((SPFeDiffuseLighting*)obj)
-#define SP_IS_FEDIFFUSELIGHTING(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeDiffuseLighting)))
+#define SP_IS_FEDIFFUSELIGHTING(obj) (dynamic_cast<const SPFeDiffuseLighting*>((SPObject*)obj))
struct SVGICCColor;
@@ -26,12 +25,10 @@ namespace Filters {
class FilterDiffuseLighting;
} }
-class CFeDiffuseLighting;
-
class SPFeDiffuseLighting : public SPFilterPrimitive {
public:
SPFeDiffuseLighting();
- CFeDiffuseLighting* cfediffuselighting;
+ virtual ~SPFeDiffuseLighting();
gfloat surfaceScale;
guint surfaceScale_set : 1;
@@ -42,16 +39,6 @@ public:
guint lighting_color_set : 1;
Inkscape::Filters::FilterDiffuseLighting *renderer;
SVGICCColor *icc;
-};
-
-struct SPFeDiffuseLightingClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeDiffuseLighting : public CFilterPrimitive {
-public:
- CFeDiffuseLighting(SPFeDiffuseLighting* dl);
- virtual ~CFeDiffuseLighting();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -68,13 +55,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeDiffuseLighting* spfediffuselighting;
};
-GType sp_feDiffuseLighting_get_type();
-
#endif /* !SP_FEDIFFUSELIGHTING_H_SEEN */
/*
diff --git a/src/filters/displacementmap.cpp b/src/filters/displacementmap.cpp
index b192083c1..8a7fd09ff 100644
--- a/src/filters/displacementmap.cpp
+++ b/src/filters/displacementmap.cpp
@@ -35,41 +35,16 @@ namespace {
bool displacementMapRegistered = SPFactory::instance().registerObject("svg:feDisplacementMap", createDisplacementMap);
}
-/* FeDisplacementMap base class */
-G_DEFINE_TYPE(SPFeDisplacementMap, sp_feDisplacementMap, G_TYPE_OBJECT);
-
-static void
-sp_feDisplacementMap_class_init(SPFeDisplacementMapClass *klass)
-{
-}
-
-CFeDisplacementMap::CFeDisplacementMap(SPFeDisplacementMap* map) : CFilterPrimitive(map) {
- this->spfedisplacementmap = map;
-}
-
-CFeDisplacementMap::~CFeDisplacementMap() {
-}
-
SPFeDisplacementMap::SPFeDisplacementMap() : SPFilterPrimitive() {
- SPFeDisplacementMap* feDisplacementMap = this;
-
- feDisplacementMap->cfedisplacementmap = new CFeDisplacementMap(feDisplacementMap);
- feDisplacementMap->typeHierarchy.insert(typeid(SPFeDisplacementMap));
+ this->cobject = this;
- delete feDisplacementMap->cfilterprimitive;
- feDisplacementMap->cfilterprimitive = feDisplacementMap->cfedisplacementmap;
- feDisplacementMap->cobject = feDisplacementMap->cfedisplacementmap;
-
- feDisplacementMap->scale=0;
- feDisplacementMap->xChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA;
- feDisplacementMap->yChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA;
- feDisplacementMap->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
+ this->scale=0;
+ this->xChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA;
+ this->yChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA;
+ this->in2 = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
-static void
-sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap)
-{
- new (feDisplacementMap) SPFeDisplacementMap();
+SPFeDisplacementMap::~SPFeDisplacementMap() {
}
/**
@@ -77,10 +52,10 @@ sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeDisplacementMap::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeDisplacementMap* object = this->spfedisplacementmap;
+void SPFeDisplacementMap::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFeDisplacementMap* object = this;
- CFilterPrimitive::build(document, repr);
+ SPFilterPrimitive::build(document, repr);
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "scale" );
@@ -103,8 +78,8 @@ void CFeDisplacementMap::build(SPDocument *document, Inkscape::XML::Node *repr)
/**
* Drops any allocated memory.
*/
-void CFeDisplacementMap::release() {
- CFilterPrimitive::release();
+void SPFeDisplacementMap::release() {
+ SPFilterPrimitive::release();
}
static FilterDisplacementMapChannelSelector sp_feDisplacementMap_readChannelSelector(gchar const *value)
@@ -134,8 +109,8 @@ static FilterDisplacementMapChannelSelector sp_feDisplacementMap_readChannelSele
/**
* Sets a specific value in the SPFeDisplacementMap.
*/
-void CFeDisplacementMap::set(unsigned int key, gchar const *value) {
- SPFeDisplacementMap* object = this->spfedisplacementmap;
+void SPFeDisplacementMap::set(unsigned int key, gchar const *value) {
+ SPFeDisplacementMap* object = this;
SPFeDisplacementMap *feDisplacementMap = SP_FEDISPLACEMENTMAP(object);
(void)feDisplacementMap;
@@ -173,7 +148,7 @@ void CFeDisplacementMap::set(unsigned int key, gchar const *value) {
}
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -181,8 +156,8 @@ void CFeDisplacementMap::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeDisplacementMap::update(SPCtx *ctx, guint flags) {
- SPFeDisplacementMap* object = this->spfedisplacementmap;
+void SPFeDisplacementMap::update(SPCtx *ctx, guint flags) {
+ SPFeDisplacementMap* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -204,7 +179,7 @@ void CFeDisplacementMap::update(SPCtx *ctx, guint flags) {
object->getRepr()->setAttribute("in2", sp_filter_name_for_image(parent, disp->in2));
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
static char const * get_channelselector_name(FilterDisplacementMapChannelSelector selector) {
@@ -225,8 +200,8 @@ static char const * get_channelselector_name(FilterDisplacementMapChannelSelecto
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeDisplacementMap::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeDisplacementMap* object = this->spfedisplacementmap;
+Inkscape::XML::Node* SPFeDisplacementMap::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeDisplacementMap* object = this;
SPFeDisplacementMap *disp = SP_FEDISPLACEMENTMAP(object);
SPFilter *parent = SP_FILTER(object->parent);
@@ -255,13 +230,13 @@ Inkscape::XML::Node* CFeDisplacementMap::write(Inkscape::XML::Document *doc, Ink
repr->setAttribute("yChannelSelector",
get_channelselector_name(disp->yChannelSelector));
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeDisplacementMap::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeDisplacementMap* primitive = this->spfedisplacementmap;
+void SPFeDisplacementMap::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeDisplacementMap* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/displacementmap.h b/src/filters/displacementmap.h
index 4e0111179..484e25861 100644
--- a/src/filters/displacementmap.h
+++ b/src/filters/displacementmap.h
@@ -14,9 +14,8 @@
#include "sp-filter-primitive.h"
-#define SP_TYPE_FEDISPLACEMENTMAP (sp_feDisplacementMap_get_type())
#define SP_FEDISPLACEMENTMAP(obj) ((SPFeDisplacementMap*)obj)
-#define SP_IS_FEDISPLACEMENTMAP(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeDisplacementMap)))
+#define SP_IS_FEDISPLACEMENTMAP(obj) (dynamic_cast<const SPFeDisplacementMap*>((SPObject*)obj))
enum FilterDisplacementMapChannelSelector {
DISPLACEMENTMAP_CHANNEL_RED,
@@ -26,27 +25,15 @@ enum FilterDisplacementMapChannelSelector {
DISPLACEMENTMAP_CHANNEL_ENDTYPE
};
-class CFeDisplacementMap;
-
class SPFeDisplacementMap : public SPFilterPrimitive {
public:
SPFeDisplacementMap();
- CFeDisplacementMap* cfedisplacementmap;
+ virtual ~SPFeDisplacementMap();
int in2;
double scale;
FilterDisplacementMapChannelSelector xChannelSelector;
FilterDisplacementMapChannelSelector yChannelSelector;
-};
-
-struct SPFeDisplacementMapClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeDisplacementMap : public CFilterPrimitive {
-public:
- CFeDisplacementMap(SPFeDisplacementMap* map);
- virtual ~CFeDisplacementMap();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -58,13 +45,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeDisplacementMap* spfedisplacementmap;
};
-GType sp_feDisplacementMap_get_type();
-
#endif /* !SP_FEDISPLACEMENTMAP_H_SEEN */
/*
diff --git a/src/filters/flood.cpp b/src/filters/flood.cpp
index eb24d2748..fd6a1c1c8 100644
--- a/src/filters/flood.cpp
+++ b/src/filters/flood.cpp
@@ -37,39 +37,16 @@ namespace {
bool floodRegistered = SPFactory::instance().registerObject("svg:feFlood", createFlood);
}
-/* FeFlood base class */
-G_DEFINE_TYPE(SPFeFlood, sp_feFlood, G_TYPE_OBJECT);
-
-static void sp_feFlood_class_init(SPFeFloodClass *klass)
-{
-}
-
-CFeFlood::CFeFlood(SPFeFlood* flood) : CFilterPrimitive(flood) {
- this->spfeflood = flood;
-}
-
-CFeFlood::~CFeFlood() {
-}
-
SPFeFlood::SPFeFlood() : SPFilterPrimitive() {
- SPFeFlood* feFlood = this;
-
- feFlood->cfeflood = new CFeFlood(feFlood);
- feFlood->typeHierarchy.insert(typeid(SPFeFlood));
-
- delete feFlood->cfilterprimitive;
- feFlood->cfilterprimitive = feFlood->cfeflood;
- feFlood->cobject = feFlood->cfeflood;
+ this->cobject = this;
- feFlood->color = 0;
+ this->color = 0;
- feFlood->opacity = 1;
- feFlood->icc = NULL;
+ this->opacity = 1;
+ this->icc = NULL;
}
-static void sp_feFlood_init(SPFeFlood *feFlood)
-{
- new (feFlood) SPFeFlood();
+SPFeFlood::~SPFeFlood() {
}
/**
@@ -77,10 +54,10 @@ static void sp_feFlood_init(SPFeFlood *feFlood)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeFlood::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeFlood::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
- SPFeFlood* object = this->spfeflood;
+ SPFeFlood* object = this;
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "flood-opacity" );
@@ -90,15 +67,15 @@ void CFeFlood::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeFlood::release() {
- CFilterPrimitive::release();
+void SPFeFlood::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPFeFlood.
*/
-void CFeFlood::set(unsigned int key, gchar const *value) {
- SPFeFlood* object = this->spfeflood;
+void SPFeFlood::set(unsigned int key, gchar const *value) {
+ SPFeFlood* object = this;
SPFeFlood *feFlood = SP_FEFLOOD(object);
(void)feFlood;
@@ -156,7 +133,7 @@ void CFeFlood::set(unsigned int key, gchar const *value) {
}
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -164,8 +141,8 @@ void CFeFlood::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeFlood::update(SPCtx *ctx, guint flags) {
- SPFeFlood* object = this->spfeflood;
+void SPFeFlood::update(SPCtx *ctx, guint flags) {
+ SPFeFlood* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -174,14 +151,14 @@ void CFeFlood::update(SPCtx *ctx, guint flags) {
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeFlood::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeFlood* object = this->spfeflood;
+Inkscape::XML::Node* SPFeFlood::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeFlood* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -189,13 +166,13 @@ Inkscape::XML::Node* CFeFlood::write(Inkscape::XML::Document *doc, Inkscape::XML
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeFlood::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeFlood* primitive = this->spfeflood;
+void SPFeFlood::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeFlood* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/flood.h b/src/filters/flood.h
index 1c66da3c7..699157d48 100644
--- a/src/filters/flood.h
+++ b/src/filters/flood.h
@@ -15,35 +15,17 @@
#include "sp-filter-primitive.h"
#include "svg/svg-icc-color.h"
-G_BEGIN_DECLS
-
-#define SP_TYPE_FEFLOOD (sp_feFlood_get_type())
#define SP_FEFLOOD(obj) ((SPFeFlood*)obj)
-#define SP_IS_FEFLOOD(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeFlood)))
-
-class CFeFlood;
+#define SP_IS_FEFLOOD(obj) (dynamic_cast<const SPFeFlood*>((SPObject*)obj))
class SPFeFlood : public SPFilterPrimitive {
public:
SPFeFlood();
- CFeFlood* cfeflood;
+ virtual ~SPFeFlood();
guint32 color;
SVGICCColor *icc;
double opacity;
-};
-
-struct SPFeFloodClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-GType sp_feFlood_get_type() G_GNUC_CONST;
-
-G_END_DECLS
-class CFeFlood : public CFilterPrimitive {
-public:
- CFeFlood(SPFeFlood* flood);
- virtual ~CFeFlood();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -55,13 +37,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeFlood* spfeflood;
};
-GType sp_feFlood_get_type();
-
#endif /* !SP_FEFLOOD_H_SEEN */
/*
diff --git a/src/filters/gaussian-blur.cpp b/src/filters/gaussian-blur.cpp
index f66e045f2..df9973a8b 100644
--- a/src/filters/gaussian-blur.cpp
+++ b/src/filters/gaussian-blur.cpp
@@ -40,36 +40,11 @@ namespace {
bool gaussianBlurRegistered = SPFactory::instance().registerObject("svg:feGaussianBlur", createGaussianBlur);
}
-/* GaussianBlur base class */
-G_DEFINE_TYPE(SPGaussianBlur, sp_gaussianBlur, G_TYPE_OBJECT);
-
-static void
-sp_gaussianBlur_class_init(SPGaussianBlurClass *klass)
-{
-}
-
-CGaussianBlur::CGaussianBlur(SPGaussianBlur* gb) : CFilterPrimitive(gb) {
- this->spgaussianblur = gb;
-}
-
-CGaussianBlur::~CGaussianBlur() {
-}
-
SPGaussianBlur::SPGaussianBlur() : SPFilterPrimitive() {
- SPGaussianBlur* gaussianBlur = this;
-
- gaussianBlur->cgaussianblur = new CGaussianBlur(gaussianBlur);
- gaussianBlur->typeHierarchy.insert(typeid(SPGaussianBlur));
-
- delete gaussianBlur->cfilterprimitive;
- gaussianBlur->cfilterprimitive = gaussianBlur->cgaussianblur;
- gaussianBlur->cobject = gaussianBlur->cgaussianblur;
+ this->cobject = this;
}
-static void
-sp_gaussianBlur_init(SPGaussianBlur *gaussianBlur)
-{
- new (gaussianBlur) SPGaussianBlur();
+SPGaussianBlur::~SPGaussianBlur() {
}
/**
@@ -77,10 +52,10 @@ sp_gaussianBlur_init(SPGaussianBlur *gaussianBlur)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CGaussianBlur::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPGaussianBlur::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
- SPGaussianBlur* object = this->spgaussianblur;
+ SPGaussianBlur* object = this;
object->readAttr( "stdDeviation" );
}
@@ -88,15 +63,15 @@ void CGaussianBlur::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CGaussianBlur::release() {
- CFilterPrimitive::release();
+void SPGaussianBlur::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPGaussianBlur.
*/
-void CGaussianBlur::set(unsigned int key, gchar const *value) {
- SPGaussianBlur* object = this->spgaussianblur;
+void SPGaussianBlur::set(unsigned int key, gchar const *value) {
+ SPGaussianBlur* object = this;
SPGaussianBlur *gaussianBlur = SP_GAUSSIANBLUR(object);
@@ -106,7 +81,7 @@ void CGaussianBlur::set(unsigned int key, gchar const *value) {
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -114,21 +89,21 @@ void CGaussianBlur::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CGaussianBlur::update(SPCtx *ctx, guint flags) {
- SPGaussianBlur* object = this->spgaussianblur;
+void SPGaussianBlur::update(SPCtx *ctx, guint flags) {
+ SPGaussianBlur* object = this;
if (flags & SP_OBJECT_MODIFIED_FLAG) {
object->readAttr( "stdDeviation" );
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CGaussianBlur::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPGaussianBlur* object = this->spgaussianblur;
+Inkscape::XML::Node* SPGaussianBlur::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPGaussianBlur* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -136,7 +111,7 @@ Inkscape::XML::Node* CGaussianBlur::write(Inkscape::XML::Document *doc, Inkscape
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
@@ -151,8 +126,8 @@ void sp_gaussianBlur_setDeviation(SPGaussianBlur *blur, float num, float optnum
blur->stdDeviation.setOptNumber(optnum);
}
-void CGaussianBlur::build_renderer(Inkscape::Filters::Filter* filter) {
- SPGaussianBlur* primitive = this->spgaussianblur;
+void SPGaussianBlur::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPGaussianBlur* primitive = this;
SPGaussianBlur *sp_blur = SP_GAUSSIANBLUR(primitive);
diff --git a/src/filters/gaussian-blur.h b/src/filters/gaussian-blur.h
index b5093a5bd..4a8a58d36 100644
--- a/src/filters/gaussian-blur.h
+++ b/src/filters/gaussian-blur.h
@@ -15,30 +15,16 @@
#include "sp-filter-primitive.h"
#include "number-opt-number.h"
-#define SP_TYPE_GAUSSIANBLUR (sp_gaussianBlur_get_type())
#define SP_GAUSSIANBLUR(obj) ((SPGaussianBlur*)obj)
-#define SP_IS_GAUSSIANBLUR(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPGaussianBlur)))
-
-class CGaussianBlur;
+#define SP_IS_GAUSSIANBLUR(obj) (dynamic_cast<const SPGaussianBlur*>((SPObject*)obj))
class SPGaussianBlur : public SPFilterPrimitive {
public:
SPGaussianBlur();
- CGaussianBlur* cgaussianblur;
+ virtual ~SPGaussianBlur();
/** stdDeviation attribute */
NumberOptNumber stdDeviation;
-};
-
-/* GaussianBlur base class */
-struct SPGaussianBlurClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CGaussianBlur : public CFilterPrimitive {
-public:
- CGaussianBlur(SPGaussianBlur* gb);
- virtual ~CGaussianBlur();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -50,12 +36,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPGaussianBlur* spgaussianblur;
};
-GType sp_gaussianBlur_get_type();
void sp_gaussianBlur_setDeviation(SPGaussianBlur *blur, float num);
void sp_gaussianBlur_setDeviation(SPGaussianBlur *blur, float num, float optnum);
diff --git a/src/filters/image.cpp b/src/filters/image.cpp
index e6d1eceec..01653fc6f 100644
--- a/src/filters/image.cpp
+++ b/src/filters/image.cpp
@@ -39,43 +39,20 @@ namespace {
bool imageRegistered = SPFactory::instance().registerObject("svg:feImage", createImage);
}
-/* FeImage base class */
-G_DEFINE_TYPE(SPFeImage, sp_feImage, G_TYPE_OBJECT);
-
-static void sp_feImage_class_init(SPFeImageClass *klass)
-{
-}
-
-CFeImage::CFeImage(SPFeImage* image) : CFilterPrimitive(image) {
- this->spfeimage = image;
-}
-
-CFeImage::~CFeImage() {
-}
-
SPFeImage::SPFeImage() : SPFilterPrimitive() {
- SPFeImage* feImage = this;
-
- feImage->cfeimage = new CFeImage(feImage);
- feImage->typeHierarchy.insert(typeid(SPFeImage));
+ this->cobject = this;
- delete feImage->cfilterprimitive;
- feImage->cfilterprimitive = feImage->cfeimage;
- feImage->cobject = feImage->cfeimage;
+ this->document = NULL;
+ this->href = NULL;
+ this->from_element = 0;
+ this->SVGElemRef = NULL;
+ this->SVGElem = NULL;
- 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
+ this->aspect_align = SP_ASPECT_XMID_YMID; // Default
+ this->aspect_clip = SP_ASPECT_MEET; // Default
}
-static void sp_feImage_init(SPFeImage *feImage)
-{
- new (feImage) SPFeImage();
+SPFeImage::~SPFeImage() {
}
/**
@@ -83,14 +60,14 @@ static void sp_feImage_init(SPFeImage *feImage)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeImage::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeImage* object = this->spfeimage;
+void SPFeImage::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFeImage* object = this;
// Save document reference so we can load images with relative paths.
SPFeImage *feImage = SP_FEIMAGE(object);
feImage->document = document;
- CFilterPrimitive::build(document, repr);
+ SPFilterPrimitive::build(document, repr);
/*LOAD ATTRIBUTES FROM REPR HERE*/
@@ -101,15 +78,15 @@ void CFeImage::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeImage::release() {
- SPFeImage* object = this->spfeimage;
+void SPFeImage::release() {
+ SPFeImage* object = this;
SPFeImage *feImage = SP_FEIMAGE(object);
feImage->_image_modified_connection.disconnect();
feImage->_href_modified_connection.disconnect();
if (feImage->SVGElemRef) delete feImage->SVGElemRef;
- CFilterPrimitive::release();
+ SPFilterPrimitive::release();
}
static void sp_feImage_elem_modified(SPObject* /*href*/, guint /*flags*/, SPObject* obj)
@@ -134,8 +111,8 @@ static void sp_feImage_href_modified(SPObject* /*old_elem*/, SPObject* new_elem,
/**
* Sets a specific value in the SPFeImage.
*/
-void CFeImage::set(unsigned int key, gchar const *value) {
- SPFeImage* object = this->spfeimage;
+void SPFeImage::set(unsigned int key, gchar const *value) {
+ SPFeImage* object = this;
SPFeImage *feImage = SP_FEIMAGE(object);
(void)feImage;
@@ -239,7 +216,7 @@ void CFeImage::set(unsigned int key, gchar const *value) {
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -247,8 +224,8 @@ void CFeImage::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeImage::update(SPCtx *ctx, guint flags) {
- SPFeImage* object = this->spfeimage;
+void SPFeImage::update(SPCtx *ctx, guint flags) {
+ SPFeImage* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -256,14 +233,14 @@ void CFeImage::update(SPCtx *ctx, guint flags) {
/* do something to trigger redisplay, updates? */
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeImage::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeImage* object = this->spfeimage;
+Inkscape::XML::Node* SPFeImage::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeImage* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -271,13 +248,13 @@ Inkscape::XML::Node* CFeImage::write(Inkscape::XML::Document *doc, Inkscape::XML
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeImage::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeImage* primitive = this->spfeimage;
+void SPFeImage::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeImage* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/image.h b/src/filters/image.h
index 1faa6a8af..1554dc5e8 100644
--- a/src/filters/image.h
+++ b/src/filters/image.h
@@ -18,16 +18,13 @@
#include "sp-item.h"
#include "uri-references.h"
-#define SP_TYPE_FEIMAGE (sp_feImage_get_type())
#define SP_FEIMAGE(obj) ((SPFeImage*)obj)
-#define SP_IS_FEIMAGE(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeImage)))
-
-class CFeImage;
+#define SP_IS_FEIMAGE(obj) (dynamic_cast<const SPFeImage*>((SPObject*)obj))
class SPFeImage : public SPFilterPrimitive {
public:
SPFeImage();
- CFeImage* cfeimage;
+ virtual ~SPFeImage();
gchar *href;
@@ -41,16 +38,6 @@ public:
Inkscape::URIReference* SVGElemRef;
sigc::connection _image_modified_connection;
sigc::connection _href_modified_connection;
-};
-
-struct SPFeImageClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeImage : public CFilterPrimitive {
-public:
- CFeImage(SPFeImage* image);
- virtual ~CFeImage();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -62,13 +49,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeImage* spfeimage;
};
-GType sp_feImage_get_type();
-
#endif /* !SP_FEIMAGE_H_SEEN */
/*
diff --git a/src/filters/merge.cpp b/src/filters/merge.cpp
index 505f12887..e1770eb48 100644
--- a/src/filters/merge.cpp
+++ b/src/filters/merge.cpp
@@ -34,36 +34,11 @@ namespace {
bool mergeRegistered = SPFactory::instance().registerObject("svg:feMerge", createMerge);
}
-/* FeMerge base class */
-G_DEFINE_TYPE(SPFeMerge, sp_feMerge, G_TYPE_OBJECT);
-
-static void
-sp_feMerge_class_init(SPFeMergeClass *klass)
-{
-}
-
-CFeMerge::CFeMerge(SPFeMerge* merge) : CFilterPrimitive(merge) {
- this->spfemerge = merge;
-}
-
-CFeMerge::~CFeMerge() {
-}
-
SPFeMerge::SPFeMerge() : SPFilterPrimitive() {
- SPFeMerge* feMerge = this;
-
- feMerge->cfemerge = new CFeMerge(feMerge);
- feMerge->typeHierarchy.insert(typeid(SPFeMerge));
-
- delete feMerge->cfilterprimitive;
- feMerge->cfilterprimitive = feMerge->cfemerge;
- feMerge->cobject = feMerge->cfemerge;
+ this->cobject = this;
}
-static void
-sp_feMerge_init(SPFeMerge *feMerge)
-{
- new (feMerge) SPFeMerge();
+SPFeMerge::~SPFeMerge() {
}
/**
@@ -71,22 +46,22 @@ sp_feMerge_init(SPFeMerge *feMerge)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeMerge::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeMerge::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
}
/**
* Drops any allocated memory.
*/
-void CFeMerge::release() {
- CFilterPrimitive::release();
+void SPFeMerge::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPFeMerge.
*/
-void CFeMerge::set(unsigned int key, gchar const *value) {
- SPFeMerge* object = this->spfemerge;
+void SPFeMerge::set(unsigned int key, gchar const *value) {
+ SPFeMerge* object = this;
SPFeMerge *feMerge = SP_FEMERGE(object);
(void)feMerge;
@@ -94,7 +69,7 @@ void CFeMerge::set(unsigned int key, gchar const *value) {
switch(key) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -102,21 +77,21 @@ void CFeMerge::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeMerge::update(SPCtx *ctx, guint flags) {
- SPFeMerge* object = this->spfemerge;
+void SPFeMerge::update(SPCtx *ctx, guint flags) {
+ SPFeMerge* object = this;
if (flags & SP_OBJECT_MODIFIED_FLAG) {
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeMerge::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeMerge* object = this->spfemerge;
+Inkscape::XML::Node* SPFeMerge::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeMerge* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it. And child nodes, too! */
@@ -125,13 +100,13 @@ Inkscape::XML::Node* CFeMerge::write(Inkscape::XML::Document *doc, Inkscape::XML
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeMerge::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeMerge* primitive = this->spfemerge;
+void SPFeMerge::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeMerge* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/merge.h b/src/filters/merge.h
index 8a662297a..a2034bc08 100644
--- a/src/filters/merge.h
+++ b/src/filters/merge.h
@@ -12,26 +12,13 @@
#include "sp-filter-primitive.h"
-#define SP_TYPE_FEMERGE (sp_feMerge_get_type())
#define SP_FEMERGE(obj) ((SPFeMerge*)obj)
-#define SP_IS_FEMERGE(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeMerge)))
-
-class CFeMerge;
+#define SP_IS_FEMERGE(obj) (dynamic_cast<const SPFeMerge*>((SPObject*)obj))
class SPFeMerge : public SPFilterPrimitive {
public:
SPFeMerge();
- CFeMerge* cfemerge;
-};
-
-struct SPFeMergeClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeMerge : public CFilterPrimitive {
-public:
- CFeMerge(SPFeMerge* merge);
- virtual ~CFeMerge();
+ virtual ~SPFeMerge();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -43,14 +30,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeMerge* spfemerge;
};
-GType sp_feMerge_get_type();
-
-
#endif /* !SP_FEMERGE_H_SEEN */
/*
diff --git a/src/filters/morphology.cpp b/src/filters/morphology.cpp
index bbdb702c0..198a9057a 100644
--- a/src/filters/morphology.cpp
+++ b/src/filters/morphology.cpp
@@ -36,41 +36,16 @@ namespace {
bool morphologyRegistered = SPFactory::instance().registerObject("svg:feMorphology", createMorphology);
}
-/* FeMorphology base class */
-G_DEFINE_TYPE(SPFeMorphology, sp_feMorphology, G_TYPE_OBJECT);
-
-static void
-sp_feMorphology_class_init(SPFeMorphologyClass *klass)
-{
-}
-
-CFeMorphology::CFeMorphology(SPFeMorphology* morph) : CFilterPrimitive(morph) {
- this->spfemorphology = morph;
-}
-
-CFeMorphology::~CFeMorphology() {
-}
-
SPFeMorphology::SPFeMorphology() : SPFilterPrimitive() {
- SPFeMorphology* feMorphology = this;
-
- feMorphology->cfemorphology = new CFeMorphology(feMorphology);
- feMorphology->typeHierarchy.insert(typeid(SPFeMorphology));
-
- delete feMorphology->cfilterprimitive;
- feMorphology->cfilterprimitive = feMorphology->cfemorphology;
- feMorphology->cobject = feMorphology->cfemorphology;
+ this->cobject = this;
- feMorphology->Operator = Inkscape::Filters::MORPHOLOGY_OPERATOR_ERODE;
+ this->Operator = Inkscape::Filters::MORPHOLOGY_OPERATOR_ERODE;
//Setting default values:
- feMorphology->radius.set("0");
+ this->radius.set("0");
}
-static void
-sp_feMorphology_init(SPFeMorphology *feMorphology)
-{
- new (feMorphology) SPFeMorphology();
+SPFeMorphology::~SPFeMorphology() {
}
/**
@@ -78,10 +53,10 @@ sp_feMorphology_init(SPFeMorphology *feMorphology)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeMorphology::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeMorphology::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
- SPFeMorphology* object = this->spfemorphology;
+ SPFeMorphology* object = this;
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "operator" );
@@ -91,8 +66,8 @@ void CFeMorphology::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeMorphology::release() {
- CFilterPrimitive::release();
+void SPFeMorphology::release() {
+ SPFilterPrimitive::release();
}
static Inkscape::Filters::FilterMorphologyOperator sp_feMorphology_read_operator(gchar const *value){
@@ -111,8 +86,8 @@ static Inkscape::Filters::FilterMorphologyOperator sp_feMorphology_read_operator
/**
* Sets a specific value in the SPFeMorphology.
*/
-void CFeMorphology::set(unsigned int key, gchar const *value) {
- SPFeMorphology* object = this->spfemorphology;
+void SPFeMorphology::set(unsigned int key, gchar const *value) {
+ SPFeMorphology* object = this;
SPFeMorphology *feMorphology = SP_FEMORPHOLOGY(object);
(void)feMorphology;
@@ -135,7 +110,7 @@ void CFeMorphology::set(unsigned int key, gchar const *value) {
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
@@ -144,8 +119,8 @@ void CFeMorphology::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeMorphology::update(SPCtx *ctx, guint flags) {
- SPFeMorphology* object = this->spfemorphology;
+void SPFeMorphology::update(SPCtx *ctx, guint flags) {
+ SPFeMorphology* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -154,14 +129,14 @@ void CFeMorphology::update(SPCtx *ctx, guint flags) {
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeMorphology::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeMorphology* object = this->spfemorphology;
+Inkscape::XML::Node* SPFeMorphology::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeMorphology* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -169,13 +144,13 @@ Inkscape::XML::Node* CFeMorphology::write(Inkscape::XML::Document *doc, Inkscape
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeMorphology::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeMorphology* primitive = this->spfemorphology;
+void SPFeMorphology::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeMorphology* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/morphology.h b/src/filters/morphology.h
index 4bec4c2c6..97ab55751 100644
--- a/src/filters/morphology.h
+++ b/src/filters/morphology.h
@@ -16,29 +16,16 @@
#include "number-opt-number.h"
#include "display/nr-filter-morphology.h"
-#define SP_TYPE_FEMORPHOLOGY (sp_feMorphology_get_type())
#define SP_FEMORPHOLOGY(obj) ((SPFeMorphology*)obj)
-#define SP_IS_FEMORPHOLOGY(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeMorphology)))
-
-class CFeMorphology;
+#define SP_IS_FEMORPHOLOGY(obj) (dynamic_cast<const SPFeMorphology*>((SPObject*)obj))
class SPFeMorphology : public SPFilterPrimitive {
public:
SPFeMorphology();
- CFeMorphology* cfemorphology;
+ virtual ~SPFeMorphology();
Inkscape::Filters::FilterMorphologyOperator Operator;
NumberOptNumber radius;
-};
-
-struct SPFeMorphologyClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeMorphology : public CFilterPrimitive {
-public:
- CFeMorphology(SPFeMorphology* morph);
- virtual ~CFeMorphology();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -50,14 +37,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeMorphology* spfemorphology;
};
-GType sp_feMorphology_get_type();
-
-
#endif /* !SP_FEMORPHOLOGY_H_SEEN */
/*
diff --git a/src/filters/offset.cpp b/src/filters/offset.cpp
index ce0490e0d..dcdceaf92 100644
--- a/src/filters/offset.cpp
+++ b/src/filters/offset.cpp
@@ -35,39 +35,14 @@ namespace {
bool offsetRegistered = SPFactory::instance().registerObject("svg:feOffset", createOffset);
}
-/* FeOffset base class */
-G_DEFINE_TYPE(SPFeOffset, sp_feOffset, G_TYPE_OBJECT);
-
-static void
-sp_feOffset_class_init(SPFeOffsetClass *klass)
-{
-}
-
-CFeOffset::CFeOffset(SPFeOffset* offset) : CFilterPrimitive(offset) {
- this->spfeoffset = offset;
-}
-
-CFeOffset::~CFeOffset() {
-}
-
SPFeOffset::SPFeOffset() : SPFilterPrimitive() {
- SPFeOffset* feOffset = this;
-
- feOffset->cfeoffset = new CFeOffset(feOffset);
- feOffset->typeHierarchy.insert(typeid(SPFeOffset));
-
- delete feOffset->cfilterprimitive;
- feOffset->cfilterprimitive = feOffset->cfeoffset;
- feOffset->cobject = feOffset->cfeoffset;
+ this->cobject = this;
- feOffset->dx = 0;
- feOffset->dy = 0;
+ this->dx = 0;
+ this->dy = 0;
}
-static void
-sp_feOffset_init(SPFeOffset *feOffset)
-{
- new (feOffset) SPFeOffset();
+SPFeOffset::~SPFeOffset() {
}
/**
@@ -75,10 +50,10 @@ sp_feOffset_init(SPFeOffset *feOffset)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeOffset::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeOffset* object = this->spfeoffset;
+void SPFeOffset::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFeOffset* object = this;
- CFilterPrimitive::build(document, repr);
+ SPFilterPrimitive::build(document, repr);
object->readAttr( "dx" );
object->readAttr( "dy" );
@@ -87,15 +62,15 @@ void CFeOffset::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeOffset::release() {
- CFilterPrimitive::release();
+void SPFeOffset::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPFeOffset.
*/
-void CFeOffset::set(unsigned int key, gchar const *value) {
- SPFeOffset* object = this->spfeoffset;
+void SPFeOffset::set(unsigned int key, gchar const *value) {
+ SPFeOffset* object = this;
SPFeOffset *feOffset = SP_FEOFFSET(object);
@@ -118,7 +93,7 @@ void CFeOffset::set(unsigned int key, gchar const *value) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -126,22 +101,22 @@ void CFeOffset::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeOffset::update(SPCtx *ctx, guint flags) {
- SPFeOffset* object = this->spfeoffset;
+void SPFeOffset::update(SPCtx *ctx, guint flags) {
+ SPFeOffset* object = this;
if (flags & SP_OBJECT_MODIFIED_FLAG) {
object->readAttr( "dx" );
object->readAttr( "dy" );
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeOffset::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeOffset* object = this->spfeoffset;
+Inkscape::XML::Node* SPFeOffset::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeOffset* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -149,13 +124,13 @@ Inkscape::XML::Node* CFeOffset::write(Inkscape::XML::Document *doc, Inkscape::XM
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeOffset::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeOffset* primitive = this->spfeoffset;
+void SPFeOffset::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeOffset* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/offset.h b/src/filters/offset.h
index a34be41cf..0f0ee63ee 100644
--- a/src/filters/offset.h
+++ b/src/filters/offset.h
@@ -14,28 +14,15 @@
#include "sp-filter-primitive.h"
-#define SP_TYPE_FEOFFSET (sp_feOffset_get_type())
#define SP_FEOFFSET(obj) ((SPFeOffset*)obj)
-#define SP_IS_FEOFFSET(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeOffset)))
-
-class CFeOffset;
+#define SP_IS_FEOFFSET(obj) (dynamic_cast<const SPFeOffset*>((SPObject*)obj))
class SPFeOffset : public SPFilterPrimitive {
public:
SPFeOffset();
- CFeOffset* cfeoffset;
+ virtual ~SPFeOffset();
double dx, dy;
-};
-
-struct SPFeOffsetClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeOffset : public CFilterPrimitive {
-public:
- CFeOffset(SPFeOffset* offset);
- virtual ~CFeOffset();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -47,14 +34,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeOffset* spfeoffset;
};
-GType sp_feOffset_get_type();
-
-
#endif /* !SP_FEOFFSET_H_SEEN */
/*
diff --git a/src/filters/specularlighting.cpp b/src/filters/specularlighting.cpp
index 1409bc88b..5784bf63c 100644
--- a/src/filters/specularlighting.cpp
+++ b/src/filters/specularlighting.cpp
@@ -46,49 +46,25 @@ namespace {
bool specularLightingRegistered = SPFactory::instance().registerObject("svg:feSpecularLighting", createSpecularLighting);
}
-G_DEFINE_TYPE(SPFeSpecularLighting, sp_feSpecularLighting, G_TYPE_OBJECT);
-
-static void
-sp_feSpecularLighting_class_init(SPFeSpecularLightingClass *klass)
-{
-}
-
-CFeSpecularLighting::CFeSpecularLighting(SPFeSpecularLighting* lighting) : CFilterPrimitive(lighting) {
- this->spfespecularlighting = lighting;
-}
-
-CFeSpecularLighting::~CFeSpecularLighting() {
-}
-
SPFeSpecularLighting::SPFeSpecularLighting() : SPFilterPrimitive() {
- SPFeSpecularLighting* feSpecularLighting = this;
-
- feSpecularLighting->cfespecularlighting = new CFeSpecularLighting(feSpecularLighting);
- feSpecularLighting->typeHierarchy.insert(typeid(SPFeSpecularLighting));
+ this->cobject = this;
- delete feSpecularLighting->cfilterprimitive;
- feSpecularLighting->cfilterprimitive = feSpecularLighting->cfespecularlighting;
- feSpecularLighting->cobject = feSpecularLighting->cfespecularlighting;
-
- feSpecularLighting->surfaceScale = 1;
- feSpecularLighting->specularConstant = 1;
- feSpecularLighting->specularExponent = 1;
- feSpecularLighting->lighting_color = 0xffffffff;
- feSpecularLighting->icc = NULL;
+ this->surfaceScale = 1;
+ this->specularConstant = 1;
+ this->specularExponent = 1;
+ this->lighting_color = 0xffffffff;
+ this->icc = NULL;
//TODO kernelUnit
- feSpecularLighting->renderer = NULL;
+ this->renderer = NULL;
- feSpecularLighting->surfaceScale_set = FALSE;
- feSpecularLighting->specularConstant_set = FALSE;
- feSpecularLighting->specularExponent_set = FALSE;
- feSpecularLighting->lighting_color_set = FALSE;
+ this->surfaceScale_set = FALSE;
+ this->specularConstant_set = FALSE;
+ this->specularExponent_set = FALSE;
+ this->lighting_color_set = FALSE;
}
-static void
-sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting)
-{
- new (feSpecularLighting) SPFeSpecularLighting();
+SPFeSpecularLighting::~SPFeSpecularLighting() {
}
/**
@@ -96,10 +72,10 @@ sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeSpecularLighting::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeSpecularLighting* object = this->spfespecularlighting;
+void SPFeSpecularLighting::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFeSpecularLighting* object = this;
- CFilterPrimitive::build(document, repr);
+ SPFilterPrimitive::build(document, repr);
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "surfaceScale" );
@@ -112,15 +88,15 @@ void CFeSpecularLighting::build(SPDocument *document, Inkscape::XML::Node *repr)
/**
* Drops any allocated memory.
*/
-void CFeSpecularLighting::release() {
- CFilterPrimitive::release();
+void SPFeSpecularLighting::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPFeSpecularLighting.
*/
-void CFeSpecularLighting::set(unsigned int key, gchar const *value) {
- SPFeSpecularLighting* object = this->spfespecularlighting;
+void SPFeSpecularLighting::set(unsigned int key, gchar const *value) {
+ SPFeSpecularLighting* object = this;
SPFeSpecularLighting *feSpecularLighting = SP_FESPECULARLIGHTING(object);
gchar const *cend_ptr = NULL;
@@ -224,7 +200,7 @@ void CFeSpecularLighting::set(unsigned int key, gchar const *value) {
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -232,8 +208,8 @@ void CFeSpecularLighting::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeSpecularLighting::update(SPCtx *ctx, guint flags) {
- SPFeSpecularLighting* object = this->spfespecularlighting;
+void SPFeSpecularLighting::update(SPCtx *ctx, guint flags) {
+ SPFeSpecularLighting* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG)) {
object->readAttr( "surfaceScale" );
@@ -243,14 +219,14 @@ void CFeSpecularLighting::update(SPCtx *ctx, guint flags) {
object->readAttr( "lighting-color" );
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeSpecularLighting::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeSpecularLighting* object = this->spfespecularlighting;
+Inkscape::XML::Node* SPFeSpecularLighting::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeSpecularLighting* object = this;
SPFeSpecularLighting *fespecularlighting = SP_FESPECULARLIGHTING(object);
@@ -273,7 +249,7 @@ Inkscape::XML::Node* CFeSpecularLighting::write(Inkscape::XML::Document *doc, In
sp_svg_write_color(c, sizeof(c), fespecularlighting->lighting_color);
repr->setAttribute("lighting-color", c);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
@@ -281,12 +257,12 @@ Inkscape::XML::Node* CFeSpecularLighting::write(Inkscape::XML::Document *doc, In
/**
* Callback for child_added event.
*/
-void CFeSpecularLighting::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) {
- SPFeSpecularLighting* object = this->spfespecularlighting;
+void SPFeSpecularLighting::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) {
+ SPFeSpecularLighting* object = this;
SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object);
- CFilterPrimitive::child_added(child, ref);
+ SPFilterPrimitive::child_added(child, ref);
sp_feSpecularLighting_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
@@ -295,22 +271,22 @@ void CFeSpecularLighting::child_added(Inkscape::XML::Node *child, Inkscape::XML:
/**
* Callback for remove_child event.
*/
-void CFeSpecularLighting::remove_child(Inkscape::XML::Node *child) {
- SPFeSpecularLighting* object = this->spfespecularlighting;
+void SPFeSpecularLighting::remove_child(Inkscape::XML::Node *child) {
+ SPFeSpecularLighting* object = this;
SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object);
- CFilterPrimitive::remove_child(child);
+ SPFilterPrimitive::remove_child(child);
sp_feSpecularLighting_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
-void CFeSpecularLighting::order_changed(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) {
- SPFeSpecularLighting* object = this->spfespecularlighting;
+void SPFeSpecularLighting::order_changed(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) {
+ SPFeSpecularLighting* object = this;
SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object);
- CFilterPrimitive::order_changed(child, old_ref, new_ref);
+ SPFilterPrimitive::order_changed(child, old_ref, new_ref);
sp_feSpecularLighting_children_modified(f);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
@@ -335,8 +311,8 @@ static void sp_feSpecularLighting_children_modified(SPFeSpecularLighting *sp_spe
}
}
-void CFeSpecularLighting::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeSpecularLighting* primitive = this->spfespecularlighting;
+void SPFeSpecularLighting::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeSpecularLighting* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/specularlighting.h b/src/filters/specularlighting.h
index a6ce37ca4..2e6cde922 100644
--- a/src/filters/specularlighting.h
+++ b/src/filters/specularlighting.h
@@ -17,9 +17,8 @@
#include "sp-filter-primitive.h"
#include "number-opt-number.h"
-#define SP_TYPE_FESPECULARLIGHTING (sp_feSpecularLighting_get_type())
#define SP_FESPECULARLIGHTING(obj) ((SPFeSpecularLighting*)obj)
-#define SP_IS_FESPECULARLIGHTING(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeSpecularLighting)))
+#define SP_IS_FESPECULARLIGHTING(obj) (dynamic_cast<const SPFeSpecularLighting*>((SPObject*)obj))
struct SVGICCColor;
@@ -29,12 +28,10 @@ class FilterSpecularLighting;
}
}
-class CFeSpecularLighting;
-
class SPFeSpecularLighting : public SPFilterPrimitive {
public:
SPFeSpecularLighting();
- CFeSpecularLighting* cfespecularlighting;
+ virtual ~SPFeSpecularLighting();
gfloat surfaceScale;
guint surfaceScale_set : 1;
@@ -48,16 +45,6 @@ public:
SVGICCColor *icc;
Inkscape::Filters::FilterSpecularLighting *renderer;
-};
-
-struct SPFeSpecularLightingClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeSpecularLighting : public CFilterPrimitive {
-public:
- CFeSpecularLighting(SPFeSpecularLighting* lighting);
- virtual ~CFeSpecularLighting();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -74,14 +61,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeSpecularLighting* spfespecularlighting;
};
-GType sp_feSpecularLighting_get_type();
-
-
#endif /* !SP_FESPECULARLIGHTING_H_SEEN */
/*
diff --git a/src/filters/tile.cpp b/src/filters/tile.cpp
index f6b4c00d6..fcd366277 100644
--- a/src/filters/tile.cpp
+++ b/src/filters/tile.cpp
@@ -32,36 +32,11 @@ namespace {
bool tileRegistered = SPFactory::instance().registerObject("svg:feTile", createTile);
}
-/* FeTile base class */
-G_DEFINE_TYPE(SPFeTile, sp_feTile, G_TYPE_OBJECT);
-
-static void
-sp_feTile_class_init(SPFeTileClass *klass)
-{
-}
-
-CFeTile::CFeTile(SPFeTile* tile) : CFilterPrimitive(tile) {
- this->spfetile = tile;
-}
-
-CFeTile::~CFeTile() {
-}
-
SPFeTile::SPFeTile() : SPFilterPrimitive() {
- SPFeTile* feTile = this;
-
- feTile->cfetile = new CFeTile(feTile);
- feTile->typeHierarchy.insert(typeid(SPFeTile));
-
- delete feTile->cfilterprimitive;
- feTile->cfilterprimitive = feTile->cfetile;
- feTile->cobject = feTile->cfetile;
+ this->cobject = this;
}
-static void
-sp_feTile_init(SPFeTile *feTile)
-{
- new (feTile) SPFeTile();
+SPFeTile::~SPFeTile() {
}
/**
@@ -69,22 +44,22 @@ sp_feTile_init(SPFeTile *feTile)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeTile::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CFilterPrimitive::build(document, repr);
+void SPFeTile::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive::build(document, repr);
}
/**
* Drops any allocated memory.
*/
-void CFeTile::release() {
- CFilterPrimitive::release();
+void SPFeTile::release() {
+ SPFilterPrimitive::release();
}
/**
* Sets a specific value in the SPFeTile.
*/
-void CFeTile::set(unsigned int key, gchar const *value) {
- SPFeTile* object = this->spfetile;
+void SPFeTile::set(unsigned int key, gchar const *value) {
+ SPFeTile* object = this;
SPFeTile *feTile = SP_FETILE(object);
(void)feTile;
@@ -92,7 +67,7 @@ void CFeTile::set(unsigned int key, gchar const *value) {
switch(key) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -100,8 +75,8 @@ void CFeTile::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeTile::update(SPCtx *ctx, guint flags) {
- SPFeTile* object = this->spfetile;
+void SPFeTile::update(SPCtx *ctx, guint flags) {
+ SPFeTile* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -110,14 +85,14 @@ void CFeTile::update(SPCtx *ctx, guint flags) {
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeTile::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeTile* object = this->spfetile;
+Inkscape::XML::Node* SPFeTile::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeTile* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -125,13 +100,13 @@ Inkscape::XML::Node* CFeTile::write(Inkscape::XML::Document *doc, Inkscape::XML:
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
return repr;
}
-void CFeTile::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeTile* primitive = this->spfetile;
+void SPFeTile::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeTile* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/tile.h b/src/filters/tile.h
index b16acbeae..35266c611 100644
--- a/src/filters/tile.h
+++ b/src/filters/tile.h
@@ -14,27 +14,14 @@
#include "sp-filter-primitive.h"
-#define SP_TYPE_FETILE (sp_feTile_get_type())
#define SP_FETILE(obj) ((SPFeTile*)obj)
-#define SP_IS_FETILE(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeTile)))
+#define SP_IS_FETILE(obj) (dynamic_cast<const SPFeTile*>((SPObject*)obj))
/* FeTile base class */
-class CFeTile;
-
class SPFeTile : public SPFilterPrimitive {
public:
SPFeTile();
- CFeTile* cfetile;
-};
-
-struct SPFeTileClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeTile : public CFilterPrimitive {
-public:
- CFeTile(SPFeTile* tile);
- virtual ~CFeTile();
+ virtual ~SPFeTile();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -46,13 +33,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeTile* spfetile;
};
-GType sp_feTile_get_type();
-
#endif /* !SP_FETILE_H_SEEN */
/*
diff --git a/src/filters/turbulence.cpp b/src/filters/turbulence.cpp
index 8aa168114..8519d730d 100644
--- a/src/filters/turbulence.cpp
+++ b/src/filters/turbulence.cpp
@@ -38,43 +38,18 @@ namespace {
bool turbulenceRegistered = SPFactory::instance().registerObject("svg:feTurbulence", createTurbulence);
}
-/* FeTurbulence base class */
-G_DEFINE_TYPE(SPFeTurbulence, sp_feTurbulence, G_TYPE_OBJECT);
-
-static void
-sp_feTurbulence_class_init(SPFeTurbulenceClass *klass)
-{
-}
-
-CFeTurbulence::CFeTurbulence(SPFeTurbulence* turb) : CFilterPrimitive(turb) {
- this->spfeturbulence = turb;
-}
-
-CFeTurbulence::~CFeTurbulence() {
-}
-
SPFeTurbulence::SPFeTurbulence() : SPFilterPrimitive() {
- SPFeTurbulence* feTurbulence = this;
-
- feTurbulence->cfeturbulence = new CFeTurbulence(feTurbulence);
- feTurbulence->typeHierarchy.insert(typeid(SPFeTurbulence));
-
- delete feTurbulence->cfilterprimitive;
- feTurbulence->cfilterprimitive = feTurbulence->cfeturbulence;
- feTurbulence->cobject = feTurbulence->cfeturbulence;
+ this->cobject = this;
- feTurbulence->stitchTiles = 0;
- feTurbulence->seed = 0;
- feTurbulence->numOctaves = 0;
- feTurbulence->type = Inkscape::Filters::TURBULENCE_FRACTALNOISE;
+ this->stitchTiles = 0;
+ this->seed = 0;
+ this->numOctaves = 0;
+ this->type = Inkscape::Filters::TURBULENCE_FRACTALNOISE;
- feTurbulence->updated=false;
+ this->updated=false;
}
-static void
-sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
-{
- new (feTurbulence) SPFeTurbulence();
+SPFeTurbulence::~SPFeTurbulence() {
}
/**
@@ -82,10 +57,10 @@ sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFeTurbulence::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeTurbulence* object = this->spfeturbulence;
+void SPFeTurbulence::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFeTurbulence* object = this;
- CFilterPrimitive::build(document, repr);
+ SPFilterPrimitive::build(document, repr);
/*LOAD ATTRIBUTES FROM REPR HERE*/
object->readAttr( "baseFrequency" );
@@ -98,8 +73,8 @@ void CFeTurbulence::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFeTurbulence::release() {
- CFilterPrimitive::release();
+void SPFeTurbulence::release() {
+ SPFilterPrimitive::release();
}
static bool sp_feTurbulence_read_stitchTiles(gchar const *value){
@@ -131,8 +106,8 @@ static Inkscape::Filters::FilterTurbulenceType sp_feTurbulence_read_type(gchar c
/**
* Sets a specific value in the SPFeTurbulence.
*/
-void CFeTurbulence::set(unsigned int key, gchar const *value) {
- SPFeTurbulence* object = this->spfeturbulence;
+void SPFeTurbulence::set(unsigned int key, gchar const *value) {
+ SPFeTurbulence* object = this;
SPFeTurbulence *feTurbulence = SP_FETURBULENCE(object);
(void)feTurbulence;
@@ -186,7 +161,7 @@ void CFeTurbulence::set(unsigned int key, gchar const *value) {
}
break;
default:
- CFilterPrimitive::set(key, value);
+ SPFilterPrimitive::set(key, value);
break;
}
}
@@ -194,8 +169,8 @@ void CFeTurbulence::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFeTurbulence::update(SPCtx *ctx, guint flags) {
- SPFeTurbulence* object = this->spfeturbulence;
+void SPFeTurbulence::update(SPCtx *ctx, guint flags) {
+ SPFeTurbulence* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
@@ -204,14 +179,14 @@ void CFeTurbulence::update(SPCtx *ctx, guint flags) {
}
- CFilterPrimitive::update(ctx, flags);
+ SPFilterPrimitive::update(ctx, flags);
}
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFeTurbulence::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeTurbulence* object = this->spfeturbulence;
+Inkscape::XML::Node* SPFeTurbulence::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFeTurbulence* object = this;
/* TODO: Don't just clone, but create a new repr node and write all
* relevant values into it */
@@ -219,7 +194,7 @@ Inkscape::XML::Node* CFeTurbulence::write(Inkscape::XML::Document *doc, Inkscape
repr = object->getRepr()->duplicate(doc);
}
- CFilterPrimitive::write(doc, repr, flags);
+ SPFilterPrimitive::write(doc, repr, flags);
/* turbulence doesn't take input */
repr->setAttribute("in", 0);
@@ -227,8 +202,8 @@ Inkscape::XML::Node* CFeTurbulence::write(Inkscape::XML::Document *doc, Inkscape
return repr;
}
-void CFeTurbulence::build_renderer(Inkscape::Filters::Filter* filter) {
- SPFeTurbulence* primitive = this->spfeturbulence;
+void SPFeTurbulence::build_renderer(Inkscape::Filters::Filter* filter) {
+ SPFeTurbulence* primitive = this;
g_assert(primitive != NULL);
g_assert(filter != NULL);
diff --git a/src/filters/turbulence.h b/src/filters/turbulence.h
index be6736f76..4c61665fe 100644
--- a/src/filters/turbulence.h
+++ b/src/filters/turbulence.h
@@ -17,18 +17,15 @@
#include "number-opt-number.h"
#include "display/nr-filter-turbulence.h"
-#define SP_TYPE_FETURBULENCE (sp_feTurbulence_get_type())
#define SP_FETURBULENCE(obj) ((SPFeTurbulence*)obj)
-#define SP_IS_FETURBULENCE(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFeTurbulence)))
+#define SP_IS_FETURBULENCE(obj) (dynamic_cast<const SPFeTurbulence*>((SPObject*)obj))
/* FeTurbulence base class */
-class CFeTurbulence;
-
class SPFeTurbulence : public SPFilterPrimitive {
public:
SPFeTurbulence();
- CFeTurbulence* cfeturbulence;
+ virtual ~SPFeTurbulence();
/** TURBULENCE ATTRIBUTES HERE */
NumberOptNumber baseFrequency;
@@ -38,16 +35,6 @@ public:
Inkscape::Filters::FilterTurbulenceType type;
SVGLength x, y, height, width;
bool updated;
-};
-
-struct SPFeTurbulenceClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-class CFeTurbulence : public CFilterPrimitive {
-public:
- CFeTurbulence(SPFeTurbulence* turb);
- virtual ~CFeTurbulence();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -59,14 +46,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFeTurbulence* spfeturbulence;
};
-GType sp_feTurbulence_get_type();
-
-
#endif /* !SP_FETURBULENCE_H_SEEN */
/*
diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp
index c7de36978..d2ace4e31 100644
--- a/src/sp-filter-primitive.cpp
+++ b/src/sp-filter-primitive.cpp
@@ -27,77 +27,31 @@
#include "display/nr-filter-primitive.h"
#include "display/nr-filter-types.h"
-/* FilterPrimitive base class */
-
-static void sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass);
-static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive);
-
-static SPObjectClass *filter_primitive_parent_class;
-
-GType sp_filter_primitive_get_type()
-{
- static GType filter_primitive_type = 0;
-
- if (!filter_primitive_type) {
- GTypeInfo filter_primitive_info = {
- sizeof(SPFilterPrimitiveClass),
- NULL, NULL,
- 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(G_TYPE_OBJECT, "SPFilterPrimitive", &filter_primitive_info, (GTypeFlags)0);
- }
- return filter_primitive_type;
-}
-
-static void sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass)
-{
- SPObjectClass *sp_object_class = (SPObjectClass *)(klass);
- filter_primitive_parent_class = static_cast<SPObjectClass *>(g_type_class_peek_parent(klass));
-}
-
-CFilterPrimitive::CFilterPrimitive(SPFilterPrimitive* fp) : CObject(fp) {
- this->spfilterprimitive = fp;
-}
-
-CFilterPrimitive::~CFilterPrimitive() {
-}
// CPPIFY: Make pure virtual.
-void CFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) {
+void SPFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) {
// throw;
}
-SPFilterPrimitive::SPFilterPrimitive() : SPObject() {
- SPFilterPrimitive* filter_primitive = this;
-
- filter_primitive->cfilterprimitive = new CFilterPrimitive(filter_primitive);
- filter_primitive->typeHierarchy.insert(typeid(SPFilterPrimitive));
+SPFilterPrimitive::SPFilterPrimitive() : SPObject(), CObject(this) {
+ delete this->cobject;
+ this->cobject = this;
- delete filter_primitive->cobject;
- filter_primitive->cobject = filter_primitive->cfilterprimitive;
-
- filter_primitive->image_in = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
- filter_primitive->image_out = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
+ this->image_in = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
+ this->image_out = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
// We must keep track if a value is set or not, if not set then the region defaults to 0%, 0%,
// 100%, 100% ("x", "y", "width", "height") of the -> filter <- region. If set then
// percentages are in terms of bounding box or viewbox, depending on value of "primitiveUnits"
// NB: SVGLength.set takes prescaled percent values: 1 means 100%
- filter_primitive->x.unset(SVGLength::PERCENT, 0, 0);
- filter_primitive->y.unset(SVGLength::PERCENT, 0, 0);
- filter_primitive->width.unset(SVGLength::PERCENT, 1, 0);
- filter_primitive->height.unset(SVGLength::PERCENT, 1, 0);
+ this->x.unset(SVGLength::PERCENT, 0, 0);
+ this->y.unset(SVGLength::PERCENT, 0, 0);
+ this->width.unset(SVGLength::PERCENT, 1, 0);
+ this->height.unset(SVGLength::PERCENT, 1, 0);
}
-static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive)
-{
- new (filter_primitive) SPFilterPrimitive();
+SPFilterPrimitive::~SPFilterPrimitive() {
}
/**
@@ -105,8 +59,8 @@ static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive)
* our name must be associated with a repr via "sp_object_type_register". Best done through
* sp-object-repr.cpp's repr_name_entries array.
*/
-void CFilterPrimitive::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFilterPrimitive* object = this->spfilterprimitive;
+void SPFilterPrimitive::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPFilterPrimitive* object = this;
object->readAttr( "style" ); // struct not derived from SPItem, we need to do this ourselves.
object->readAttr( "in" );
@@ -122,15 +76,15 @@ void CFilterPrimitive::build(SPDocument *document, Inkscape::XML::Node *repr) {
/**
* Drops any allocated memory.
*/
-void CFilterPrimitive::release() {
+void SPFilterPrimitive::release() {
CObject::release();
}
/**
* Sets a specific value in the SPFilterPrimitive.
*/
-void CFilterPrimitive::set(unsigned int key, gchar const *value) {
- SPFilterPrimitive* object = this->spfilterprimitive;
+void SPFilterPrimitive::set(unsigned int key, gchar const *value) {
+ SPFilterPrimitive* object = this;
SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object);
(void)filter_primitive;
@@ -185,8 +139,8 @@ void CFilterPrimitive::set(unsigned int key, gchar const *value) {
/**
* Receives update notifications.
*/
-void CFilterPrimitive::update(SPCtx *ctx, guint flags) {
- SPFilterPrimitive* object = this->spfilterprimitive;
+void SPFilterPrimitive::update(SPCtx *ctx, guint flags) {
+ SPFilterPrimitive* object = this;
//SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object);
@@ -207,8 +161,8 @@ void CFilterPrimitive::update(SPCtx *ctx, guint flags) {
/**
* Writes its settings to an incoming repr object, if any.
*/
-Inkscape::XML::Node* CFilterPrimitive::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFilterPrimitive* object = this->spfilterprimitive;
+Inkscape::XML::Node* SPFilterPrimitive::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
+ SPFilterPrimitive* object = this;
SPFilterPrimitive *prim = SP_FILTER_PRIMITIVE(object);
SPFilter *parent = SP_FILTER(object->parent);
diff --git a/src/sp-filter-primitive.h b/src/sp-filter-primitive.h
index d6feed922..cf8817402 100644
--- a/src/sp-filter-primitive.h
+++ b/src/sp-filter-primitive.h
@@ -17,9 +17,8 @@
#include "sp-object.h"
#include "svg/svg-length.h"
-#define SP_TYPE_FILTER_PRIMITIVE (sp_filter_primitive_get_type ())
#define SP_FILTER_PRIMITIVE(obj) ((SPFilterPrimitive*)obj)
-#define SP_IS_FILTER_PRIMITIVE(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPFilterPrimitive)))
+#define SP_IS_FILTER_PRIMITIVE(obj) (dynamic_cast<const SPFilterPrimitive*>((SPObject*)obj))
namespace Inkscape {
namespace Filters {
@@ -27,27 +26,15 @@ class Filter;
class FilterPrimitive;
} }
-class CFilterPrimitive;
-
-class SPFilterPrimitive : public SPObject {
+class SPFilterPrimitive : public SPObject, public CObject {
public:
SPFilterPrimitive();
- CFilterPrimitive* cfilterprimitive;
+ virtual ~SPFilterPrimitive();
int image_in, image_out;
/* filter primitive subregion */
SVGLength x, y, height, width;
-};
-
-struct SPFilterPrimitiveClass {
- SPObjectClass sp_object_class;
-};
-
-class CFilterPrimitive : public CObject {
-public:
- CFilterPrimitive(SPFilterPrimitive* fp);
- virtual ~CFilterPrimitive();
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
@@ -59,14 +46,8 @@ public:
virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
virtual void build_renderer(Inkscape::Filters::Filter* filter);
-
-private:
- SPFilterPrimitive* spfilterprimitive;
};
-
-GType sp_filter_primitive_get_type (void);
-
/* Common initialization for filter primitives */
void sp_filter_primitive_renderer_common(SPFilterPrimitive *sp_prim, Inkscape::Filters::FilterPrimitive *nr_prim);
diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp
index 80dc0ecdc..1eb25f9c1 100644
--- a/src/sp-filter.cpp
+++ b/src/sp-filter.cpp
@@ -406,7 +406,7 @@ void sp_filter_build_renderer(SPFilter *sp_filter, Inkscape::Filters::Filter *nr
// } else {
// g_warning("Cannot build filter renderer: missing builder");
// } // CPPIFY: => FilterPrimitive should be abstract.
- primitive->cfilterprimitive->build_renderer(nr_filter);
+ primitive->build_renderer(nr_filter);
}
primitive_obj = primitive_obj->next;
}