summaryrefslogtreecommitdiffstats
path: root/src/filters
diff options
context:
space:
mode:
authorJasper van de Gronde <jasper.vandegronde@gmail.com>2009-04-21 14:13:06 +0000
committerjaspervdg <jaspervdg@users.sourceforge.net>2009-04-21 14:13:06 +0000
commit2dd8926ab069ce4f278d407e8698ba7d8aaa9afd (patch)
tree134e4bf18f9f2b7d508324fa54508b6ff1f2ca69 /src/filters
parentBetter color handling in Bumps (diff)
downloadinkscape-2dd8926ab069ce4f278d407e8698ba7d8aaa9afd.tar.gz
inkscape-2dd8926ab069ce4f278d407e8698ba7d8aaa9afd.zip
Partial fix for bug 193926 , thanks to Preben Soeberg.
(bzr r7752)
Diffstat (limited to 'src/filters')
-rw-r--r--src/filters/convolvematrix.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/filters/convolvematrix.cpp b/src/filters/convolvematrix.cpp
index 7402dc8cb..a5a40811c 100644
--- a/src/filters/convolvematrix.cpp
+++ b/src/filters/convolvematrix.cpp
@@ -175,31 +175,35 @@ sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value)
if (value){
feConvolveMatrix->kernelMatrixIsSet = true;
feConvolveMatrix->kernelMatrix = helperfns_read_vector(value, (int) (feConvolveMatrix->order.getNumber() * feConvolveMatrix->order.getOptNumber()));
+ if (! feConvolveMatrix->divisorIsSet) {
+ feConvolveMatrix->divisor = 0;
+ for (unsigned int i = 0; i< feConvolveMatrix->kernelMatrix.size(); i++)
+ feConvolveMatrix->divisor += feConvolveMatrix->kernelMatrix[i];
+ if (feConvolveMatrix->divisor == 0) feConvolveMatrix->divisor = 1;
+ }
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
} else {
g_warning("For feConvolveMatrix you MUST pass a kernelMatrix parameter!");
}
break;
case SP_ATTR_DIVISOR:
- if (!value){
- read_num = 1;
- } else {
+ if (value) {
read_num = helperfns_read_number(value);
if (read_num == 0) {
- if (feConvolveMatrix->kernelMatrixIsSet){
- g_warning("You shouldn't pass a divisor value equal to 0! Assuming the sum of all values in kernelMatrix as the default value.");
- for (unsigned int i = 0; i< feConvolveMatrix->kernelMatrix.size(); i++)
- read_num += feConvolveMatrix->kernelMatrix[i];
- } else {
- g_warning("You shouldn't pass a divisor value equal to 0! Assuming 1 as the default value.");
- read_num = 1;
+ // This should actually be an error, but given our UI it is more useful to simply set divisor to the default.
+ for (unsigned int i = 0; i< feConvolveMatrix->kernelMatrix.size(); i++)
+ read_num += feConvolveMatrix->kernelMatrix[i];
+ if (read_num == 0) read_num = 1;
+ if (feConvolveMatrix->divisorIsSet || feConvolveMatrix->divisor!=read_num) {
+ feConvolveMatrix->divisorIsSet = false;
+ feConvolveMatrix->divisor = read_num;
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
+ } else if (!feConvolveMatrix->divisorIsSet || feConvolveMatrix->divisor!=read_num) {
+ feConvolveMatrix->divisorIsSet = true;
+ feConvolveMatrix->divisor = read_num;
}
}
- if (read_num != feConvolveMatrix->divisor){
- feConvolveMatrix->divisor = read_num;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
- }
break;
case SP_ATTR_BIAS:
read_num = 0;