From 758c8126469fe8b8bf8739c17318ad02c63f4035 Mon Sep 17 00:00:00 2001 From: Francis Kung Date: Wed, 11 Oct 2006 20:14:59 +0000 Subject: 2006-10-11 Francis Kung * 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. --- gnu/java/awt/peer/gtk/VolatileImageGraphics.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'gnu/java/awt/peer/gtk/VolatileImageGraphics.java') 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; } } -- cgit v1.2.1