index dfff840e0faa8bb00abd1d939195a9bdf5f4d2db..fcaf6c56f3937ad46a59857cf8ea8ca5bcdf7525 100644 (file)
--- a/src/sp-feturbulence.cpp
+++ b/src/sp-feturbulence.cpp
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;
static void
sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
{
+ feTurbulence->updated=false;
}
/**
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 <number>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;
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;
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;
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;
* 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);
}
/*