diff options
| author | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-06 23:06:18 +0000 |
|---|---|---|
| committer | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-06 23:06:18 +0000 |
| commit | 821504b32d119930016aad02940a398ca6cef13e (patch) | |
| tree | 81ea3a47bbb3d6ce4bcf710fb8c56e517fc413aa /libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java | |
| parent | 604f7b8aa757d1e048ae7753892e7a54abdf6639 (diff) | |
| download | ppe42-gcc-821504b32d119930016aad02940a398ca6cef13e.tar.gz ppe42-gcc-821504b32d119930016aad02940a398ca6cef13e.zip | |
2005-05-06 Thomas Fitzsimmons <fitzsim@redhat.com>
* 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
Diffstat (limited to 'libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java')
| -rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java | 54 |
1 files changed, 43 insertions, 11 deletions
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(); } } |

