Code

Patch by Felipe Sanches: fixed transparent lines in feConvolveMatrix output
authorkiirala <kiirala@users.sourceforge.net>
Mon, 23 Jul 2007 19:09:12 +0000 (19:09 +0000)
committerkiirala <kiirala@users.sourceforge.net>
Mon, 23 Jul 2007 19:09:12 +0000 (19:09 +0000)
src/display/nr-filter-convolve-matrix.cpp

index 6bdb3306e86a6b925e8d369872f16b5ed5a11d07..75a40df70d478e56cdb72e0c7f2ccdf6b0e5c396 100644 (file)
@@ -57,8 +57,8 @@ int FilterConvolveMatrix::render(FilterSlot &slot, Matrix const &trans) {
         }
     }
 
-    for (x=0; x < width; x++){
-        for (y=0; y < height; y++){
+    for (x=targetX; x < width - (orderX - targetX); x++){
+        for (y=targetY; y < height - (orderY - targetY); y++){
             result_R = 0;
             result_G = 0;
             result_B = 0;
@@ -125,6 +125,12 @@ void FilterConvolveMatrix::set_kernelMatrix(std::vector<gdouble> &km) {
 
 void FilterConvolveMatrix::area_enlarge(NRRectL &area, Matrix const &trans)
 {
+    //Seems to me that since this filter's operation is resolution dependent,
+    // some spurious pixels may still appear at the borders when low zooming or rotating. Needs a better fix.
+    area.x0 -= targetX;
+    area.y0 -= targetY;
+    area.x1 += orderX - targetX;
+    area.y1 += orderY - targetY;
 }
 
 } /* namespace NR */