summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFelipe Corr??a da Silva Sanches <juca@members.fsf.org>2007-08-05 20:22:48 +0000
committerjucablues <jucablues@users.sourceforge.net>2007-08-05 20:22:48 +0000
commitaa16883300757708ee4b924d6d987c584bfe47bb (patch)
tree4ce7545771118cffb71456e2c482ba7fa6297fa2 /src
parentupdated Slovak translation in trunk (diff)
downloadinkscape-aa16883300757708ee4b924d6d987c584bfe47bb.tar.gz
inkscape-aa16883300757708ee4b924d6d987c584bfe47bb.zip
refactoring:
*using CLAMP_D_TO_U8 *Changed edgeMode field of ConvolveMatrix filter to use an enum rather than a plain int (bzr r3378)
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-filter-convolve-matrix.cpp24
-rw-r--r--src/display/nr-filter-convolve-matrix.h11
-rw-r--r--src/sp-feconvolvematrix.cpp19
3 files changed, 27 insertions, 27 deletions
diff --git a/src/display/nr-filter-convolve-matrix.cpp b/src/display/nr-filter-convolve-matrix.cpp
index 9c9cf5f21..8ce9241fe 100644
--- a/src/display/nr-filter-convolve-matrix.cpp
+++ b/src/display/nr-filter-convolve-matrix.cpp
@@ -10,6 +10,7 @@
*/
#include "display/nr-filter-convolve-matrix.h"
+#include "display/nr-filter-utils.h"
#include <vector>
namespace NR {
@@ -19,7 +20,7 @@ FilterConvolveMatrix::FilterConvolveMatrix()
targetX((int)(orderX/2)),
targetY((int)(orderY/2)),
bias(0),
- edgeMode(0),
+ edgeMode((NR::FilterConvolveMatrixEdgeMode) 0),
preserveAlpha(false)
{}
@@ -80,20 +81,11 @@ int FilterConvolveMatrix::render(FilterSlot &slot, Matrix const &trans) {
}
}
}
- result_R = result_R / div + bias;
- result_G = result_G / div + bias;
- result_B = result_B / div + bias;
- result_A = result_A / div + bias;
-
- result_R = (result_R > 0 ? result_R : 0);
- result_G = (result_G > 0 ? result_G : 0);
- result_B = (result_B > 0 ? result_B : 0);
- result_A = (result_A > 0 ? result_A : 0);
-
- out_data[4*( x + width*y )] = (result_R < 255 ? (unsigned char)result_R : 255);
- out_data[4*( x + width*y )+1] = (result_G < 255 ? (unsigned char)result_G : 255);
- out_data[4*( x + width*y )+2] = (result_B < 255 ? (unsigned char)result_B : 255);
- out_data[4*( x + width*y )+3] = (result_A < 255 ? (unsigned char)result_A : 255);
+
+ out_data[4*( x + width*y )] = CLAMP_D_TO_U8(result_R / div + bias);
+ out_data[4*( x + width*y )+1] = CLAMP_D_TO_U8(result_G / div + bias);
+ out_data[4*( x + width*y )+2] = CLAMP_D_TO_U8(result_B / div + bias);
+ out_data[4*( x + width*y )+3] = CLAMP_D_TO_U8(result_A / div + bias);
}
}
@@ -130,7 +122,7 @@ void FilterConvolveMatrix::set_kernelMatrix(std::vector<gdouble> &km) {
kernelMatrix = km;
}
-void FilterConvolveMatrix::set_edgeMode(int mode){
+void FilterConvolveMatrix::set_edgeMode(FilterConvolveMatrixEdgeMode mode){
edgeMode = mode;
}
diff --git a/src/display/nr-filter-convolve-matrix.h b/src/display/nr-filter-convolve-matrix.h
index f4a823012..2a397abf2 100644
--- a/src/display/nr-filter-convolve-matrix.h
+++ b/src/display/nr-filter-convolve-matrix.h
@@ -20,6 +20,13 @@
namespace NR {
+enum FilterConvolveMatrixEdgeMode {
+ CONVOLVEMATRIX_EDGEMODE_DUPLICATE,
+ CONVOLVEMATRIX_EDGEMODE_WRAP,
+ CONVOLVEMATRIX_EDGEMODE_NONE,
+ CONVOLVEMATRIX_EDGEMODE_ENDTYPE
+};
+
class FilterConvolveMatrix : public FilterPrimitive {
public:
FilterConvolveMatrix();
@@ -36,7 +43,7 @@ public:
void set_kernelMatrix(std::vector<gdouble>& km);
void set_bias(double b);
void set_divisor(double d);
- void set_edgeMode(int mode);
+ void set_edgeMode(FilterConvolveMatrixEdgeMode mode);
void set_preserveAlpha(bool pa);
private:
@@ -45,7 +52,7 @@ private:
int orderX, orderY;
gdouble divisor, bias;
int dx, dy, kernelUnitLength;
- int edgeMode;
+ FilterConvolveMatrixEdgeMode edgeMode;
bool preserveAlpha;
};
diff --git a/src/sp-feconvolvematrix.cpp b/src/sp-feconvolvematrix.cpp
index 87e737dfe..434689385 100644
--- a/src/sp-feconvolvematrix.cpp
+++ b/src/sp-feconvolvematrix.cpp
@@ -117,20 +117,20 @@ sp_feConvolveMatrix_release(SPObject *object)
((SPObjectClass *) feConvolveMatrix_parent_class)->release(object);
}
-static int sp_feConvolveMatrix_read_edgeMode(gchar const *value){
- if (!value) return 0; //duplicate is default
+static NR::FilterConvolveMatrixEdgeMode sp_feConvolveMatrix_read_edgeMode(gchar const *value){
+ if (!value) return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; //duplicate is default
switch(value[0]){
case 'd':
- if (strncmp(value, "duplicate", 9) == 0) return 0;
+ if (strncmp(value, "duplicate", 9) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE;
break;
case 'w':
- if (strncmp(value, "wrap", 4) == 0) return 1;
+ if (strncmp(value, "wrap", 4) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_WRAP;
break;
case 'n':
- if (strncmp(value, "none", 4) == 0) return 2;
+ if (strncmp(value, "none", 4) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_NONE;
break;
}
- return 0; //duplicate is default
+ return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; //duplicate is default
}
/**
@@ -144,6 +144,7 @@ sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value)
double read_num;
int read_int;
bool read_bool;
+ NR::FilterConvolveMatrixEdgeMode read_mode;
switch(key) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
@@ -187,9 +188,9 @@ sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value)
}
break;
case SP_ATTR_EDGEMODE:
- read_int = (int) sp_feConvolveMatrix_read_edgeMode(value);
- if (read_int != feConvolveMatrix->edgeMode){
- feConvolveMatrix->edgeMode = read_int;
+ read_mode = sp_feConvolveMatrix_read_edgeMode(value);
+ if (read_mode != feConvolveMatrix->edgeMode){
+ feConvolveMatrix->edgeMode = read_mode;
object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;