From 821504b32d119930016aad02940a398ca6cef13e Mon Sep 17 00:00:00 2001 From: fitzsim Date: Fri, 6 May 2005 23:06:18 +0000 Subject: 2005-05-06 Thomas Fitzsimmons * Makefile.am (gtk_awt_peer_sources): Add GtkVolatileImage.java. * Makefile.in: Regenerate. * gnu/java/awt/peer/gtk/GdkGraphicsConfiguration.java (createCompatibleVolatileImage(int,int)): Implement. (createCompatibleVolatileImage(int,int,ImageCapabilities)): Likewise. * gnu/java/awt/peer/gtk/GtkComponentPeer.java (backBuffer, caps): New fields. (createVolatileImage): Implement. (createBuffers): Likewise. (getBackBuffer): Likewise. (flip): Likewise. (destroyBuffers): Likewise. * gnu/java/awt/peer/gtk/GtkVolatileImage.java: New file. * java/awt/Canvas.java (CanvasBltBufferStrategy): New class. (CanvasFlipBufferStrategy): Likewise. (createBufferStrategy(int)): New method. (createBufferStrategy(int,BufferCapabilities)): Likewise. * java/awt/Component.java (BltBufferStrategy): Implement and document class. (FlipBufferStrategy): Likewise. * java/awt/Window.java (WindowBltBufferStrategy): New class. (WindowFlipBufferStrategy): Likewise. (createBufferStrategy(int)): New method. (createBufferStrategy(int,BufferCapabilities)): Likewise. (getBufferStrategy): Likewise. * java/awt/BufferCapabilities.java (BufferCapabilities): Rename front to frontCaps and back to backCaps. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99336 138bc75d-0d04-0410-961f-82ee72b054a4 --- .../gnu/java/awt/peer/gtk/GtkComponentPeer.java | 54 +++++++++++++++++----- 1 file changed, 43 insertions(+), 11 deletions(-) (limited to 'libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java') diff --git a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java index 2625f56a008..e3e7afb199e 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -39,6 +39,7 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; import java.awt.AWTEvent; +import java.awt.AWTException; import java.awt.BufferCapabilities; import java.awt.Color; import java.awt.Component; @@ -71,6 +72,9 @@ import java.awt.peer.ComponentPeer; public class GtkComponentPeer extends GtkGenericPeer implements ComponentPeer { + VolatileImage backBuffer; + BufferCapabilities caps; + Component awtComponent; Insets insets; @@ -596,35 +600,63 @@ public class GtkComponentPeer extends GtkGenericPeer } - public VolatileImage createVolatileImage (int width, int height) - { - return null; - } - public boolean handlesWheelScrolling () { return false; } - public void createBuffers (int x, BufferCapabilities capabilities) - throws java.awt.AWTException + // Convenience method to create a new volatile image on the screen + // on which this component is displayed. + public VolatileImage createVolatileImage (int width, int height) + { + return new GtkVolatileImage (width, height); + } + // Creates buffers used in a buffering strategy. + public void createBuffers (int numBuffers, BufferCapabilities caps) + throws AWTException { - + // numBuffers == 2 implies double-buffering, meaning one back + // buffer and one front buffer. + if (numBuffers == 2) + backBuffer = new GtkVolatileImage(awtComponent.getWidth(), + awtComponent.getHeight(), + caps.getBackBufferCapabilities()); + else + throw new AWTException("GtkComponentPeer.createBuffers:" + + " multi-buffering not supported"); + this.caps = caps; } + // Return the back buffer. public Image getBackBuffer () { - return null; + return backBuffer; } + // FIXME: flip should be implemented as a fast native operation public void flip (BufferCapabilities.FlipContents contents) { - + getGraphics().drawImage(backBuffer, + awtComponent.getWidth(), + awtComponent.getHeight(), + null); + + // create new back buffer and clear it to the background color. + if (contents == BufferCapabilities.FlipContents.BACKGROUND) + { + backBuffer = createVolatileImage(awtComponent.getWidth(), + awtComponent.getHeight()); + backBuffer.getGraphics().clearRect(0, 0, + awtComponent.getWidth(), + awtComponent.getHeight()); + } + // FIXME: support BufferCapabilities.FlipContents.PRIOR } + // Release the resources allocated to back buffers. public void destroyBuffers () { - + backBuffer.flush(); } } -- cgit v1.2.3