diff --git a/core/PGraphics2.java b/core/PGraphics2.java index 55c75a8a4..6352f4bc1 100644 --- a/core/PGraphics2.java +++ b/core/PGraphics2.java @@ -724,15 +724,18 @@ public class PGraphics2 extends PGraphics { public float screenX(float x, float y) { - g2.getTransform().getMatrix(transform); - //return m00*x + m01*y + m02; - return (float)transform[0]*x + (float)transform[2]*y + (float)transform[4]; + loadMatrix(); + return super.screenX(x, y); + //g2.getTransform().getMatrix(transform); + //return (float)transform[0]*x + (float)transform[2]*y + (float)transform[4]; } public float screenY(float x, float y) { - g2.getTransform().getMatrix(transform); - return (float)transform[1]*x + (float)transform[3]*y + (float)transform[5]; + loadMatrix(); + return super.screenY(x, y); + //g2.getTransform().getMatrix(transform); + //return (float)transform[1]*x + (float)transform[3]*y + (float)transform[5]; } @@ -967,6 +970,19 @@ public class PGraphics2 extends PGraphics { ////////////////////////////////////////////////////////////// + public void mask(int alpha[]) { + throw new RuntimeException("mask() cannot be used with JAVA2D"); + } + + + public void mask(PImage alpha) { + throw new RuntimeException("mask() cannot be used with JAVA2D"); + } + + + ////////////////////////////////////////////////////////////// + + public void filter(int kind) { loadPixels(); super.filter(kind); @@ -984,7 +1000,24 @@ public class PGraphics2 extends PGraphics { ////////////////////////////////////////////////////////////// - public void copy(PImage src, int sx1, int sy1, int sx2, int sy2, + public void copy(int sx, int sy, int sw, int sh, + int dx, int dy, int dw, int dh) { + if ((sw != dw) || (sh != dh)) { + // use slow version if changing size + copy(this, sx, sy, sw, sh, dx, dy, dw, dh); + } + if (imageMode == CORNERS) { + sw -= sx; + sh -= sy; + } + dx = dx - sx; // java2d's "dx" is the delta, not dest + dy = dy - sy; + g2.copyArea(sx, sy, sw, sh, dx, dy); + } + + + public void copy(PImage src, + int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2) { loadPixels(); super.copy(src, sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2); @@ -992,6 +1025,9 @@ public class PGraphics2 extends PGraphics { } + ////////////////////////////////////////////////////////////// + + public void blend(PImage src, int sx, int sy, int dx, int dy, int mode) { loadPixels(); super.blend(src, sx, sy, dx, dy, mode); @@ -1022,10 +1058,11 @@ public class PGraphics2 extends PGraphics { } + ////////////////////////////////////////////////////////////// + + public void save(String filename) { loadPixels(); super.save(filename); - - //boolean ImageIO.write(RenderedImage im, String formatName, File output) } } diff --git a/core/PImage.java b/core/PImage.java index fff1d0391..76d2ed7d7 100644 --- a/core/PImage.java +++ b/core/PImage.java @@ -819,7 +819,7 @@ public class PImage implements PConstants, Cloneable { *
    * BLEND - linear interpolation of colours: C = A*factor + B
    * ADD - additive blending with white clip: C = min(A*factor + B, 255)
-   * SUBSTRACT - substractive blending with black clip: C = max(B - A*factor, 0)
+   * SUBSTRACT - substractive blend with black clip: C = max(B - A*factor, 0)
    * DARKEST - only the darkest colour succeeds: C = min(A*factor, B)
    * LIGHTEST - only the lightest colour succeeds: C = max(A*factor, B)
    * REPLACE - destination colour equals colour of source pixel: C = A
@@ -1558,6 +1558,11 @@ public class PImage implements PConstants, Cloneable {
   }
 
 
+  // TODO write reflection code here to use java 1.4 imageio methods
+  //      for writing out images that might be much better
+  //      won't want to use them in all cases.. how to determine?
+  // maybe for the 1.4 kids, would be nice to have:
+  //boolean ImageIO.write(RenderedImage im, String formatName, File output)
   public void save(String filename) {  // ignore
     boolean success = false;
 
diff --git a/core/todo.txt b/core/todo.txt
index 1d0e10670..682eb7a89 100644
--- a/core/todo.txt
+++ b/core/todo.txt
@@ -10,6 +10,7 @@ X vars like cameraX etc need to be in PGraphics
 X   otherwise g.xxxx won't work
 X   how far should this go? vertices etc?
 X   vertices not included because switching to triangleImpl and lineImpl
+X fix for copy() in java2d to make things a little speedier
 
 _ change PGraphics to PGraphics2 
 _   or not, because PGraphics has all the base stuff for 3D