summaryrefslogtreecommitdiffstats
path: root/src/sp-feconvolvematrix.cpp
diff options
context:
space:
mode:
authorFelipe Corr??a da Silva Sanches <juca@members.fsf.org>2007-07-26 08:02:07 +0000
committerjucablues <jucablues@users.sourceforge.net>2007-07-26 08:02:07 +0000
commit2bfd492fe4020ac67daa342e8c0e715db42ae1f1 (patch)
tree3339917f51456b04c7f047f153f42473056a10d2 /src/sp-feconvolvematrix.cpp
parentFilter effects dialog: (diff)
downloadinkscape-2bfd492fe4020ac67daa342e8c0e715db42ae1f1.tar.gz
inkscape-2bfd492fe4020ac67daa342e8c0e715db42ae1f1.zip
boiler plate code for feTurbulence:
*reading attributes and setting default values same for some more attributes on convolve matrix filter alphabetical ordering on Makefile_insert and on nr-filter.cpp #includes (bzr r3305)
Diffstat (limited to 'src/sp-feconvolvematrix.cpp')
-rw-r--r--src/sp-feconvolvematrix.cpp76
1 files changed, 64 insertions, 12 deletions
diff --git a/src/sp-feconvolvematrix.cpp b/src/sp-feconvolvematrix.cpp
index 4191cceec..059475e5f 100644
--- a/src/sp-feconvolvematrix.cpp
+++ b/src/sp-feconvolvematrix.cpp
@@ -144,6 +144,36 @@ sp_feConvolveMatrix_read_number(gchar const *value) {
return ret;
}
+static int sp_feConvolveMatrix_read_edgeMode(gchar const *value){
+ if (!value) return 0; //duplicate is default
+ switch(value[0]){
+ case 'd':
+ if (strncmp(value, "duplicate", 9) == 0) return 0;
+ break;
+ case 'w':
+ if (strncmp(value, "wrap", 4) == 0) return 1;
+ break;
+ case 'n':
+ if (strncmp(value, "none", 4) == 0) return 2;
+ break;
+ }
+ return 0; //duplicate is default
+}
+
+
+static bool sp_feConvolveMatrix_read_bool(gchar const *value){
+ if (!value) return false; //false is default
+ switch(value[0]){
+ case 't':
+ if (strncmp(value, "true", 4) == 0) return true;
+ break;
+ case 'f':
+ if (strncmp(value, "false", 5) == 0) return false;
+ break;
+ }
+ return false; //false is default
+}
+
/**
* Sets a specific value in the SPFeConvolveMatrix.
*/
@@ -152,7 +182,10 @@ sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value)
{
SPFeConvolveMatrix *feConvolveMatrix = SP_FECONVOLVEMATRIX(object);
(void)feConvolveMatrix;
-
+ double read_num;
+ int read_int;
+ bool read_bool;
+
switch(key) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
case SP_ATTR_ORDER:
@@ -164,32 +197,51 @@ sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value)
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
case SP_ATTR_DIVISOR:
- feConvolveMatrix->divisor = sp_feConvolveMatrix_read_number(value);
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ read_num = sp_feConvolveMatrix_read_number(value);
+ if (read_num != feConvolveMatrix->divisor){
+ feConvolveMatrix->divisor = read_num;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
case SP_ATTR_BIAS:
- feConvolveMatrix->bias = sp_feConvolveMatrix_read_number(value);
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ read_num = sp_feConvolveMatrix_read_number(value);
+ if (read_num != feConvolveMatrix->bias){
+ feConvolveMatrix->bias = read_num;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
case SP_ATTR_TARGETX:
- feConvolveMatrix->targetX = (int) sp_feConvolveMatrix_read_number(value);
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ read_int = (int) sp_feConvolveMatrix_read_number(value);
+ if (read_int != feConvolveMatrix->targetX){
+ feConvolveMatrix->targetX = read_int;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
case SP_ATTR_TARGETY:
- feConvolveMatrix->targetY = (int) sp_feConvolveMatrix_read_number(value);
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ read_int = (int) sp_feConvolveMatrix_read_number(value);
+ if (read_int != feConvolveMatrix->targetY){
+ feConvolveMatrix->targetY = read_int;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
case SP_ATTR_EDGEMODE:
- //TODO
+ read_int = (int) sp_feConvolveMatrix_read_edgeMode(value);
+ if (read_int != feConvolveMatrix->edgeMode){
+ feConvolveMatrix->edgeMode = read_int;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
case SP_ATTR_KERNELUNITLENGTH:
feConvolveMatrix->kernelUnitLength.set(value);
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
case SP_ATTR_PRESERVEALPHA:
- //TODO
+ read_bool = sp_feConvolveMatrix_read_bool(value);
+ if (read_bool != feConvolveMatrix->preserveAlpha){
+ feConvolveMatrix->preserveAlpha = read_bool;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ }
break;
-
default:
if (((SPObjectClass *) feConvolveMatrix_parent_class)->set)
((SPObjectClass *) feConvolveMatrix_parent_class)->set(object, key, value);