X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsp-feturbulence.cpp;h=fcaf6c56f3937ad46a59857cf8ea8ca5bcdf7525;hb=80d34fe4a953d704430b44c6201a4fcbf455dfc6;hp=effdd777ee1ed657785901a7ca473381b33b598a;hpb=12f8d6edf83762026a782661a1e458bf4d026248;p=inkscape.git diff --git a/src/sp-feturbulence.cpp b/src/sp-feturbulence.cpp index effdd777e..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; } /** @@ -129,17 +130,17 @@ static bool sp_feTurbulence_read_stitchTiles(gchar const *value){ return false; // 'noStitch' is default } -static int sp_feTurbulence_read_type(gchar const *value){ - if (!value) return 1; // 'turbulence' is default +static NR::FilterTurbulenceType sp_feTurbulence_read_type(gchar const *value){ + if (!value) return NR::TURBULENCE_TURBULENCE; // 'turbulence' is default switch(value[0]){ case 'f': - if (strncmp(value, "fractalNoise", 12) == 0) return 0; + if (strncmp(value, "fractalNoise", 12) == 0) return NR::TURBULENCE_FRACTALNOISE; break; case 't': - if (strncmp(value, "turbulence", 10) == 0) return 1; + if (strncmp(value, "turbulence", 10) == 0) return NR::TURBULENCE_TURBULENCE; break; } - return 1; // 'turbulence' is default + return NR::TURBULENCE_TURBULENCE; // 'turbulence' is default } /** @@ -154,21 +155,24 @@ sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value) int read_int; 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; @@ -176,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; @@ -183,13 +188,15 @@ 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; case SP_ATTR_TYPE: - read_int = sp_feTurbulence_read_type(value); - if (read_int != feTurbulence->type){ - feTurbulence->type = read_int; + 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; @@ -223,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; @@ -261,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); } /*