summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2018-10-19 00:46:24 +0000
committerMarc Jeanmougin <marcjeanmougin@free.fr>2018-10-19 11:29:18 +0000
commit9f867d18a33e9ee9e40874ea0e50adf464e7a401 (patch)
tree9a5a0966770a5aa3de0a9011ad9e4d02c4a0ca08 /src
parentRemove unused includes. (diff)
downloadinkscape-9f867d18a33e9ee9e40874ea0e50adf464e7a401.tar.gz
inkscape-9f867d18a33e9ee9e40874ea0e50adf464e7a401.zip
Finish to convert SPFilter and SPFilterPrimitive to proper classes.
Diffstat (limited to 'src')
-rw-r--r--src/display/drawing-item.cpp4
-rw-r--r--src/object/filters/blend.cpp18
-rw-r--r--src/object/filters/colormatrix.cpp2
-rw-r--r--src/object/filters/componenttransfer.cpp2
-rw-r--r--src/object/filters/composite.cpp18
-rw-r--r--src/object/filters/convolvematrix.cpp2
-rw-r--r--src/object/filters/diffuselighting.cpp2
-rw-r--r--src/object/filters/displacementmap.cpp18
-rw-r--r--src/object/filters/flood.cpp2
-rw-r--r--src/object/filters/gaussian-blur.cpp2
-rw-r--r--src/object/filters/image.cpp2
-rw-r--r--src/object/filters/merge.cpp2
-rw-r--r--src/object/filters/mergenode.cpp2
-rw-r--r--src/object/filters/morphology.cpp2
-rw-r--r--src/object/filters/offset.cpp2
-rw-r--r--src/object/filters/sp-filter-primitive.cpp47
-rw-r--r--src/object/filters/sp-filter-primitive.h12
-rw-r--r--src/object/filters/specularlighting.cpp2
-rw-r--r--src/object/filters/tile.cpp2
-rw-r--r--src/object/filters/turbulence.cpp2
-rw-r--r--src/object/sp-filter.cpp59
-rw-r--r--src/object/sp-filter.h63
-rw-r--r--src/ui/dialog/filter-effects-dialog.cpp2
23 files changed, 130 insertions, 139 deletions
diff --git a/src/display/drawing-item.cpp b/src/display/drawing-item.cpp
index 97dd13bac..aa2793908 100644
--- a/src/display/drawing-item.cpp
+++ b/src/display/drawing-item.cpp
@@ -374,10 +374,10 @@ DrawingItem::setStyle(SPStyle *style, SPStyle *context_style)
if (style && style->filter.set && style->getFilter()) {
if (!_filter) {
- int primitives = sp_filter_primitive_count(SP_FILTER(style->getFilter()));
+ int primitives = SP_FILTER(style->getFilter())->primitive_count();
_filter = new Inkscape::Filters::Filter(primitives);
}
- sp_filter_build_renderer(SP_FILTER(style->getFilter()), _filter);
+ SP_FILTER(style->getFilter())->build_renderer(_filter);
} else {
// no filter set for this group
delete _filter;
diff --git a/src/object/filters/blend.cpp b/src/object/filters/blend.cpp
index e1f2b3c46..f28315e2c 100644
--- a/src/object/filters/blend.cpp
+++ b/src/object/filters/blend.cpp
@@ -52,8 +52,8 @@ void SPFeBlend::build(SPDocument *document, Inkscape::XML::Node *repr) {
this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT)
{
SPFilter *parent = SP_FILTER(this->parent);
- this->in2 = sp_filter_primitive_name_previous_out(this);
- repr->setAttribute("in2", sp_filter_name_for_image(parent, this->in2));
+ this->in2 = this->name_previous_out();
+ repr->setAttribute("in2", parent->name_for_image(this->in2));
}
}
@@ -144,7 +144,7 @@ void SPFeBlend::set(SPAttributeEnum key, gchar const *value) {
}
break;
case SP_ATTR_IN2:
- input = sp_filter_primitive_read_in(this, value);
+ input = this->read_in(value);
if (input != this->in2) {
this->in2 = input;
@@ -174,10 +174,10 @@ void SPFeBlend::update(SPCtx *ctx, guint flags) {
this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT)
{
SPFilter *parent = SP_FILTER(this->parent);
- this->in2 = sp_filter_primitive_name_previous_out(this);
+ this->in2 = this->name_previous_out();
// TODO: XML Tree being used directly here while it shouldn't be.
- this->getRepr()->setAttribute("in2", sp_filter_name_for_image(parent, this->in2));
+ this->getRepr()->setAttribute("in2", parent->name_for_image(this->in2));
}
SPFilterPrimitive::update(ctx, flags);
@@ -193,11 +193,11 @@ Inkscape::XML::Node* SPFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XM
repr = doc->createElement("svg:feBlend");
}
- gchar const *in2_name = sp_filter_name_for_image(parent, this->in2);
+ gchar const *in2_name = parent->name_for_image(this->in2);
if( !in2_name ) {
- // This code is very similar to sp_filter_primtive_name_previous_out()
+ // This code is very similar to name_previous_out()
SPObject *i = parent->firstChild();
// Find previous filter primitive
@@ -207,7 +207,7 @@ Inkscape::XML::Node* SPFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XM
if( i ) {
SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i);
- in2_name = sp_filter_name_for_image(parent, i_prim->image_out);
+ in2_name = parent->name_for_image(i_prim->image_out);
}
}
@@ -272,7 +272,7 @@ void SPFeBlend::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterBlend *nr_blend = dynamic_cast<Inkscape::Filters::FilterBlend*>(nr_primitive);
g_assert(nr_blend != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_blend->set_mode(this->blend_mode);
nr_blend->set_input(1, this->in2);
diff --git a/src/object/filters/colormatrix.cpp b/src/object/filters/colormatrix.cpp
index 879d723cf..cf9851dcf 100644
--- a/src/object/filters/colormatrix.cpp
+++ b/src/object/filters/colormatrix.cpp
@@ -141,7 +141,7 @@ void SPFeColorMatrix::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterColorMatrix *nr_colormatrix = dynamic_cast<Inkscape::Filters::FilterColorMatrix*>(nr_primitive);
g_assert(nr_colormatrix != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_colormatrix->set_type(this->type);
nr_colormatrix->set_value(this->value);
nr_colormatrix->set_values(this->values);
diff --git a/src/object/filters/componenttransfer.cpp b/src/object/filters/componenttransfer.cpp
index f64d4b6f9..164e8c190 100644
--- a/src/object/filters/componenttransfer.cpp
+++ b/src/object/filters/componenttransfer.cpp
@@ -168,7 +168,7 @@ void SPFeComponentTransfer::build_renderer(Inkscape::Filters::Filter* filter) {
g_assert(nr_componenttransfer != nullptr);
this->renderer = nr_componenttransfer;
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
sp_feComponentTransfer_children_modified(this); //do we need it?!
diff --git a/src/object/filters/composite.cpp b/src/object/filters/composite.cpp
index 8a6dcb294..deb06d764 100644
--- a/src/object/filters/composite.cpp
+++ b/src/object/filters/composite.cpp
@@ -59,8 +59,8 @@ void SPFeComposite::build(SPDocument *document, Inkscape::XML::Node *repr) {
this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT)
{
SPFilter *parent = SP_FILTER(this->parent);
- this->in2 = sp_filter_primitive_name_previous_out(this);
- repr->setAttribute("in2", sp_filter_name_for_image(parent, this->in2));
+ this->in2 = this->name_previous_out();
+ repr->setAttribute("in2", parent->name_for_image(this->in2));
}
}
@@ -169,7 +169,7 @@ void SPFeComposite::set(SPAttributeEnum key, gchar const *value) {
break;
case SP_ATTR_IN2:
- input = sp_filter_primitive_read_in(this, value);
+ input = this->read_in(value);
if (input != this->in2) {
this->in2 = input;
this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
@@ -201,10 +201,10 @@ void SPFeComposite::update(SPCtx *ctx, guint flags) {
this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT)
{
SPFilter *parent = SP_FILTER(this->parent);
- this->in2 = sp_filter_primitive_name_previous_out(this);
+ this->in2 = this->name_previous_out();
//XML Tree being used directly here while it shouldn't be.
- this->getRepr()->setAttribute("in2", sp_filter_name_for_image(parent, this->in2));
+ this->getRepr()->setAttribute("in2", parent->name_for_image(this->in2));
}
SPFilterPrimitive::update(ctx, flags);
@@ -220,11 +220,11 @@ Inkscape::XML::Node* SPFeComposite::write(Inkscape::XML::Document *doc, Inkscape
repr = doc->createElement("svg:feComposite");
}
- gchar const *in2_name = sp_filter_name_for_image(parent, this->in2);
+ gchar const *in2_name = parent->name_for_image(this->in2);
if( !in2_name ) {
- // This code is very similar to sp_filter_primitive_name_previous_out()
+ // This code is very similar to name_previous_out()
SPObject *i = parent->firstChild();
// Find previous filter primitive
@@ -234,7 +234,7 @@ Inkscape::XML::Node* SPFeComposite::write(Inkscape::XML::Document *doc, Inkscape
if( i ) {
SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i);
- in2_name = sp_filter_name_for_image(parent, i_prim->image_out);
+ in2_name = parent->name_for_image(i_prim->image_out);
}
}
@@ -310,7 +310,7 @@ void SPFeComposite::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterComposite *nr_composite = dynamic_cast<Inkscape::Filters::FilterComposite*>(nr_primitive);
g_assert(nr_composite != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_composite->set_operator(this->composite_operator);
nr_composite->set_input(1, this->in2);
diff --git a/src/object/filters/convolvematrix.cpp b/src/object/filters/convolvematrix.cpp
index a1c4d2e85..a04033af1 100644
--- a/src/object/filters/convolvematrix.cpp
+++ b/src/object/filters/convolvematrix.cpp
@@ -295,7 +295,7 @@ void SPFeConvolveMatrix::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterConvolveMatrix *nr_convolve = dynamic_cast<Inkscape::Filters::FilterConvolveMatrix*>(nr_primitive);
g_assert(nr_convolve != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_convolve->set_targetX(this->targetX);
nr_convolve->set_targetY(this->targetY);
diff --git a/src/object/filters/diffuselighting.cpp b/src/object/filters/diffuselighting.cpp
index 980c41e9e..9f25c4d86 100644
--- a/src/object/filters/diffuselighting.cpp
+++ b/src/object/filters/diffuselighting.cpp
@@ -285,7 +285,7 @@ void SPFeDiffuseLighting::build_renderer(Inkscape::Filters::Filter* filter) {
g_assert(nr_diffuselighting != nullptr);
this->renderer = nr_diffuselighting;
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_diffuselighting->diffuseConstant = this->diffuseConstant;
nr_diffuselighting->surfaceScale = this->surfaceScale;
diff --git a/src/object/filters/displacementmap.cpp b/src/object/filters/displacementmap.cpp
index 7dda2843d..7b6c32ddc 100644
--- a/src/object/filters/displacementmap.cpp
+++ b/src/object/filters/displacementmap.cpp
@@ -55,8 +55,8 @@ void SPFeDisplacementMap::build(SPDocument *document, Inkscape::XML::Node *repr)
this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT)
{
SPFilter *parent = SP_FILTER(this->parent);
- this->in2 = sp_filter_primitive_name_previous_out(this);
- repr->setAttribute("in2", sp_filter_name_for_image(parent, this->in2));
+ this->in2 = this->name_previous_out();
+ repr->setAttribute("in2", parent->name_for_image(this->in2));
}
}
@@ -128,7 +128,7 @@ void SPFeDisplacementMap::set(SPAttributeEnum key, gchar const *value) {
}
break;
case SP_ATTR_IN2:
- input = sp_filter_primitive_read_in(this, value);
+ input = this->read_in(value);
if (input != this->in2) {
this->in2 = input;
@@ -158,10 +158,10 @@ void SPFeDisplacementMap::update(SPCtx *ctx, guint flags) {
this->in2 == Inkscape::Filters::NR_FILTER_UNNAMED_SLOT)
{
SPFilter *parent = SP_FILTER(this->parent);
- this->in2 = sp_filter_primitive_name_previous_out(this);
+ this->in2 = this->name_previous_out();
//XML Tree being used directly here while it shouldn't be.
- this->getRepr()->setAttribute("in2", sp_filter_name_for_image(parent, this->in2));
+ this->getRepr()->setAttribute("in2", parent->name_for_image(this->in2));
}
SPFilterPrimitive::update(ctx, flags);
@@ -192,11 +192,11 @@ Inkscape::XML::Node* SPFeDisplacementMap::write(Inkscape::XML::Document *doc, In
repr = doc->createElement("svg:feDisplacementMap");
}
- gchar const *in2_name = sp_filter_name_for_image(parent, this->in2);
+ gchar const *in2_name = parent->name_for_image(this->in2);
if( !in2_name ) {
- // This code is very similar to sp_filter_primtive_name_previous_out()
+ // This code is very similar to name_previous_out()
SPObject *i = parent->firstChild();
// Find previous filter primitive
@@ -206,7 +206,7 @@ Inkscape::XML::Node* SPFeDisplacementMap::write(Inkscape::XML::Document *doc, In
if( i ) {
SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i);
- in2_name = sp_filter_name_for_image(parent, i_prim->image_out);
+ in2_name = parent->name_for_image(i_prim->image_out);
}
}
@@ -236,7 +236,7 @@ void SPFeDisplacementMap::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterDisplacementMap *nr_displacement_map = dynamic_cast<Inkscape::Filters::FilterDisplacementMap*>(nr_primitive);
g_assert(nr_displacement_map != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_displacement_map->set_input(1, this->in2);
nr_displacement_map->set_scale(this->scale);
diff --git a/src/object/filters/flood.cpp b/src/object/filters/flood.cpp
index a87c0c78a..663702dbf 100644
--- a/src/object/filters/flood.cpp
+++ b/src/object/filters/flood.cpp
@@ -161,7 +161,7 @@ void SPFeFlood::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterFlood *nr_flood = dynamic_cast<Inkscape::Filters::FilterFlood*>(nr_primitive);
g_assert(nr_flood != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_flood->set_opacity(this->opacity);
nr_flood->set_color(this->color);
diff --git a/src/object/filters/gaussian-blur.cpp b/src/object/filters/gaussian-blur.cpp
index 4725503b3..ddfe40201 100644
--- a/src/object/filters/gaussian-blur.cpp
+++ b/src/object/filters/gaussian-blur.cpp
@@ -104,7 +104,7 @@ void SPGaussianBlur::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterPrimitive *nr_primitive = filter->get_primitive(handle);
Inkscape::Filters::FilterGaussian *nr_blur = dynamic_cast<Inkscape::Filters::FilterGaussian*>(nr_primitive);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
gfloat num = this->stdDeviation.getNumber();
diff --git a/src/object/filters/image.cpp b/src/object/filters/image.cpp
index c80bfcf2f..e29cbeab8 100644
--- a/src/object/filters/image.cpp
+++ b/src/object/filters/image.cpp
@@ -239,7 +239,7 @@ void SPFeImage::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterImage *nr_image = dynamic_cast<Inkscape::Filters::FilterImage*>(nr_primitive);
g_assert(nr_image != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_image->from_element = this->from_element;
nr_image->SVGElem = this->SVGElem;
diff --git a/src/object/filters/merge.cpp b/src/object/filters/merge.cpp
index 0eb1f06d0..a8331e45e 100644
--- a/src/object/filters/merge.cpp
+++ b/src/object/filters/merge.cpp
@@ -89,7 +89,7 @@ void SPFeMerge::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterMerge *nr_merge = dynamic_cast<Inkscape::Filters::FilterMerge*>(nr_primitive);
g_assert(nr_merge != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
int in_nr = 0;
diff --git a/src/object/filters/mergenode.cpp b/src/object/filters/mergenode.cpp
index 0608f6e53..e464ae7c8 100644
--- a/src/object/filters/mergenode.cpp
+++ b/src/object/filters/mergenode.cpp
@@ -51,7 +51,7 @@ void SPFeMergeNode::set(SPAttributeEnum key, gchar const *value) {
SPFeMerge *parent = SP_FEMERGE(this->parent);
if (key == SP_ATTR_IN) {
- int input = sp_filter_primitive_read_in(parent, value);
+ int input = parent->read_in(value);
if (input != this->input) {
this->input = input;
this->requestModified(SP_OBJECT_MODIFIED_FLAG);
diff --git a/src/object/filters/morphology.cpp b/src/object/filters/morphology.cpp
index 7345dbea9..fd34e0561 100644
--- a/src/object/filters/morphology.cpp
+++ b/src/object/filters/morphology.cpp
@@ -142,7 +142,7 @@ void SPFeMorphology::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterMorphology *nr_morphology = dynamic_cast<Inkscape::Filters::FilterMorphology*>(nr_primitive);
g_assert(nr_morphology != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_morphology->set_operator(this->Operator);
nr_morphology->set_xradius( this->radius.getNumber() );
diff --git a/src/object/filters/offset.cpp b/src/object/filters/offset.cpp
index 7969a111c..e2b47f822 100644
--- a/src/object/filters/offset.cpp
+++ b/src/object/filters/offset.cpp
@@ -118,7 +118,7 @@ void SPFeOffset::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterOffset *nr_offset = dynamic_cast<Inkscape::Filters::FilterOffset*>(nr_primitive);
g_assert(nr_offset != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_offset->set_dx(this->dx);
nr_offset->set_dy(this->dy);
diff --git a/src/object/filters/sp-filter-primitive.cpp b/src/object/filters/sp-filter-primitive.cpp
index a0405b6f0..4c3fae8b6 100644
--- a/src/object/filters/sp-filter-primitive.cpp
+++ b/src/object/filters/sp-filter-primitive.cpp
@@ -81,7 +81,7 @@ void SPFilterPrimitive::set(SPAttributeEnum key, gchar const *value) {
switch (key) {
case SP_ATTR_IN:
if (value) {
- image_nr = sp_filter_primitive_read_in(this, value);
+ image_nr = this->read_in(value);
} else {
image_nr = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
@@ -92,7 +92,7 @@ void SPFilterPrimitive::set(SPAttributeEnum key, gchar const *value) {
break;
case SP_ATTR_RESULT:
if (value) {
- image_nr = sp_filter_primitive_read_result(this, value);
+ image_nr = this->read_result(value);
} else {
image_nr = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
@@ -155,10 +155,10 @@ Inkscape::XML::Node* SPFilterPrimitive::write(Inkscape::XML::Document *doc, Inks
repr = object->getRepr()->duplicate(doc);
}
- gchar const *in_name = sp_filter_name_for_image(parent, prim->image_in);
+ gchar const *in_name = parent->name_for_image(prim->image_in);
repr->setAttribute("in", in_name);
- gchar const *out_name = sp_filter_name_for_image(parent, prim->image_out);
+ gchar const *out_name = parent->name_for_image(prim->image_out);
repr->setAttribute("result", out_name);
/* Do we need to add x,y,width,height? */
@@ -167,9 +167,9 @@ Inkscape::XML::Node* SPFilterPrimitive::write(Inkscape::XML::Document *doc, Inks
return repr;
}
-int sp_filter_primitive_read_in(SPFilterPrimitive *prim, gchar const *name)
+int SPFilterPrimitive::read_in(gchar const *name)
{
- if (!name || !prim){
+ if (!name || !this){
return Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
// TODO: are these case sensitive or not? (assumed yes)
@@ -194,42 +194,42 @@ int sp_filter_primitive_read_in(SPFilterPrimitive *prim, gchar const *name)
break;
}
- SPFilter *parent = SP_FILTER(prim->parent);
- int ret = sp_filter_get_image_name(parent, name);
+ SPFilter *parent = SP_FILTER(this->parent);
+ int ret = parent->get_image_name(name);
if (ret >= 0) return ret;
return Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
-int sp_filter_primitive_read_result(SPFilterPrimitive *prim, gchar const *name)
+int SPFilterPrimitive::read_result(gchar const *name)
{
- SPFilter *parent = SP_FILTER(prim->parent);
- int ret = sp_filter_get_image_name(parent, name);
+ SPFilter *parent = SP_FILTER(this->parent);
+ int ret = parent->get_image_name(name);
if (ret >= 0) return ret;
- ret = sp_filter_set_image_name(parent, name);
+ ret = parent->set_image_name(name);
if (ret >= 0) return ret;
return Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
}
/**
- * Gives name for output of previous filter. Makes things clearer when prim
+ * Gives name for output of previous filter. Makes things clearer when 'this'
* is a filter with two or more inputs. Returns the slot number of result
* of previous primitive, or NR_FILTER_SOURCEGRAPHIC if this is the first
* primitive.
*/
-int sp_filter_primitive_name_previous_out(SPFilterPrimitive *prim) {
- SPFilter *parent = SP_FILTER(prim->parent);
+int SPFilterPrimitive::name_previous_out() {
+ SPFilter *parent = SP_FILTER(this->parent);
SPObject *i = parent->firstChild();
- while (i && i->getNext() != prim) {
+ while (i && i->getNext() != this) {
i = i->getNext();
}
if (i) {
SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i);
if (i_prim->image_out < 0) {
- Glib::ustring name = sp_filter_get_new_result_name(parent);
- int slot = sp_filter_set_image_name(parent, name.c_str());
+ Glib::ustring name = parent->get_new_result_name();
+ int slot = parent->set_image_name(name.c_str());
i_prim->image_out = slot;
//XML Tree is being directly used while it shouldn't be.
i_prim->getRepr()->setAttribute("result", name.c_str());
@@ -242,21 +242,20 @@ int sp_filter_primitive_name_previous_out(SPFilterPrimitive *prim) {
}
/* Common initialization for filter primitives */
-void sp_filter_primitive_renderer_common(SPFilterPrimitive *sp_prim, Inkscape::Filters::FilterPrimitive *nr_prim)
+void SPFilterPrimitive::renderer_common(Inkscape::Filters::FilterPrimitive *nr_prim)
{
- g_assert(sp_prim != nullptr);
g_assert(nr_prim != nullptr);
- nr_prim->set_input(sp_prim->image_in);
- nr_prim->set_output(sp_prim->image_out);
+ nr_prim->set_input(this->image_in);
+ nr_prim->set_output(this->image_out);
/* TODO: place here code to handle input images, filter area etc. */
// We don't know current viewport or bounding box, this is wrong approach.
- nr_prim->set_subregion( sp_prim->x, sp_prim->y, sp_prim->width, sp_prim->height );
+ nr_prim->set_subregion( this->x, this->y, this->width, this->height );
// Give renderer access to filter properties
- nr_prim->setStyle( sp_prim->style );
+ nr_prim->setStyle( this->style );
}
diff --git a/src/object/filters/sp-filter-primitive.h b/src/object/filters/sp-filter-primitive.h
index 142fde99a..4e7e5f17a 100644
--- a/src/object/filters/sp-filter-primitive.h
+++ b/src/object/filters/sp-filter-primitive.h
@@ -45,14 +45,14 @@ protected:
public:
virtual void build_renderer(Inkscape::Filters::Filter* filter) = 0;
-};
-/* Common initialization for filter primitives */
-void sp_filter_primitive_renderer_common(SPFilterPrimitive *sp_prim, Inkscape::Filters::FilterPrimitive *nr_prim);
+ /* Common initialization for filter primitives */
+ void renderer_common(Inkscape::Filters::FilterPrimitive *nr_prim);
-int sp_filter_primitive_name_previous_out(SPFilterPrimitive *prim);
-int sp_filter_primitive_read_in(SPFilterPrimitive *prim, char const *name);
-int sp_filter_primitive_read_result(SPFilterPrimitive *prim, char const *name);
+ int name_previous_out();
+ int read_in(char const *name);
+ int read_result(char const *name);
+};
#endif
/*
diff --git a/src/object/filters/specularlighting.cpp b/src/object/filters/specularlighting.cpp
index 58a221624..41c50be97 100644
--- a/src/object/filters/specularlighting.cpp
+++ b/src/object/filters/specularlighting.cpp
@@ -297,7 +297,7 @@ void SPFeSpecularLighting::build_renderer(Inkscape::Filters::Filter* filter) {
g_assert(nr_specularlighting != nullptr);
this->renderer = nr_specularlighting;
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_specularlighting->specularConstant = this->specularConstant;
nr_specularlighting->specularExponent = this->specularExponent;
diff --git a/src/object/filters/tile.cpp b/src/object/filters/tile.cpp
index 4ebc67b78..815ea3006 100644
--- a/src/object/filters/tile.cpp
+++ b/src/object/filters/tile.cpp
@@ -93,7 +93,7 @@ void SPFeTile::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterTile *nr_tile = dynamic_cast<Inkscape::Filters::FilterTile*>(nr_primitive);
g_assert(nr_tile != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
}
/*
diff --git a/src/object/filters/turbulence.cpp b/src/object/filters/turbulence.cpp
index 9a1861f35..5e3a205df 100644
--- a/src/object/filters/turbulence.cpp
+++ b/src/object/filters/turbulence.cpp
@@ -206,7 +206,7 @@ void SPFeTurbulence::build_renderer(Inkscape::Filters::Filter* filter) {
Inkscape::Filters::FilterTurbulence *nr_turbulence = dynamic_cast<Inkscape::Filters::FilterTurbulence*>(nr_primitive);
g_assert(nr_turbulence != nullptr);
- sp_filter_primitive_renderer_common(this, nr_primitive);
+ this->renderer_common(nr_primitive);
nr_turbulence->set_baseFrequency(0, this->baseFrequency.getNumber());
nr_turbulence->set_baseFrequency(1, this->baseFrequency.getOptNumber());
diff --git a/src/object/sp-filter.cpp b/src/object/sp-filter.cpp
index 9b307cc9c..223c4f037 100644
--- a/src/object/sp-filter.cpp
+++ b/src/object/sp-filter.cpp
@@ -370,31 +370,30 @@ void SPFilter::remove_child(Inkscape::XML::Node *child) {
this->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
-void sp_filter_build_renderer(SPFilter *sp_filter, Inkscape::Filters::Filter *nr_filter)
+void SPFilter::build_renderer(Inkscape::Filters::Filter *nr_filter)
{
- g_assert(sp_filter != nullptr);
g_assert(nr_filter != nullptr);
- sp_filter->_renderer = nr_filter;
+ this->_renderer = nr_filter;
- nr_filter->set_filter_units(sp_filter->filterUnits);
- nr_filter->set_primitive_units(sp_filter->primitiveUnits);
- nr_filter->set_x(sp_filter->x);
- nr_filter->set_y(sp_filter->y);
- nr_filter->set_width(sp_filter->width);
- nr_filter->set_height(sp_filter->height);
+ nr_filter->set_filter_units(this->filterUnits);
+ nr_filter->set_primitive_units(this->primitiveUnits);
+ nr_filter->set_x(this->x);
+ nr_filter->set_y(this->y);
+ nr_filter->set_width(this->width);
+ nr_filter->set_height(this->height);
- if (sp_filter->filterRes.getNumber() >= 0) {
- if (sp_filter->filterRes.getOptNumber() >= 0) {
- nr_filter->set_resolution(sp_filter->filterRes.getNumber(),
- sp_filter->filterRes.getOptNumber());
+ if (this->filterRes.getNumber() >= 0) {
+ if (this->filterRes.getOptNumber() >= 0) {
+ nr_filter->set_resolution(this->filterRes.getNumber(),
+ this->filterRes.getOptNumber());
} else {
- nr_filter->set_resolution(sp_filter->filterRes.getNumber());
+ nr_filter->set_resolution(this->filterRes.getNumber());
}
}
nr_filter->clear_primitives();
- for(auto& primitive_obj: sp_filter->children) {
+ for(auto& primitive_obj: this->children) {
if (SP_IS_FILTER_PRIMITIVE(&primitive_obj)) {
SPFilterPrimitive *primitive = SP_FILTER_PRIMITIVE(&primitive_obj);
g_assert(primitive != nullptr);
@@ -409,11 +408,10 @@ void sp_filter_build_renderer(SPFilter *sp_filter, Inkscape::Filters::Filter *nr
}
}
-int sp_filter_primitive_count(SPFilter *filter) {
- g_assert(filter != nullptr);
+int SPFilter::primitive_count() {
int count = 0;
- for(auto& primitive_obj: filter->children) {
+ for(auto& primitive_obj: this->children) {
if (SP_IS_FILTER_PRIMITIVE(&primitive_obj)) {
count++;
}
@@ -422,20 +420,20 @@ int sp_filter_primitive_count(SPFilter *filter) {
return count;
}
-int sp_filter_get_image_name(SPFilter *filter, gchar const *name) {
+int SPFilter::get_image_name(gchar const *name) {
gchar *name_copy = strdup(name);
- map<gchar *, int, ltstr>::iterator result = filter->_image_name->find(name_copy);
+ map<gchar *, int, ltstr>::iterator result = this->_image_name->find(name_copy);
free(name_copy);
- if (result == filter->_image_name->end()) return -1;
+ if (result == this->_image_name->end()) return -1;
else return (*result).second;
}
-int sp_filter_set_image_name(SPFilter *filter, gchar const *name) {
- int value = filter->_image_number_next;
- filter->_image_number_next++;
+int SPFilter::set_image_name(gchar const *name) {
+ int value = this->_image_number_next;
+ this->_image_number_next++;
gchar *name_copy = strdup(name);
pair<gchar*,int> new_pair(name_copy, value);
- pair<map<gchar*,int,ltstr>::iterator,bool> ret = filter->_image_name->insert(new_pair);
+ pair<map<gchar*,int,ltstr>::iterator,bool> ret = this->_image_name->insert(new_pair);
if (ret.second == false) {
// The element is not inserted (because an element with the same key was already in the map)
// Therefore, free the memory allocated for the new entry:
@@ -446,7 +444,7 @@ int sp_filter_set_image_name(SPFilter *filter, gchar const *name) {
return value;
}
-gchar const *sp_filter_name_for_image(SPFilter const *filter, int const image) {
+gchar const *SPFilter::name_for_image(int const image) const {
switch (image) {
case Inkscape::Filters::NR_FILTER_SOURCEGRAPHIC:
return "SourceGraphic";
@@ -472,8 +470,8 @@ gchar const *sp_filter_name_for_image(SPFilter const *filter, int const image) {
break;
default:
for (map<gchar *, int, ltstr>::const_iterator i
- = filter->_image_name->begin() ;
- i != filter->_image_name->end() ; ++i) {
+ = this->_image_name->begin() ;
+ i != this->_image_name->end() ; ++i) {
if (i->second == image) {
return i->first;
}
@@ -482,11 +480,10 @@ gchar const *sp_filter_name_for_image(SPFilter const *filter, int const image) {
return nullptr;
}
-Glib::ustring sp_filter_get_new_result_name(SPFilter *filter) {
- g_assert(filter != nullptr);
+Glib::ustring SPFilter::get_new_result_name() {
int largest = 0;
- for(auto& primitive_obj: filter->children) {
+ for(auto& primitive_obj: this->children) {
if (SP_IS_FILTER_PRIMITIVE(&primitive_obj)) {
Inkscape::XML::Node *repr = primitive_obj.getRepr();
char const *result = repr->attribute("result");
diff --git a/src/object/sp-filter.h b/src/object/sp-filter.h
index da32bdd65..c06d7e3b2 100644
--- a/src/object/sp-filter.h
+++ b/src/object/sp-filter.h
@@ -41,8 +41,28 @@ struct ltstr {
class SPFilter : public SPObject, public SPDimensions {
public:
- SPFilter();
- ~SPFilter() override;
+ SPFilter();
+ ~SPFilter() override;
+
+ /* Initializes the given Inkscape::Filters::Filter object as a renderer for this
+ * SPFilter object. */
+ void build_renderer(Inkscape::Filters::Filter *nr_filter);
+
+ /// Returns the number of filter primitives in this SPFilter object.
+ int primitive_count();
+
+ /// Returns a slot number for given image name, or -1 for unknown name.
+ int get_image_name(char const *name);
+
+ /// Returns slot number for given image name, even if it's unknown.
+ int set_image_name(char const *name);
+
+ /** Finds image name based on it's slot number. Returns 0 for unknown slot
+ * numbers. */
+ char const *name_for_image(int const image) const;
+
+ /// Returns a result image name that is not in use inside this filter.
+ Glib::ustring get_new_result_name();
SPFilterUnits filterUnits;
unsigned int filterUnits_set : 1;
@@ -61,44 +81,19 @@ public:
int _image_number_next;
protected:
- void build(SPDocument* doc, Inkscape::XML::Node* repr) override;
- void release() override;
+ void build(SPDocument* doc, Inkscape::XML::Node* repr) override;
+ void release() override;
- void child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) override;
- void remove_child(Inkscape::XML::Node* child) override;
+ void child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) override;
+ void remove_child(Inkscape::XML::Node* child) override;
- void set(SPAttributeEnum key, const char* value) override;
+ void set(SPAttributeEnum key, const char* value) override;
- void update(SPCtx* ctx, unsigned int flags) override;
+ void update(SPCtx* ctx, unsigned int flags) override;
- Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, unsigned int flags) override;
+ Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, unsigned int flags) override;
};
-void sp_filter_set_filter_units(SPFilter *filter, SPFilterUnits filterUnits);
-void sp_filter_set_primitive_units(SPFilter *filter, SPFilterUnits filterUnits);
-SPFilterPrimitive *add_primitive(SPFilter *filter, SPFilterPrimitive *primitive);
-SPFilterPrimitive *get_primitive(SPFilter *filter, int index);
-
-/* Initializes the given Inkscape::Filters::Filter object as a renderer for this
- * SPFilter object. */
-void sp_filter_build_renderer(SPFilter *sp_filter, Inkscape::Filters::Filter *nr_filter);
-
-/// Returns the number of filter primitives in this SPFilter object.
-int sp_filter_primitive_count(SPFilter *filter);
-
-/// Returns a slot number for given image name, or -1 for unknown name.
-int sp_filter_get_image_name(SPFilter *filter, char const *name);
-
-/// Returns slot number for given image name, even if it's unknown.
-int sp_filter_set_image_name(SPFilter *filter, char const *name);
-
-/** Finds image name based on it's slot number. Returns 0 for unknown slot
- * numbers. */
-char const *sp_filter_name_for_image(SPFilter const *filter, int const image);
-
-/// Returns a result image name that is not in use inside this filter.
-Glib::ustring sp_filter_get_new_result_name(SPFilter *filter);
-
#endif /* !SP_FILTER_H_SEEN */
/*
diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp
index 9ea9a8c72..42380aaa4 100644
--- a/src/ui/dialog/filter-effects-dialog.cpp
+++ b/src/ui/dialog/filter-effects-dialog.cpp
@@ -2426,7 +2426,7 @@ bool FilterEffectsDialog::PrimitiveList::on_button_release_event(GdkEventButton*
// Make sure the target has a result
const gchar *gres = repr->attribute("result");
if(!gres) {
- result = sp_filter_get_new_result_name(SP_FILTER(prim->parent));
+ result = SP_FILTER(prim->parent)->get_new_result_name();
repr->setAttribute("result", result.c_str());
in_val = result.c_str();
}