summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/gtk/BufferedImageGraphics.java
diff options
context:
space:
mode:
authorFrancis Kung <fkung@redhat.com>2006-11-21 16:34:03 +0000
committerFrancis Kung <fkung@redhat.com>2006-11-21 16:34:03 +0000
commit488fa0077a655f3152140e74355b11b897352b1e (patch)
tree3e9eda675efa4542c6df0f4920e263946f8699a7 /gnu/java/awt/peer/gtk/BufferedImageGraphics.java
parent03970a6b3aac93b82ebf1fa6f3467e35cf721aeb (diff)
downloadclasspath-488fa0077a655f3152140e74355b11b897352b1e.tar.gz
2006-11-21 Francis Kung <fkung@redhat.com>
* gnu/java/awt/java2d/TexturePaintContext.java (getRaster): Handle negative coordinate values. * gnu/java/awt/peer/gtk/CairoGraphics2D.java (setPaint): Moved custom paint processing to a new method. (setPaintPixels): Added x, y parameters. (getRealBounds): Added documentation. (copy): Copy clipping information. (drawLine): Process custom paints. (setCustomPaint): New method. (fill): Process custom paints. (drawGlyphVector): Process custom paints. (drawRect): Process custom paints. (draw): Process custom paints. * gnu/java/awt/peer/gtk/CairoSurface.java (cairoCM_opaque): New constant. * gnu/java/awt/peer/gtk/BufferedImageGraphics.java (argb32): Removed constant. (rgb32): Removed constant. (BufferedImageGraphics(BufferedImage)): Updated constant names. (BufferedImageGraphics(BufferedImageGraphics)): Copy color model flags. (updateBufferedImage): Transform to device-space before updating. * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setPaintPixels): Added x, y parameters. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setPaintPixels): Set pattern source at designated x, y origin.
Diffstat (limited to 'gnu/java/awt/peer/gtk/BufferedImageGraphics.java')
-rw-r--r--gnu/java/awt/peer/gtk/BufferedImageGraphics.java23
1 files changed, 13 insertions, 10 deletions
diff --git a/gnu/java/awt/peer/gtk/BufferedImageGraphics.java b/gnu/java/awt/peer/gtk/BufferedImageGraphics.java
index 341fa2a4e..f83be870d 100644
--- a/gnu/java/awt/peer/gtk/BufferedImageGraphics.java
+++ b/gnu/java/awt/peer/gtk/BufferedImageGraphics.java
@@ -54,7 +54,6 @@ import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DataBufferInt;
-import java.awt.image.DirectColorModel;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.awt.image.Raster;
@@ -100,12 +99,6 @@ public class BufferedImageGraphics extends CairoGraphics2D
*/
private long cairo_t;
- /**
- * Colormodels we recognize for fast copying.
- */
- static ColorModel rgb32 = new DirectColorModel(24, 0xFF0000, 0xFF00, 0xFF);
- static ColorModel argb32 = new DirectColorModel(32, 0xFF0000, 0xFF00, 0xFF,
- 0xFF000000);
private boolean hasFastCM;
private boolean hasAlpha;
@@ -117,12 +110,12 @@ public class BufferedImageGraphics extends CairoGraphics2D
imageHeight = bi.getHeight();
locked = false;
- if(bi.getColorModel().equals(rgb32))
+ if(bi.getColorModel().equals(CairoSurface.cairoCM_opaque))
{
hasFastCM = true;
hasAlpha = false;
}
- else if(bi.getColorModel().equals(argb32))
+ else if(bi.getColorModel().equals(CairoSurface.cairoColorModel))
{
hasFastCM = true;
hasAlpha = true;
@@ -176,8 +169,11 @@ public class BufferedImageGraphics extends CairoGraphics2D
imageWidth = copyFrom.imageWidth;
imageHeight = copyFrom.imageHeight;
locked = false;
+
+ hasFastCM = copyFrom.hasFastCM;
+ hasAlpha = copyFrom.hasAlpha;
+
copy( copyFrom, cairo_t );
- setClip(0, 0, surface.width, surface.height);
}
/**
@@ -188,6 +184,13 @@ public class BufferedImageGraphics extends CairoGraphics2D
if (locked)
return;
+ double[] points = new double[]{x, y, width+x, height+y};
+ transform.transform(points, 0, points, 0, 2);
+ x = (int)points[0];
+ y = (int)points[1];
+ width = (int)(points[2] - x);
+ height = (int)(points[3] - y);
+
int[] pixels = surface.getPixels(imageWidth * imageHeight);
if( x > imageWidth || y > imageHeight )