diff --git a/src/sp-fecomposite.cpp b/src/sp-fecomposite.cpp
index b191f982657f0bfac3d39b71bab5dfd472c9da8d..11d101bd63b75b6eb8b7ba8151806b589312e676 100644 (file)
--- a/src/sp-fecomposite.cpp
+++ b/src/sp-fecomposite.cpp
#include "attributes.h"
#include "svg/svg.h"
#include "sp-fecomposite.h"
+#include "helper-fns.h"
#include "xml/repr.h"
#include "display/nr-filter-composite.h"
static void sp_feComposite_release(SPObject *object);
static void sp_feComposite_set(SPObject *object, unsigned int key, gchar const *value);
static void sp_feComposite_update(SPObject *object, SPCtx *ctx, guint flags);
-static Inkscape::XML::Node *sp_feComposite_write(SPObject *object, Inkscape::XML::Node *repr, guint flags);
+static Inkscape::XML::Node *sp_feComposite_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags);
static void sp_feComposite_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter);
static SPFilterPrimitiveClass *feComposite_parent_class;
((SPObjectClass *) feComposite_parent_class)->release(object);
}
-static double
-sp_feComposite_read_number(gchar const *value) {
- if (!value) return 0;
-
- char *end;
- double ret = g_ascii_strtod(value, &end);
- if (*end) {
- g_warning("Unable to convert \"%s\" to number", value);
- // We could leave this out, too. If strtod can't convert
- // anything, it will return zero.
- ret = 0;
- }
- return ret;
-}
-
static FeCompositeOperator
sp_feComposite_read_operator(gchar const *value) {
if (!value) return COMPOSITE_DEFAULT;
break;
case SP_ATTR_K1:
- k_n = sp_feComposite_read_number(value);
+ k_n = helperfns_read_number(value);
if (k_n != feComposite->k1) {
feComposite->k1 = k_n;
if (feComposite->composite_operator == COMPOSITE_ARITHMETIC)
break;
case SP_ATTR_K2:
- k_n = sp_feComposite_read_number(value);
+ k_n = helperfns_read_number(value);
if (k_n != feComposite->k2) {
feComposite->k2 = k_n;
if (feComposite->composite_operator == COMPOSITE_ARITHMETIC)
break;
case SP_ATTR_K3:
- k_n = sp_feComposite_read_number(value);
+ k_n = helperfns_read_number(value);
if (k_n != feComposite->k3) {
feComposite->k3 = k_n;
if (feComposite->composite_operator == COMPOSITE_ARITHMETIC)
break;
case SP_ATTR_K4:
- k_n = sp_feComposite_read_number(value);
+ k_n = helperfns_read_number(value);
if (k_n != feComposite->k4) {
feComposite->k4 = k_n;
if (feComposite->composite_operator == COMPOSITE_ARITHMETIC)
* Writes its settings to an incoming repr object, if any.
*/
static Inkscape::XML::Node *
-sp_feComposite_write(SPObject *object, Inkscape::XML::Node *repr, guint flags)
+sp_feComposite_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags)
{
// Inkscape-only object, not copied during an "plain SVG" dump:
if (flags & SP_OBJECT_WRITE_EXT) {
@@ -252,12 +238,12 @@ sp_feComposite_write(SPObject *object, Inkscape::XML::Node *repr, guint flags)
// is this sane?
//repr->mergeFrom(SP_OBJECT_REPR(object), "id");
} else {
- repr = SP_OBJECT_REPR(object)->duplicate(NULL); // FIXME
+ repr = SP_OBJECT_REPR(object)->duplicate(doc);
}
}
if (((SPObjectClass *) feComposite_parent_class)->write) {
- ((SPObjectClass *) feComposite_parent_class)->write(object, repr, flags);
+ ((SPObjectClass *) feComposite_parent_class)->write(object, doc, repr, flags);
}
return repr;