diff --git a/src/sp-feoffset.cpp b/src/sp-feoffset.cpp
index b4a50679ed18fcec7280c5df422c4ce3b35caca2..228424c70297539ca24be6e671866861ae463396 100644 (file)
--- a/src/sp-feoffset.cpp
+++ b/src/sp-feoffset.cpp
#include "attributes.h"
#include "svg/svg.h"
#include "sp-feoffset.h"
+#include "helper-fns.h"
#include "xml/repr.h"
#include "display/nr-filter-offset.h"
static void sp_feOffset_release(SPObject *object);
static void sp_feOffset_set(SPObject *object, unsigned int key, gchar const *value);
static void sp_feOffset_update(SPObject *object, SPCtx *ctx, guint flags);
-static Inkscape::XML::Node *sp_feOffset_write(SPObject *object, Inkscape::XML::Node *repr, guint flags);
+static Inkscape::XML::Node *sp_feOffset_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags);
static void sp_feOffset_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter);
static SPFilterPrimitiveClass *feOffset_parent_class;
((SPObjectClass *) feOffset_parent_class)->release(object);
}
-double sp_feOffset_read_number(gchar const *value) {
- 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;
-}
-
/**
* Sets a specific value in the SPFeOffset.
*/
{
SPFeOffset *feOffset = SP_FEOFFSET(object);
+ double read_num;
switch(key) {
case SP_ATTR_DX:
- feOffset->dx = sp_feOffset_read_number(value);
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ read_num = helperfns_read_number(value);
+ if (read_num != feOffset->dx) {
+ feOffset->dx = read_num;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
case SP_ATTR_DY:
- feOffset->dy = sp_feOffset_read_number(value);
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ read_num = helperfns_read_number(value);
+ if (read_num != feOffset->dy) {
+ feOffset->dy = read_num;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
/*DEAL WITH SETTING ATTRIBUTES HERE*/
* Writes its settings to an incoming repr object, if any.
*/
static Inkscape::XML::Node *
-sp_feOffset_write(SPObject *object, Inkscape::XML::Node *repr, guint flags)
+sp_feOffset_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) {
// Not. Causes coredumps.
// 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 *) feOffset_parent_class)->write) {
- ((SPObjectClass *) feOffset_parent_class)->write(object, repr, flags);
+ ((SPObjectClass *) feOffset_parent_class)->write(object, doc, repr, flags);
}
return repr;