index f4a8230126fab961ea817ae062bb9fc1c95d2bbf..b13db2f983d3b9180b3c3d177dd87110619b6a24 100644 (file)
#include "display/nr-filter-primitive.h"
#include "display/nr-filter-slot.h"
+#include "display/nr-filter-units.h"
#include "libnr/nr-matrix.h"
#include "libnr/nr-rect-l.h"
#include <vector>
namespace NR {
+enum FilterConvolveMatrixEdgeMode {
+ CONVOLVEMATRIX_EDGEMODE_DUPLICATE,
+ CONVOLVEMATRIX_EDGEMODE_WRAP,
+ CONVOLVEMATRIX_EDGEMODE_NONE,
+ CONVOLVEMATRIX_EDGEMODE_ENDTYPE
+};
+
class FilterConvolveMatrix : public FilterPrimitive {
public:
FilterConvolveMatrix();
static FilterPrimitive *create();
virtual ~FilterConvolveMatrix();
- virtual int render(FilterSlot &slot, Matrix const &trans);
+ virtual int render(FilterSlot &slot, FilterUnits const &units);
virtual void area_enlarge(NRRectL &area, Matrix const &trans);
+ virtual FilterTraits get_input_traits();
void set_targetY(int coord);
void set_targetX(int coord);
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:
int orderX, orderY;
gdouble divisor, bias;
int dx, dy, kernelUnitLength;
- int edgeMode;
+ FilterConvolveMatrixEdgeMode edgeMode;
bool preserveAlpha;
};