From a0a8d020201e0e38a63d9aa3dce228d7d9e6fb35 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Thu, 14 Mar 2013 12:42:39 +0100 Subject: Various changes. (bzr r11608.1.48) --- src/sp-filter-primitive.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index b63a05b4b..6d36aaa45 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -65,7 +65,7 @@ static void sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass) filter_primitive_parent_class = static_cast(g_type_class_peek_parent(klass)); - sp_object_class->build = sp_filter_primitive_build; + // sp_object_class->build = sp_filter_primitive_build; sp_object_class->release = sp_filter_primitive_release; sp_object_class->write = sp_filter_primitive_write; sp_object_class->set = sp_filter_primitive_set; @@ -100,9 +100,10 @@ static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive) static void sp_filter_primitive_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if ((static_cast(filter_primitive_parent_class))->build) { - (static_cast(filter_primitive_parent_class))->build(object, document, repr); - } +// if ((static_cast(filter_primitive_parent_class))->build) { +// (static_cast(filter_primitive_parent_class))->build(object, document, repr); +// } + // CPPIFY: todo object->readAttr( "in" ); object->readAttr( "result" ); -- cgit v1.2.3 From cbee151d9455d50fc58b1c5b82383dcd85ec7278 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:46:23 +0100 Subject: Added "virtual pads" to - SPFilterPrimitive and all subclasses All subclasses of SPObject now have got virtual pads. (bzr r11608.1.52) --- src/sp-filter-primitive.cpp | 186 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 163 insertions(+), 23 deletions(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index 6d36aaa45..b3926a695 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -76,8 +76,24 @@ static void sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass) klass->build_renderer = NULL; } +CFilterPrimitive::CFilterPrimitive(SPFilterPrimitive* fp) : CObject(fp) { + this->spfilterprimitive = fp; +} + +CFilterPrimitive::~CFilterPrimitive() { +} + +// CPPIFY: Make pure virtual. +void CFilterPrimitive::onBuildRenderer(Inkscape::Filters::Filter* filter) { + // throw; +} + + static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive) { + filter_primitive->cfilterprimitive = new CFilterPrimitive(filter_primitive); + 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; @@ -97,20 +113,35 @@ 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. */ -static void -sp_filter_primitive_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ +//static void +//sp_filter_primitive_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +//{ // if ((static_cast(filter_primitive_parent_class))->build) { // (static_cast(filter_primitive_parent_class))->build(object, document, repr); // } - // CPPIFY: todo - - object->readAttr( "in" ); - object->readAttr( "result" ); - object->readAttr( "x" ); - object->readAttr( "y" ); - object->readAttr( "width" ); - object->readAttr( "height" ); +// +// object->readAttr( "in" ); +// object->readAttr( "result" ); +// object->readAttr( "x" ); +// object->readAttr( "y" ); +// object->readAttr( "width" ); +// object->readAttr( "height" ); +//} + +void CFilterPrimitive::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { + SPFilterPrimitive* object = this->spfilterprimitive; + + // if ((static_cast(filter_primitive_parent_class))->build) { + // (static_cast(filter_primitive_parent_class))->build(object, document, repr); + // } + CObject::onBuild(document, repr); + + object->readAttr( "in" ); + object->readAttr( "result" ); + object->readAttr( "x" ); + object->readAttr( "y" ); + object->readAttr( "width" ); + object->readAttr( "height" ); } /** @@ -118,9 +149,14 @@ sp_filter_primitive_build(SPObject *object, SPDocument *document, Inkscape::XML: */ static void sp_filter_primitive_release(SPObject *object) { - /* deal with our children and our selves here */ - if ((static_cast(filter_primitive_parent_class))->release) - (static_cast(filter_primitive_parent_class))->release(object); +// /* deal with our children and our selves here */ +// if ((static_cast(filter_primitive_parent_class))->release) +// (static_cast(filter_primitive_parent_class))->release(object); + ((SPFilterPrimitive*)object)->cfilterprimitive->onRelease(); +} + +void CFilterPrimitive::onRelease() { + CObject::onRelease(); } /** @@ -129,6 +165,62 @@ static void sp_filter_primitive_release(SPObject *object) static void sp_filter_primitive_set(SPObject *object, unsigned int key, gchar const *value) { +// SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object); +// (void)filter_primitive; +// int image_nr; +// switch (key) { +// case SP_ATTR_IN: +// if (value) { +// image_nr = sp_filter_primitive_read_in(filter_primitive, value); +// } else { +// image_nr = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET; +// } +// if (image_nr != filter_primitive->image_in) { +// filter_primitive->image_in = image_nr; +// object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// case SP_ATTR_RESULT: +// if (value) { +// image_nr = sp_filter_primitive_read_result(filter_primitive, value); +// } else { +// image_nr = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET; +// } +// if (image_nr != filter_primitive->image_out) { +// filter_primitive->image_out = image_nr; +// object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// +// /* Filter primitive sub-region */ +// case SP_ATTR_X: +// filter_primitive->x.readOrUnset(value); +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// break; +// case SP_ATTR_Y: +// filter_primitive->y.readOrUnset(value); +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// break; +// case SP_ATTR_WIDTH: +// filter_primitive->width.readOrUnset(value); +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// break; +// case SP_ATTR_HEIGHT: +// filter_primitive->height.readOrUnset(value); +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// break; +// } +// +// /* See if any parents need this value. */ +// if (((SPObjectClass *) filter_primitive_parent_class)->set) { +// ((SPObjectClass *) filter_primitive_parent_class)->set(object, key, value); +// } + ((SPFilterPrimitive*)object)->cfilterprimitive->onSet(key, value); +} + +void CFilterPrimitive::onSet(unsigned int key, gchar const *value) { + SPFilterPrimitive* object = this->spfilterprimitive; + SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object); (void)filter_primitive; int image_nr; @@ -176,9 +268,10 @@ sp_filter_primitive_set(SPObject *object, unsigned int key, gchar const *value) } /* See if any parents need this value. */ - if (((SPObjectClass *) filter_primitive_parent_class)->set) { - ((SPObjectClass *) filter_primitive_parent_class)->set(object, key, value); - } +// if (((SPObjectClass *) filter_primitive_parent_class)->set) { +// ((SPObjectClass *) filter_primitive_parent_class)->set(object, key, value); +// } + CObject::onSet(key, value); } /** @@ -187,6 +280,26 @@ sp_filter_primitive_set(SPObject *object, unsigned int key, gchar const *value) static void sp_filter_primitive_update(SPObject *object, SPCtx *ctx, guint flags) { +// //SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object); +// +// if (flags & SP_OBJECT_MODIFIED_FLAG) { +// object->readAttr( "in" ); +// object->readAttr( "result" ); +// object->readAttr( "x" ); +// object->readAttr( "y" ); +// object->readAttr( "width" ); +// object->readAttr( "height" ); +// } +// +// if (((SPObjectClass *) filter_primitive_parent_class)->update) { +// ((SPObjectClass *) filter_primitive_parent_class)->update(object, ctx, flags); +// } + ((SPFilterPrimitive*)object)->cfilterprimitive->onUpdate(ctx, flags); +} + +void CFilterPrimitive::onUpdate(SPCtx *ctx, guint flags) { + SPFilterPrimitive* object = this->spfilterprimitive; + //SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object); if (flags & SP_OBJECT_MODIFIED_FLAG) { @@ -198,9 +311,10 @@ sp_filter_primitive_update(SPObject *object, SPCtx *ctx, guint flags) object->readAttr( "height" ); } - if (((SPObjectClass *) filter_primitive_parent_class)->update) { - ((SPObjectClass *) filter_primitive_parent_class)->update(object, ctx, flags); - } +// if (((SPObjectClass *) filter_primitive_parent_class)->update) { +// ((SPObjectClass *) filter_primitive_parent_class)->update(object, ctx, flags); +// } + CObject::onUpdate(ctx, flags); } /** @@ -209,6 +323,31 @@ sp_filter_primitive_update(SPObject *object, SPCtx *ctx, guint flags) static Inkscape::XML::Node * sp_filter_primitive_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) { +// SPFilterPrimitive *prim = SP_FILTER_PRIMITIVE(object); +// SPFilter *parent = SP_FILTER(object->parent); +// +// if (!repr) { +// repr = object->getRepr()->duplicate(doc); +// } +// +// gchar const *in_name = sp_filter_name_for_image(parent, prim->image_in); +// repr->setAttribute("in", in_name); +// +// gchar const *out_name = sp_filter_name_for_image(parent, prim->image_out); +// repr->setAttribute("result", out_name); +// +// /* Do we need to add x,y,width,height? */ +// if (((SPObjectClass *) filter_primitive_parent_class)->write) { +// ((SPObjectClass *) filter_primitive_parent_class)->write(object, doc, repr, flags); +// } +// +// return repr; + return ((SPFilterPrimitive*)object)->cfilterprimitive->onWrite(doc, repr, flags); +} + +Inkscape::XML::Node* CFilterPrimitive::onWrite(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) { + SPFilterPrimitive* object = this->spfilterprimitive; + SPFilterPrimitive *prim = SP_FILTER_PRIMITIVE(object); SPFilter *parent = SP_FILTER(object->parent); @@ -223,9 +362,10 @@ sp_filter_primitive_write(SPObject *object, Inkscape::XML::Document *doc, Inksca repr->setAttribute("result", out_name); /* Do we need to add x,y,width,height? */ - if (((SPObjectClass *) filter_primitive_parent_class)->write) { - ((SPObjectClass *) filter_primitive_parent_class)->write(object, doc, repr, flags); - } +// if (((SPObjectClass *) filter_primitive_parent_class)->write) { +// ((SPObjectClass *) filter_primitive_parent_class)->write(object, doc, repr, flags); +// } + CObject::onWrite(doc, repr, flags); return repr; } -- cgit v1.2.3 From d11fee42d0d56f0720aba8ad01b1318e5f715593 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:46:34 +0100 Subject: Replaced virtual function call to "build_renderer". (bzr r11608.1.53) --- src/sp-filter-primitive.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index b3926a695..f389f7adb 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -73,7 +73,7 @@ static void sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass) /* This should never be called on this base class, but only on derived * classes. */ - klass->build_renderer = NULL; + //klass->build_renderer = NULL; } CFilterPrimitive::CFilterPrimitive(SPFilterPrimitive* fp) : CObject(fp) { -- cgit v1.2.3 From 957c3e4b7909d42c5a13f1b1dd583f877fc32259 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:46:57 +0100 Subject: Removed function pointers from SPObject and subclasses. Added some missing virtual pads for classes that were hidden by preprocessor macros. (bzr r11608.1.55) --- src/sp-filter-primitive.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index f389f7adb..ed72175f7 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -66,10 +66,10 @@ static void sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass) filter_primitive_parent_class = static_cast(g_type_class_peek_parent(klass)); // sp_object_class->build = sp_filter_primitive_build; - sp_object_class->release = sp_filter_primitive_release; - sp_object_class->write = sp_filter_primitive_write; - sp_object_class->set = sp_filter_primitive_set; - sp_object_class->update = sp_filter_primitive_update; +// sp_object_class->release = sp_filter_primitive_release; +// sp_object_class->write = sp_filter_primitive_write; +// sp_object_class->set = sp_filter_primitive_set; +// sp_object_class->update = sp_filter_primitive_update; /* This should never be called on this base class, but only on derived * classes. */ -- cgit v1.2.3 From 7df6616da5ea2debb86838366ddf746841549cdb Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:56:13 +0100 Subject: Renamed virtual function names. (bzr r11608.1.57) --- src/sp-filter-primitive.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index 4842330ba..34f028518 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -68,7 +68,7 @@ CFilterPrimitive::~CFilterPrimitive() { } // CPPIFY: Make pure virtual. -void CFilterPrimitive::onBuildRenderer(Inkscape::Filters::Filter* filter) { +void CFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) { // throw; } @@ -98,7 +98,7 @@ 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::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { +void CFilterPrimitive::build(SPDocument *document, Inkscape::XML::Node *repr) { SPFilterPrimitive* object = this->spfilterprimitive; object->readAttr( "style" ); // struct not derived from SPItem, we need to do this ourselves. @@ -109,20 +109,20 @@ void CFilterPrimitive::onBuild(SPDocument *document, Inkscape::XML::Node *repr) object->readAttr( "width" ); object->readAttr( "height" ); - CObject::onBuild(document, repr); + CObject::build(document, repr); } /** * Drops any allocated memory. */ -void CFilterPrimitive::onRelease() { - CObject::onRelease(); +void CFilterPrimitive::release() { + CObject::release(); } /** * Sets a specific value in the SPFilterPrimitive. */ -void CFilterPrimitive::onSet(unsigned int key, gchar const *value) { +void CFilterPrimitive::set(unsigned int key, gchar const *value) { SPFilterPrimitive* object = this->spfilterprimitive; SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object); @@ -172,13 +172,13 @@ void CFilterPrimitive::onSet(unsigned int key, gchar const *value) { } /* See if any parents need this value. */ - CObject::onSet(key, value); + CObject::set(key, value); } /** * Receives update notifications. */ -void CFilterPrimitive::onUpdate(SPCtx *ctx, guint flags) { +void CFilterPrimitive::update(SPCtx *ctx, guint flags) { SPFilterPrimitive* object = this->spfilterprimitive; //SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object); @@ -194,13 +194,13 @@ void CFilterPrimitive::onUpdate(SPCtx *ctx, guint flags) { object->readAttr( "height" ); } - CObject::onUpdate(ctx, flags); + CObject::update(ctx, flags); } /** * Writes its settings to an incoming repr object, if any. */ -Inkscape::XML::Node* CFilterPrimitive::onWrite(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) { +Inkscape::XML::Node* CFilterPrimitive::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) { SPFilterPrimitive* object = this->spfilterprimitive; SPFilterPrimitive *prim = SP_FILTER_PRIMITIVE(object); @@ -217,7 +217,7 @@ Inkscape::XML::Node* CFilterPrimitive::onWrite(Inkscape::XML::Document *doc, Ink repr->setAttribute("result", out_name); /* Do we need to add x,y,width,height? */ - CObject::onWrite(doc, repr, flags); + CObject::write(doc, repr, flags); return repr; } -- cgit v1.2.3 From a5d6e692d661f0bf7648e64e8fcb04588bb8f3ab Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Mon, 1 Apr 2013 00:07:00 +0200 Subject: Prepared exchange of casting macros. (bzr r11608.1.63) --- src/sp-filter-primitive.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index 34f028518..d788b4314 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -75,6 +75,7 @@ void CFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) { static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive) { filter_primitive->cfilterprimitive = new CFilterPrimitive(filter_primitive); + filter_primitive->typeHierarchy.insert(typeid(SPFilterPrimitive)); delete filter_primitive->cobject; filter_primitive->cobject = filter_primitive->cfilterprimitive; -- cgit v1.2.3 From 69f3b6f1abb2bb422935d43262e1e99aab359954 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 01:41:30 +0200 Subject: Added constructors to SP classes. (bzr r11608.1.67) --- src/sp-filter-primitive.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index d788b4314..c7de36978 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -42,14 +42,14 @@ GType sp_filter_primitive_get_type() GTypeInfo filter_primitive_info = { sizeof(SPFilterPrimitiveClass), NULL, NULL, - (GClassInitFunc) sp_filter_primitive_class_init, + 0,//(GClassInitFunc) sp_filter_primitive_class_init, NULL, NULL, sizeof(SPFilterPrimitive), 16, (GInstanceInitFunc) sp_filter_primitive_init, NULL, /* value_table */ }; - filter_primitive_type = g_type_register_static(SP_TYPE_OBJECT, "SPFilterPrimitive", &filter_primitive_info, (GTypeFlags)0); + filter_primitive_type = g_type_register_static(G_TYPE_OBJECT, "SPFilterPrimitive", &filter_primitive_info, (GTypeFlags)0); } return filter_primitive_type; } @@ -72,8 +72,9 @@ void CFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) { // throw; } -static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive) -{ +SPFilterPrimitive::SPFilterPrimitive() : SPObject() { + SPFilterPrimitive* filter_primitive = this; + filter_primitive->cfilterprimitive = new CFilterPrimitive(filter_primitive); filter_primitive->typeHierarchy.insert(typeid(SPFilterPrimitive)); @@ -94,6 +95,11 @@ static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive) filter_primitive->height.unset(SVGLength::PERCENT, 1, 0); } +static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive) +{ + new (filter_primitive) SPFilterPrimitive(); +} + /** * Reads the Inkscape::XML::Node, and initializes SPFilterPrimitive variables. For this to get called, * our name must be associated with a repr via "sp_object_type_register". Best done through -- cgit v1.2.3 From d06e9965e2120f4bf6c79c9f94c1d90c04f9d80f Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sun, 7 Apr 2013 17:10:06 +0200 Subject: Merged FilterPrimitive and subclasses. (bzr r11608.1.85) --- src/sp-filter-primitive.cpp | 86 +++++++++++---------------------------------- 1 file changed, 20 insertions(+), 66 deletions(-) (limited to 'src/sp-filter-primitive.cpp') 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(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); -- cgit v1.2.3 From 27e2102f96a5554bcd5310ec11435d155773b279 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sun, 7 Apr 2013 18:28:22 +0200 Subject: Merge Object and subclasses. Merging of SP- and C-classes complete. (bzr r11608.1.86) --- src/sp-filter-primitive.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index d2ace4e31..bf264011a 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -33,10 +33,7 @@ void SPFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) { // throw; } -SPFilterPrimitive::SPFilterPrimitive() : SPObject(), CObject(this) { - delete this->cobject; - this->cobject = this; - +SPFilterPrimitive::SPFilterPrimitive() : SPObject() { this->image_in = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET; this->image_out = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET; @@ -70,14 +67,14 @@ void SPFilterPrimitive::build(SPDocument *document, Inkscape::XML::Node *repr) { object->readAttr( "width" ); object->readAttr( "height" ); - CObject::build(document, repr); + SPObject::build(document, repr); } /** * Drops any allocated memory. */ void SPFilterPrimitive::release() { - CObject::release(); + SPObject::release(); } /** @@ -133,7 +130,7 @@ void SPFilterPrimitive::set(unsigned int key, gchar const *value) { } /* See if any parents need this value. */ - CObject::set(key, value); + SPObject::set(key, value); } /** @@ -155,7 +152,7 @@ void SPFilterPrimitive::update(SPCtx *ctx, guint flags) { object->readAttr( "height" ); } - CObject::update(ctx, flags); + SPObject::update(ctx, flags); } /** @@ -178,7 +175,7 @@ Inkscape::XML::Node* SPFilterPrimitive::write(Inkscape::XML::Document *doc, Inks repr->setAttribute("result", out_name); /* Do we need to add x,y,width,height? */ - CObject::write(doc, repr, flags); + SPObject::write(doc, repr, flags); return repr; } -- cgit v1.2.3 From beecbea1b415d5b9536f2309c4f30fc258e346f5 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Wed, 31 Jul 2013 22:51:23 +0200 Subject: Cleaned up a bit; fixed struct vs. class forward declarations. (bzr r11608.1.111) --- src/sp-filter-primitive.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sp-filter-primitive.cpp') diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index bf264011a..f6b89bc21 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -29,9 +29,9 @@ // CPPIFY: Make pure virtual. -void SPFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) { +//void SPFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) { // throw; -} +//} SPFilterPrimitive::SPFilterPrimitive() : SPObject() { this->image_in = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET; -- cgit v1.2.3