index effdd777ee1ed657785901a7ca473381b33b598a..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 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_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter);
static SPFilterPrimitiveClass *feTurbulence_parent_class;
static void
sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
{
static void
sp_feTurbulence_init(SPFeTurbulence *feTurbulence)
{
+ feTurbulence->updated=false;
}
/**
}
/**
return false; // 'noStitch' is default
}
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':
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':
break;
case 't':
- if (strncmp(value, "turbulence", 10) == 0) return 1;
+ if (strncmp(value, "turbulence", 10) == 0) return NR::TURBULENCE_TURBULENCE;
break;
}
break;
}
- return 1; // 'turbulence' is default
+ return NR::TURBULENCE_TURBULENCE; // 'turbulence' is default
}
/**
}
/**
int read_int;
double read_num;
bool read_bool;
int read_int;
double read_num;
bool read_bool;
-
+ NR::FilterTurbulenceType read_type;
+
switch(key) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
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());
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;
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;
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
read_num = helperfns_read_number(value);
if (read_num != feTurbulence->seed){
feTurbulence->seed = read_num;
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;
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
read_bool = sp_feTurbulence_read_stitchTiles(value);
if (read_bool != feTurbulence->stitchTiles){
feTurbulence->stitchTiles = read_bool;
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:
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;
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
* Writes its settings to an incoming repr object, if any.
*/
static Inkscape::XML::Node *
* 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?
{
// 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 {
} else {
- repr = SP_OBJECT_REPR(object)->duplicate(NULL); // FIXME
+ repr = SP_OBJECT_REPR(object)->duplicate(doc);
}
}
if (((SPObjectClass *) feTurbulence_parent_class)->write) {
}
}
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;
}
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_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);
}
/*
}
/*