summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
diff options
context:
space:
mode:
authorFrancis Kung <fkung@redhat.com>2006-10-11 20:14:59 +0000
committerFrancis Kung <fkung@redhat.com>2006-10-11 20:14:59 +0000
commit758c8126469fe8b8bf8739c17318ad02c63f4035 (patch)
tree9d908bd6a01f42199e8afb43c98219775258bf7a /gnu/java/awt/peer/gtk/VolatileImageGraphics.java
parentbb59f44e1034c068cc838940af6ea165e6338a1e (diff)
downloadclasspath-758c8126469fe8b8bf8739c17318ad02c63f4035.tar.gz
2006-10-11 Francis Kung <fkung@redhat.com>
* gnu/java/awt/peer/gtk/BufferedImageGraphics.java (buffer, locked): New fields. (constructors): Initialize new variables. (createBuffer): New method. (draw): Implement custom composites. (drawComposite): New method. (drawGlyphVector): Implement custom composites. (drawImage): Implement custom composites. (drawRenderedImage): Implement custom composites. (fill): Implement custom composites. (getBufferCM): New method. (getNativeCM): New method. (updateBufferedImage): Fix premultiplication. * gnu/java/awt/peer/gtk/CairoGraphics2D.java (copy): Copy composite. (drawImage): Set background properly. (getBufferCM): New method. (setComposite): Reset alpha composite when using custom composite. * gnu/java/awt/peer/gtk/CairoSurface.java (cairoColorModel): New field. (nativeColorModel): Renamed. (constructor): Use renamed createCairoSampleModel method. (createCairoSampleModel): New method. (createNativeSampleModel): Renamed. (getBufferedImage): Use renamed cairoColorModel field. * gnu/java/awt/peer/gtk/GtkVolatileImage.java (gdkColorModel): New field. (createGdkSampleModel): New method. (getPixels): Added comments. (getSnapshot): Use GDK colour and sample models. * gnu/java/awt/peer/gtk/VolatileImageGraphics.java (createBuffer): Use GDK colour and sample models. (getNativeCM): Added comments. * java/awt/image/BufferedImage.java (constructor): Set premultiplied flag properly.
Diffstat (limited to 'gnu/java/awt/peer/gtk/VolatileImageGraphics.java')
-rw-r--r--gnu/java/awt/peer/gtk/VolatileImageGraphics.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/gnu/java/awt/peer/gtk/VolatileImageGraphics.java b/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
index 560d31750..4d69b5a28 100644
--- a/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+++ b/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
@@ -282,12 +282,12 @@ public class VolatileImageGraphics extends ComponentGraphics
if (buffer == null)
{
WritableRaster rst;
- rst = Raster.createWritableRaster(CairoSurface.
- createNativeSampleModel(owner.width,
+ rst = Raster.createWritableRaster(GtkVolatileImage.createGdkSampleModel(owner.width,
owner.height),
new Point(0,0));
- buffer = new BufferedImage(CairoSurface.nativeColorModel, rst, true,
+ buffer = new BufferedImage(GtkVolatileImage.gdkColorModel, rst,
+ GtkVolatileImage.gdkColorModel.isAlphaPremultiplied(),
new Hashtable());
}
else
@@ -301,7 +301,12 @@ public class VolatileImageGraphics extends ComponentGraphics
protected ColorModel getNativeCM()
{
- return CairoSurface.nativeColorModel;
+ // We should really return GtkVolatileImage.gdkColorModel ,
+ // but CairoGraphics2D doesn't handle alpha premultiplication properly (see
+ // the fixme in drawImage) so we use the naive Cairo model instead to trick
+ // the compositing context.
+ // Because getNativeCM() == getBufferCM() for this peer, it doesn't break.
+ return CairoSurface.cairoColorModel;
}
}