summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/x/XGraphicsConfiguration.java
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2007-07-13 19:33:11 +0000
committerRoman Kennke <roman@kennke.org>2007-07-13 19:33:11 +0000
commit6892e88154e39d696be0fbc6575b32167544c28f (patch)
tree7ff72feeb7841f337202b816939178d6e5c7c2a1 /gnu/java/awt/peer/x/XGraphicsConfiguration.java
parent712028c1187252365afa722e5bed2291fe60f225 (diff)
downloadclasspath-6892e88154e39d696be0fbc6575b32167544c28f.tar.gz
2007-07-13 Roman Kennke <roman@kennke.org>
* gnu/java/awt/peer/x/PixmapVolatileImage.java: New class. * gnu/java/awt/peer/x/XGraphicsConfiguration.java (createCompatibleImage(int,int)): Delegate to the 3-int overload. (createCompatibleImage(int,int,int)): Implemented. Using the ZPixmapDataBuffer for OPAQUE images. (createCompatibleVolatileImage(int,int)): Delegate to the 3-int overload. (createCompatibleVolatileImage(int,int,int)): Implemented. Using PixmapVolatileImage. * gnu/java/awt/peer/x/XWindowPeer.java (createImage): Return a PixmapVolatileImage (for now). (createVolatileImage): Implemented, using PixmapVolatileImage. * gnu/java/awt/peer/x/ZPixmapDataBuffer.java New class.
Diffstat (limited to 'gnu/java/awt/peer/x/XGraphicsConfiguration.java')
-rw-r--r--gnu/java/awt/peer/x/XGraphicsConfiguration.java65
1 files changed, 54 insertions, 11 deletions
diff --git a/gnu/java/awt/peer/x/XGraphicsConfiguration.java b/gnu/java/awt/peer/x/XGraphicsConfiguration.java
index d6e66cbd2..11a9c9694 100644
--- a/gnu/java/awt/peer/x/XGraphicsConfiguration.java
+++ b/gnu/java/awt/peer/x/XGraphicsConfiguration.java
@@ -39,11 +39,20 @@ package gnu.java.awt.peer.x;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
+import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
import java.awt.image.VolatileImage;
+import java.awt.image.WritableRaster;
public class XGraphicsConfiguration
extends GraphicsConfiguration
@@ -63,26 +72,60 @@ public class XGraphicsConfiguration
public BufferedImage createCompatibleImage(int w, int h)
{
- return new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
+ return createCompatibleImage(w, h, Transparency.OPAQUE);
}
- public VolatileImage createCompatibleVolatileImage(int w, int h)
+ public BufferedImage createCompatibleImage(int w, int h, int transparency)
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ BufferedImage bi;
+ switch (transparency)
+ {
+ case Transparency.OPAQUE:
+ DataBuffer buffer = new ZPixmapDataBuffer(w, h);
+ SampleModel sm = new ComponentSampleModel(DataBuffer.TYPE_BYTE, w, h,
+ 4, w * 4,
+ new int[]{0, 1, 2, 3 });
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);
+ ColorModel cm = new ComponentColorModel(cs, true, false,
+ Transparency.OPAQUE,
+ DataBuffer.TYPE_BYTE);
+ WritableRaster raster = Raster.createWritableRaster(sm, buffer,
+ new Point(0, 0));
+ bi = new BufferedImage(cm, raster, false, null);
+ break;
+ case Transparency.BITMASK:
+ case Transparency.TRANSLUCENT:
+ bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+ break;
+ default:
+ throw new IllegalArgumentException("Illegal transparency: "
+ + transparency);
+ }
+ return bi;
}
- public VolatileImage createCompatibleVolatileImage(int width, int height,
- int transparency)
+ public VolatileImage createCompatibleVolatileImage(int w, int h)
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ return createCompatibleVolatileImage(w, h, Transparency.OPAQUE);
}
- public BufferedImage createCompatibleImage(int w, int h, int transparency)
+ public VolatileImage createCompatibleVolatileImage(int width, int height,
+ int transparency)
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ VolatileImage im;
+ switch (transparency)
+ {
+ case Transparency.OPAQUE:
+ im = new PixmapVolatileImage(width, height);
+ break;
+ case Transparency.BITMASK:
+ case Transparency.TRANSLUCENT:
+ throw new UnsupportedOperationException("Not yet implemented");
+ default:
+ throw new IllegalArgumentException("Unknown transparency type: "
+ + transparency);
+ }
+ return im;
}
public ColorModel getColorModel()