diff options
| author | Markus Engel <markus.engel@tum.de> | 2013-04-07 15:10:06 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2013-04-07 15:10:06 +0000 |
| commit | d06e9965e2120f4bf6c79c9f94c1d90c04f9d80f (patch) | |
| tree | 705ac5b082533d147c50fabc2c9c81a4831aebc6 /src | |
| parent | Merged more classes. (diff) | |
| download | inkscape-d06e9965e2120f4bf6c79c9f94c1d90c04f9d80f.tar.gz inkscape-d06e9965e2120f4bf6c79c9f94c1d90c04f9d80f.zip | |
Merged FilterPrimitive and subclasses.
(bzr r11608.1.85)
Diffstat (limited to 'src')
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; } |
