diff options
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2018-10-19 00:46:24 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marcjeanmougin@free.fr> | 2018-10-19 11:29:18 +0000 |
| commit | 9f867d18a33e9ee9e40874ea0e50adf464e7a401 (patch) | |
| tree | 9a5a0966770a5aa3de0a9011ad9e4d02c4a0ca08 /src | |
| parent | Remove unused includes. (diff) | |
| download | inkscape-9f867d18a33e9ee9e40874ea0e50adf464e7a401.tar.gz inkscape-9f867d18a33e9ee9e40874ea0e50adf464e7a401.zip | |
Finish to convert SPFilter and SPFilterPrimitive to proper classes.
Diffstat (limited to 'src')
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(); } |
