Boundary checking in updatePixelsImpl()

This commit is contained in:
codeanticode
2012-03-29 21:15:48 +00:00
parent 82478d06cb
commit 1384da730b
2 changed files with 23 additions and 24 deletions
+12 -12
View File
@@ -390,22 +390,22 @@ public class PImage implements PConstants, Cloneable {
int y2 = y + h;
if (!modified) {
mx1 = x;
mx2 = x2;
my1 = y;
my2 = y2;
mx1 = PApplet.max(0, x);
mx2 = PApplet.min(width - 1, x2);
my1 = PApplet.max(0, y);
my2 = PApplet.min(height - 1, y2);
modified = true;
} else {
if (x < mx1) mx1 = x;
if (x > mx2) mx2 = x;
if (y < my1) my1 = y;
if (x < mx1) mx1 = PApplet.max(0, x);
if (x > mx2) mx2 = PApplet.min(width - 1, x);
if (y < my1) my1 = PApplet.max(0, y);
if (y > my2) my2 = y;
if (x2 < mx1) mx1 = x2;
if (x2 > mx2) mx2 = x2;
if (y2 < my1) my1 = y2;
if (y2 > my2) my2 = y2;
if (x2 < mx1) mx1 = PApplet.max(0, x2);
if (x2 > mx2) mx2 = PApplet.min(width - 1, x2);
if (y2 < my1) my1 = PApplet.max(0, y2);
if (y2 > my2) my2 = PApplet.min(height - 1, y2);
}
}
@@ -585,7 +585,7 @@ public class PImage implements PConstants, Cloneable {
} else {
if ((x < 0) || (y < 0) || (x >= width) || (y >= height)) return;
pixels[y*width + x] = c;
updatePixelsImpl(x, y, x+1, y+1); // slow?
updatePixelsImpl(x, y, 1, 1); // slow?
}
}