X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-feturbulence.cpp;h=fcaf6c56f3937ad46a59857cf8ea8ca5bcdf7525;hb=80d34fe4a953d704430b44c6201a4fcbf455dfc6;hp=dfff840e0faa8bb00abd1d939195a9bdf5f4d2db;hpb=000dfc9dd0bc3d8cd37fabe93f6f9d1ede190adf;p=inkscape.git diff --git a/src/sp-feturbulence.cpp b/src/sp-feturbulence.cpp index dfff840e0..fcaf6c56f 100644 --- a/src/sp-feturbulence.cpp +++ b/src/sp-feturbulence.cpp @@ -38,7 +38,7 @@ static void sp_feTurbulence_build(SPObject *object, SPDocument *document, Inksca static void sp_feTurbulence_release(SPObject *object); static void sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value); static void sp_feTurbulence_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feTurbulence_write(SPObject *object, Inkscape::XML::Node *repr, guint flags); +static Inkscape::XML::Node *sp_feTurbulence_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static void sp_feTurbulence_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); static SPFilterPrimitiveClass *feTurbulence_parent_class; @@ -84,6 +84,7 @@ sp_feTurbulence_class_init(SPFeTurbulenceClass *klass) static void sp_feTurbulence_init(SPFeTurbulence *feTurbulence) { + feTurbulence->updated=false; } /** @@ -155,21 +156,23 @@ sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value) double read_num; bool read_bool; NR::FilterTurbulenceType read_type; - + switch(key) { /*DEAL WITH SETTING ATTRIBUTES HERE*/ - + case SP_ATTR_BASEFREQUENCY: feTurbulence->baseFrequency.set(value); //From SVG spec: If two s are provided, the first number represents a base frequency in the X direction and the second value represents a base frequency in the Y direction. If one number is provided, then that value is used for both X and Y. if (feTurbulence->baseFrequency.optNumIsSet() == false) feTurbulence->baseFrequency.setOptNumber(feTurbulence->baseFrequency.getNumber()); + feTurbulence->updated = false; object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_NUMOCTAVES: read_int = (int) helperfns_read_number(value); if (read_int != feTurbulence->numOctaves){ feTurbulence->numOctaves = read_int; + feTurbulence->updated = false; object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; @@ -177,6 +180,7 @@ sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value) read_num = helperfns_read_number(value); if (read_num != feTurbulence->seed){ feTurbulence->seed = read_num; + feTurbulence->updated = false; object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; @@ -184,6 +188,7 @@ sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value) read_bool = sp_feTurbulence_read_stitchTiles(value); if (read_bool != feTurbulence->stitchTiles){ feTurbulence->stitchTiles = read_bool; + feTurbulence->updated = false; object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; @@ -191,6 +196,7 @@ sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value) read_type = sp_feTurbulence_read_type(value); if (read_type != feTurbulence->type){ feTurbulence->type = read_type; + feTurbulence->updated = false; object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; @@ -224,20 +230,20 @@ sp_feTurbulence_update(SPObject *object, SPCtx *ctx, guint flags) * Writes its settings to an incoming repr object, if any. */ static Inkscape::XML::Node * -sp_feTurbulence_write(SPObject *object, Inkscape::XML::Node *repr, guint flags) +sp_feTurbulence_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) { if (repr) { // is this sane? - repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + //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 *) feTurbulence_parent_class)->write) { - ((SPObjectClass *) feTurbulence_parent_class)->write(object, repr, flags); + ((SPObjectClass *) feTurbulence_parent_class)->write(object, doc, repr, flags); } return repr; @@ -262,6 +268,7 @@ static void sp_feTurbulence_build_renderer(SPFilterPrimitive *primitive, NR::Fil nr_turbulence->set_seed(sp_turbulence->seed); nr_turbulence->set_stitchTiles(sp_turbulence->stitchTiles); nr_turbulence->set_type(sp_turbulence->type); + nr_turbulence->set_updated(sp_turbulence->updated); } /*