diff options
| author | Francis Kung <fkung@redhat.com> | 2007-02-16 20:28:45 +0000 |
|---|---|---|
| committer | Francis Kung <fkung@redhat.com> | 2007-02-16 20:28:45 +0000 |
| commit | a3d9c80d192ae0969f2cd4525b7a36d384f54fd4 (patch) | |
| tree | 2f3d9b117da481bee1e814d87d492460e1176912 /java | |
| parent | 7ada8d8b605c4ddcc8504140b185a89ced246cc7 (diff) | |
| download | classpath-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.java | 21 |
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) |
