summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorFrancis Kung <fkung@redhat.com>2007-02-16 20:28:45 +0000
committerFrancis Kung <fkung@redhat.com>2007-02-16 20:28:45 +0000
commita3d9c80d192ae0969f2cd4525b7a36d384f54fd4 (patch)
tree2f3d9b117da481bee1e814d87d492460e1176912 /java
parent7ada8d8b605c4ddcc8504140b185a89ced246cc7 (diff)
downloadclasspath-a3d9c80d192ae0969f2cd4525b7a36d384f54fd4.tar.gz
2007-02-16 Francis Kung <fkung@redhat.com>
* gnu/java/awt/ClasspathGraphicsEnvironment.java: New file. * gnu/java/awt/peer/gtk/CairoSurface.java (CairoDataBuffer): Removed inner class. (CairoSurface(int,int,int,int)): New constructor. (CairoSurface(int,int)): Delegate to new constructor. (CairoSurface(SampleModel,CairoSurface,Rectangle,Point)): New constructor for creating child rasters. (create): Added int[] parameter. (createChild): New method. (createCompatibleWritableRaster): New methods. (createTranslatedChild): New method. (createWritableChild): New method. (createWritableTranslatedChild): New method. (destroy): Added int[] parameter. (dispose): Only free native resources if this Surface has no parents. (isCompatibleColorModel): New method. (isCompatibleSampleModel): New method. * gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java (draw): Set transform, smarter bounds generation. (drawComposite): Improved clipping. (drawImage): Fixed bounds translation. (drawRenderedImage): Set transform in buffer. (fill): Set transform in buffer. * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java (createRaster): New method. * java/awt/image/BufferedImage.java (BufferedImage(int,int,int)): Use optimized raster if possible. * include/gnu_java_awt_peer_gtk_CairoSurface.h: Regenerated. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c (Java_gnu_java_awt_peer_gtk_CairoSurface_create): Share data buffer between Cairo and Java. (Java_gnu_java_awt_peer_gtk_CairoSurface_destroy): Free data array.
Diffstat (limited to 'java')
-rw-r--r--java/awt/image/BufferedImage.java21
1 files changed, 16 insertions, 5 deletions
diff --git a/java/awt/image/BufferedImage.java b/java/awt/image/BufferedImage.java
index 98e1b4ad6..c9879461c 100644
--- a/java/awt/image/BufferedImage.java
+++ b/java/awt/image/BufferedImage.java
@@ -39,7 +39,9 @@ exception statement from your version. */
package java.awt.image;
import gnu.java.awt.Buffers;
+import gnu.java.awt.ClasspathGraphicsEnvironment;
import gnu.java.awt.ComponentDataBlitOp;
+import gnu.java.awt.peer.gtk.CairoSurface;
import java.awt.Graphics;
import java.awt.Graphics2D;
@@ -273,11 +275,20 @@ public class BufferedImage extends Image
Transparency.OPAQUE, buftype );
}
- init( cm,
- Raster.createWritableRaster(sm, new Point( 0, 0 ) ),
- premultiplied,
- null, // no properties
- type );
+ WritableRaster rst = null;
+
+ // Attempt to create an accelerated backend for this image
+ GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ if (env instanceof ClasspathGraphicsEnvironment)
+ rst = ((ClasspathGraphicsEnvironment)env).createRaster(cm, sm);
+
+ // Default to a standard Java raster & databuffer if needed
+ if (rst == null)
+ rst = Raster.createWritableRaster(sm, new Point( 0, 0 ) );
+
+ init(cm, rst, premultiplied,
+ null, // no properties
+ type );
}
public BufferedImage(int w, int h, int type, IndexColorModel indexcolormodel)