diff options
author | Sven Gothel <[email protected]> | 2011-11-09 00:31:34 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-11-09 00:31:34 +0100 |
commit | 7bc4c218b47033cb66f4eb5e707a86a0a4e60cff (patch) | |
tree | 1421a42878680a4a1e1772fa05114c50ac70edfb /src/nativewindow | |
parent | 1055ce051fd7bd3c88724888cf8f46c75535a249 (diff) |
NativeWindow: Add accessor interfaces NativeSurfaceHolder and NativeWindowHolder
- NativeSurfaceHolder interface allows access to it's implementation's NativeSurface reference.
- NativeWindowHolder interface allows access to it's implementation's NativeWindow reference.
Implement or extend interface w/ these accessors whereever it seems fit:
- NEWT Window
- GLDrawable
These accessors allow lower layers to retrieve the NativeSurface/Window instance
w/o knowledge of the 'upper' frameworks, ie. NativeWindow/JOGL or JOGL/NEWT.
Commited in followups (due to mixed semantical changes in those files):
- JAWTWindow
- NewtCanvasAWT
- Some NEWT impl.
Diffstat (limited to 'src/nativewindow')
6 files changed, 98 insertions, 2 deletions
diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java b/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java index b2a2bc4ee..0a9115f8c 100644 --- a/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java +++ b/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java @@ -36,7 +36,7 @@ package javax.media.nativewindow; the component is alive and realized/visible, NativeSurface must be able provide information such as the surface handle while it is locked.<P> */ -public interface NativeSurface extends SurfaceUpdatedListener { +public interface NativeSurface extends SurfaceUpdatedListener, NativeSurfaceHolder { /** Unlocked state */ public static final int LOCK_SURFACE_UNLOCKED = 0; diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeSurfaceHolder.java b/src/nativewindow/classes/javax/media/nativewindow/NativeSurfaceHolder.java new file mode 100644 index 000000000..46d8b3488 --- /dev/null +++ b/src/nativewindow/classes/javax/media/nativewindow/NativeSurfaceHolder.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2011 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +package javax.media.nativewindow; + +/** + * This interface allows access to it's implementation's NativeSurface reference. + */ +public interface NativeSurfaceHolder { + /** + * Returns the {@link NativeSurface} object. + * <p> + * The returned object might be this instance in case this Object is a NativeSurface, + * or a contained NativeSurface instance. + * </p> + */ + public NativeSurface getNativeSurface(); +} diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java b/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java index 76ac72953..1696cdb01 100644 --- a/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java +++ b/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java @@ -51,7 +51,7 @@ import javax.media.nativewindow.util.Point; implementation of {@link NativeWindowFactory NativeWindowFactory} which can create NativeWindow objects for its components. <P> */ -public interface NativeWindow extends NativeSurface { +public interface NativeWindow extends NativeSurface, NativeWindowHolder { /** * destroys the window and releases diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeWindowHolder.java b/src/nativewindow/classes/javax/media/nativewindow/NativeWindowHolder.java new file mode 100644 index 000000000..0c8b31aaa --- /dev/null +++ b/src/nativewindow/classes/javax/media/nativewindow/NativeWindowHolder.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2011 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +package javax.media.nativewindow; + +/** + * This interface allows access to it's implementation's NativeWindow reference. + */ +public interface NativeWindowHolder { + /** + * Returns the {@link NativeWindow} object. + * <p> + * The returned object might be this instance in case this Object is a NativeWindow, + * or a contained NativeWindow instance. + * </p> + */ + public NativeWindow getNativeWindow(); +} diff --git a/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java b/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java index 4c2b1c875..0460ccb56 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java +++ b/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java @@ -29,6 +29,7 @@ package jogamp.nativewindow; import javax.media.nativewindow.AbstractGraphicsConfiguration; +import javax.media.nativewindow.NativeSurface; import javax.media.nativewindow.ProxySurface; import javax.media.nativewindow.SurfaceChangeable; @@ -49,6 +50,10 @@ public class WrappedSurface extends ProxySurface implements SurfaceChangeable { surfaceHandle = 0; } + public NativeSurface getNativeSurface() { + return this; + } + public long getSurfaceHandle() { return surfaceHandle; } diff --git a/src/nativewindow/classes/jogamp/nativewindow/windows/GDISurface.java b/src/nativewindow/classes/jogamp/nativewindow/windows/GDISurface.java index 68cf8af45..bf3b649cf 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/windows/GDISurface.java +++ b/src/nativewindow/classes/jogamp/nativewindow/windows/GDISurface.java @@ -29,6 +29,7 @@ package jogamp.nativewindow.windows; import javax.media.nativewindow.AbstractGraphicsConfiguration; +import javax.media.nativewindow.NativeSurface; import javax.media.nativewindow.NativeWindowException; import javax.media.nativewindow.ProxySurface; @@ -56,6 +57,10 @@ public class GDISurface extends ProxySurface { surfaceHandle=0; } + public NativeSurface getNativeSurface() { + return this; + } + protected int lockSurfaceImpl() { if (0 != surfaceHandle) { throw new InternalError("surface not released"); |