public class GLWindow extends jogamp.opengl.GLAutoDrawableBase implements GLAutoDrawable, Window, NEWTEventConsumer, FPSCounter
GLAutoDrawable
and Window
interface,
using a delegated Window
instance, which may be an aggregation (lifecycle: created and destroyed).
This implementation supports GL state preservation
,
hence isGLStatePreservationSupported()
returns true
.
This implementation does not make the OpenGL context current
before calling the various input EventListener callbacks, ie MouseListener
etc.
This design decision is made in favor of a more performant and simplified
implementation. Also the event dispatcher shall be implemented OpenGL agnostic.
To be able to use OpenGL commands from within such input NEWTEventListener
,
you can inject GLRunnable
objects
via GLAutoDrawableBase.invoke(boolean, GLRunnable)
to the OpenGL command stream.
Window.FocusRunnable, Window.ReparentOperation
WindowClosingProtocol.WindowClosingMode
GLStateKeeper.Listener
SCREEN_CHANGE_ACTION_ENABLED
DEBUG_IMPLEMENTATION, DEBUG_KEY_EVENT, DEBUG_MOUSE_EVENT, TIMEOUT_NATIVEWINDOW
LOCK_SUCCESS, LOCK_SURFACE_CHANGED, LOCK_SURFACE_NOT_READY, LOCK_SURFACE_UNLOCKED
DEFAULT_FRAMES_PER_INTERVAL
Modifier and Type | Method and Description |
---|---|
boolean |
addChild(NativeWindow win) |
void |
addKeyListener(int index,
KeyListener l)
Inserts the given
KeyListener at the
specified position in the list. |
void |
addKeyListener(KeyListener l)
Appends the given
KeyListener to the end of
the list. |
void |
addMouseListener(int index,
MouseListener l)
Inserts the given
MouseListener at the
specified position in the list. |
void |
addMouseListener(MouseListener l)
Appends the given
MouseListener to the end of
the list. |
void |
addSurfaceUpdatedListener(int index,
SurfaceUpdatedListener l)
Inserts the given
SurfaceUpdatedListener at the
specified position in the list. |
void |
addSurfaceUpdatedListener(SurfaceUpdatedListener l)
Appends the given
SurfaceUpdatedListener to the end of the list. |
void |
addWindowListener(int index,
WindowListener l)
Inserts the given
WindowListener at the
specified position in the list. |
void |
addWindowListener(WindowListener l)
Appends the given
WindowListener to the end of
the list. |
void |
confinePointer(boolean grab)
Confine the pointer to this window, ie.
|
boolean |
consumeEvent(NEWTEvent event)
Consume the event
|
static GLWindow |
create(GLCapabilitiesImmutable caps)
Creates a new GLWindow attaching a new Window referencing a
new default Screen and default Display with the given GLCapabilities.
|
static GLWindow |
create(NativeWindow parentNativeWindow,
GLCapabilitiesImmutable caps)
Creates a new GLWindow attaching a new child Window
of the given
parentNativeWindow with the given GLCapabilities. |
static GLWindow |
create(Screen screen,
GLCapabilitiesImmutable caps)
Creates a new GLWindow attaching a new Window referencing the given Screen
with the given GLCapabilities.
|
static GLWindow |
create(Window window)
Creates a new GLWindow attaching the given window.
|
void |
destroy()
Destroys all resources associated with this GLAutoDrawable,
inclusive the GLContext.
|
void |
display()
Causes OpenGL rendering to be performed for this GLAutoDrawable
in the following order:
Calling
display(..) for all
registered GLEventListener s. |
void |
enqueueEvent(boolean wait,
NEWTEvent event) |
CapabilitiesImmutable |
getChosenCapabilities()
Gets an immutable set of chosen capabilities.
|
WindowClosingProtocol.WindowClosingMode |
getDefaultCloseOperation() |
Window |
getDelegatedWindow()
If the implementation uses delegation, return the delegated
Window instance,
otherwise return this instance. |
long |
getDisplayHandle()
Convenience: Get display handle from
AbstractGraphicsConfiguration .
|
GLDrawableFactory |
getFactory()
Return the
GLDrawableFactory being used to create this instance. |
AbstractGraphicsConfiguration |
getGraphicsConfiguration()
Returns the graphics configuration corresponding to this window.
|
int |
getHeight()
Returns the current height of this GLDrawable.
|
InsetsImmutable |
getInsets()
Returns the insets defined as the width and height of the window decoration
on the left, right, top and bottom.
Insets are zero if the window is undecorated, including child windows. |
KeyListener |
getKeyListener(int index) |
KeyListener[] |
getKeyListeners() |
Point |
getLocationOnScreen(Point storage)
Returns the current position of the top-left corner
of the client area in screen coordinates.
|
MonitorDevice |
getMainMonitor()
|
MouseListener |
getMouseListener(int index) |
MouseListener[] |
getMouseListeners() |
NativeWindow |
getParent() |
CapabilitiesImmutable |
getRequestedCapabilities()
Gets an immutable set of requested capabilities.
|
Screen |
getScreen() |
int |
getScreenIndex()
Convenience: Get display handle from
AbstractGraphicsConfiguration .
|
long |
getSurfaceHandle()
Returns the handle to the surface for this NativeSurface.
|
Thread |
getSurfaceLockOwner()
Return the locking owner's Thread, or null if not locked.
|
String |
getTitle() |
Object |
getUpstreamWidget()
Method may return the upstream UI toolkit object
holding this
GLAutoDrawable instance, if exist. |
int |
getWidth()
Returns the current width of this GLDrawable.
|
long |
getWindowHandle()
Returns the window handle for this NativeWindow.
|
WindowListener |
getWindowListener(int index) |
WindowListener[] |
getWindowListeners() |
int |
getX() |
int |
getY() |
boolean |
hasFocus()
Returns true if this native window owns the focus, otherwise false.
|
boolean |
isAlwaysOnTop() |
boolean |
isFullscreen() |
boolean |
isGLStatePreservationSupported() |
boolean |
isKeyboardVisible()
Return
true if the virtual on-screen keyboard is visible, otherwise false . |
boolean |
isNativeValid() |
boolean |
isPointerConfined() |
boolean |
isPointerVisible() |
boolean |
isSurfaceLockedByOtherThread()
Query if surface is locked by another thread, i.e.
|
boolean |
isUndecorated() |
boolean |
isVisible() |
int |
lockSurface()
Lock the surface of this native window.
|
static void |
main(String[] args)
A most simple JOGL AWT test entry
|
boolean |
removeChild(NativeWindow win) |
void |
removeKeyListener(KeyListener l) |
void |
removeMouseListener(MouseListener l) |
void |
removeSurfaceUpdatedListener(SurfaceUpdatedListener l)
Remove the specified
SurfaceUpdatedListener from the list. |
void |
removeWindowListener(WindowListener l) |
Window.ReparentOperation |
reparentWindow(NativeWindow newParent)
Change this window's parent window.
|
Window.ReparentOperation |
reparentWindow(NativeWindow newParent,
int x,
int y,
boolean forceDestroyCreate)
Change this window's parent window.
|
void |
requestFocus()
Request focus for this native window
|
void |
requestFocus(boolean wait)
Request focus for this native window
|
void |
runOnEDTIfAvail(boolean wait,
Runnable task) |
void |
sendWindowEvent(int eventType)
Send a
WindowEvent to all WindowListener . |
void |
setAlwaysOnTop(boolean value) |
CapabilitiesChooser |
setCapabilitiesChooser(CapabilitiesChooser chooser)
Set the CapabilitiesChooser to help determine the native visual type.
|
WindowClosingProtocol.WindowClosingMode |
setDefaultCloseOperation(WindowClosingProtocol.WindowClosingMode op) |
void |
setFocusAction(Window.FocusRunnable focusAction)
Sets a
Window.FocusRunnable ,
which Window.FocusRunnable.run() method is executed before the native focus is requested. |
boolean |
setFullscreen(boolean fullscreen)
Enable or disable fullscreen mode for this window.
|
boolean |
setFullscreen(List<MonitorDevice> monitors)
Enable fullscreen mode for this window spanning across the given
MonitorDevice s
or across all MonitorDevice s. |
void |
setKeyboardFocusHandler(KeyListener l)
Sets a
KeyListener allowing focus traversal with a covered window toolkit like AWT. |
void |
setKeyboardVisible(boolean visible)
In case the platform supports or even requires a virtual on-screen keyboard,
this method shows or hide it depending on whether
visible is true
or false . |
void |
setPointerVisible(boolean mouseVisible)
Makes the pointer visible or invisible.
|
void |
setPosition(int x,
int y)
Sets the location of the window's client area, excluding insets (window decorations).
This call is ignored if in fullscreen mode. |
void |
setSharedContext(GLContext sharedContext)
Specifies an
OpenGL context to share with.At native creation, setVisible(true) ,
a drawable and context is created besides the native Window itself,hence you shall set the shared context before. |
void |
setSize(int width,
int height)
Sets the size of the window's client area, excluding decorations.
|
void |
setTitle(String title) |
void |
setTopLevelPosition(int x,
int y)
Sets the location of the top-level window inclusive insets (window decorations).
|
void |
setTopLevelSize(int width,
int height)
Sets the size of the top-level window including insets (window decorations).
|
void |
setUndecorated(boolean value) |
void |
setVisible(boolean visible)
setVisible makes the window and children visible if visible is true,
otherwise the window and children becomes invisible. |
void |
setWindowDestroyNotifyAction(Runnable r)
Set a custom action handling destruction issued by a
toolkit triggered window destroy
replacing the default Window.destroy() action. |
boolean |
surfaceSwap()
Provide a mechanism to utilize custom (pre-) swap surface
code.
|
void |
surfaceUpdated(Object updater,
NativeSurface ns,
long when)
Notification of a surface update event, eg.
|
void |
swapBuffers()
Swaps the front and back buffers of this drawable.
|
String |
toString() |
void |
unlockSurface()
Unlock the surface of this native window
Shall not modify the surface handle, see
NativeSurface.lockSurface() |
void |
warpPointer(int x,
int y)
Moves the pointer to x/y relative to this window's origin.
|
void |
windowRepaint(int x,
int y,
int width,
int height) |
addGLEventListener, addGLEventListener, clearPreservedGLState, createContext, defaultSwapBuffers, disposeGLEventListener, getAnimator, getAutoSwapBufferMode, getChosenGLCapabilities, getContext, getContextCreationFlags, getDelegatedDrawable, getExclusiveContextThread, getFPSStartTime, getGL, getGLEventListener, getGLEventListenerCount, getGLEventListenerInitState, getGLProfile, getHandle, getLastFPS, getLastFPSPeriod, getLastFPSUpdateTime, getNativeSurface, getPreservedGLState, getTotalFPS, getTotalFPSDuration, getTotalFPSFrames, getUpdateFPSFrames, invoke, invoke, isGLOriented, isRealized, preserveGLStateAtDestroy, removeGLEventListener, resetFPSCounter, setAnimator, setAutoSwapBufferMode, setContext, setContextCreationFlags, setExclusiveContextThread, setGL, setGLEventListenerInitState, setGLStateKeeperListener, setRealized, setUpdateFPSFrames
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
addGLEventListener, addGLEventListener, createContext, disposeGLEventListener, getAnimator, getAutoSwapBufferMode, getContext, getContextCreationFlags, getDelegatedDrawable, getExclusiveContextThread, getGL, getGLEventListener, getGLEventListenerCount, getGLEventListenerInitState, invoke, invoke, removeGLEventListener, setAnimator, setAutoSwapBufferMode, setContext, setContextCreationFlags, setExclusiveContextThread, setGL, setGLEventListenerInitState
getChosenGLCapabilities, getGLProfile, getHandle, getNativeSurface, isGLOriented, isRealized, setRealized
getFPSStartTime, getLastFPS, getLastFPSPeriod, getLastFPSUpdateTime, getTotalFPS, getTotalFPSDuration, getTotalFPSFrames, getUpdateFPSFrames, resetFPSCounter, setUpdateFPSFrames
public final Object getUpstreamWidget()
GLAutoDrawable
GLAutoDrawable
instance, if exist.
Currently known Java UI toolkits and it's known return types are:
Toolkit | GLAutoDrawable Implementation | ~ | Return Type of getUpstreamWidget() |
NEWT | GLWindow | has a | Window |
SWT | GLCanvas | is a | Canvas |
AWT | GLCanvas | is a | Canvas |
AWT | GLJPanel | is a | JPanel |
This method may also return null
if no UI toolkit is being used,
as common for offscreen rendering.
getUpstreamWidget
in interface GLAutoDrawable
public static GLWindow create(GLCapabilitiesImmutable caps)
The lifecycle of this Window's Screen and Display is handled via Screen.addReference()
and Screen.removeReference()
.
public static GLWindow create(Screen screen, GLCapabilitiesImmutable caps)
The lifecycle of this Window's Screen and Display is handled via Screen.addReference()
and Screen.removeReference()
.
public static GLWindow create(Window window)
The lifecycle of this Window's Screen and Display is handled via Screen.addReference()
and Screen.removeReference()
.
public static GLWindow create(NativeWindow parentNativeWindow, GLCapabilitiesImmutable caps)
parentNativeWindow
with the given GLCapabilities.
The Display/Screen will be compatible with the parentNativeWindow
,
or even identical in case it's a Newt Window.
An already instantiated compatible Display will be reused.
The lifecycle of this Window's Screen and Display is handled via Screen.addReference()
and Screen.removeReference()
.
public WindowClosingProtocol.WindowClosingMode getDefaultCloseOperation()
getDefaultCloseOperation
in interface WindowClosingProtocol
WindowClosingProtocol.WindowClosingMode.DISPOSE_ON_CLOSE
,
WindowClosingProtocol.WindowClosingMode.DO_NOTHING_ON_CLOSE
public WindowClosingProtocol.WindowClosingMode setDefaultCloseOperation(WindowClosingProtocol.WindowClosingMode op)
setDefaultCloseOperation
in interface WindowClosingProtocol
op
- the new close operation valueWindowClosingProtocol.WindowClosingMode.DISPOSE_ON_CLOSE
,
WindowClosingProtocol.WindowClosingMode.DO_NOTHING_ON_CLOSE
public CapabilitiesChooser setCapabilitiesChooser(CapabilitiesChooser chooser)
Window
setCapabilitiesChooser
in interface Window
chooser
- the new CapabilitiesChooserpublic final CapabilitiesImmutable getChosenCapabilities()
Window
getChosenCapabilities
in interface Window
public final CapabilitiesImmutable getRequestedCapabilities()
Window
getRequestedCapabilities
in interface Window
public final Window getDelegatedWindow()
Window
Window
instance,
otherwise return this
instance.getDelegatedWindow
in interface Window
public final NativeWindow getParent()
getParent
in interface NativeWindow
public final Screen getScreen()
public final MonitorDevice getMainMonitor()
Window
MonitorDevice
which viewport
covers
this window the most.
If no coverage is detected the first MonitorDevice
is returned.
getMainMonitor
in interface Window
public final boolean isPointerVisible()
isPointerVisible
in interface Window
Window.setPointerVisible(boolean)
public final void setPointerVisible(boolean mouseVisible)
Window
setPointerVisible
in interface Window
mouseVisible
- defaults to true
for platforms w/ visible pointer,
otherwise defaults to true
, eg. Android.Window.confinePointer(boolean)
public final boolean isPointerConfined()
isPointerConfined
in interface Window
Window.confinePointer(boolean)
public final void confinePointer(boolean grab)
Window
Before jailing the mouse pointer, the window request the focus and the pointer is centered in the window.
In combination w/ Window.warpPointer(int, int)
and maybe Window.setPointerVisible(boolean)
a simple mouse
navigation can be realized.
confinePointer
in interface Window
grab
- defaults to false
.public final void setUndecorated(boolean value)
setUndecorated
in interface Window
public final void warpPointer(int x, int y)
Window
warpPointer
in interface Window
x
- relative pointer x position within this windowy
- relative pointer y position within this windowWindow.confinePointer(boolean)
public final boolean isUndecorated()
isUndecorated
in interface Window
public final void setAlwaysOnTop(boolean value)
setAlwaysOnTop
in interface Window
public final boolean isAlwaysOnTop()
isAlwaysOnTop
in interface Window
public final void setFocusAction(Window.FocusRunnable focusAction)
Window
Window.FocusRunnable
,
which Window.FocusRunnable.run()
method is executed before the native focus is requested.
This allows notifying a covered window toolkit like AWT that the focus is requested, hence focus traversal can be made transparent.
setFocusAction
in interface Window
public void setKeyboardFocusHandler(KeyListener l)
Window
KeyListener
allowing focus traversal with a covered window toolkit like AWT.
The KeyListener
methods are invoked prior to all other KeyListener
's
allowing to suppress the KeyEvent
via the NEWTEvent.consumedTag
and to perform focus traversal with a 3rd party toolkit.
The KeyListener
methods are not invoked for auto-repeat
events.
setKeyboardFocusHandler
in interface Window
public final void requestFocus()
Window
The request is handled on this Window EDT and blocked until finished.
requestFocus
in interface Window
Window.requestFocus(boolean)
public final void requestFocus(boolean wait)
Window
The request is handled on this Window EDT.
requestFocus
in interface Window
wait
- true if waiting until the request is executed, otherwise falseWindow.requestFocus()
public boolean hasFocus()
NativeWindow
hasFocus
in interface NativeWindow
public final InsetsImmutable getInsets()
NativeWindow
Insets are available only after the native window has been created,
ie. the native window has been made visible.
The top-level window area's top-left corner is located at
getX() - getInsets().The top-level window size isgetLeftWidth()
getY() - getInsets().getTopHeight()
getWidth() + getInsets().getTotalWidth()
getHeight() + getInsets().getTotalHeight()
getInsets
in interface NativeWindow
public final int getX()
getX
in interface NativeWindow
NativeWindow.getInsets()
public final int getY()
getY
in interface NativeWindow
NativeWindow.getInsets()
public final int getWidth()
GLDrawable
getWidth
in interface NativeSurface
getWidth
in interface GLDrawable
getWidth
in class jogamp.opengl.GLAutoDrawableBase
public final int getHeight()
GLDrawable
getHeight
in interface NativeSurface
getHeight
in interface GLDrawable
getHeight
in class jogamp.opengl.GLAutoDrawableBase
public final void setPosition(int x, int y)
Window
setPosition
in interface Window
x
- coord of the client-area's top left cornery
- coord of the client-area's top left cornerNativeWindow.getInsets()
public void setTopLevelPosition(int x, int y)
Window
Note: Insets (if supported) are available only after the window is set visible and hence has been created.
This call is ignored if in fullscreen mode.setTopLevelPosition
in interface Window
x
- coord of the top-level left cornery
- coord of the top-level left cornerWindow.setPosition(int, int)
,
NativeWindow.getInsets()
public final boolean setFullscreen(boolean fullscreen)
Window
Fullscreen mode is established on the main monitor
.
setFullscreen
in interface Window
fullscreen
- enable or disable fullscreen modeWindow.setFullscreen(List)
,
Window.isFullscreen()
public boolean setFullscreen(List<MonitorDevice> monitors)
Window
MonitorDevice
s
or across all MonitorDevice
s.
Disable fullscreen via Window.setFullscreen(boolean)
.
setFullscreen
in interface Window
monitors
- if null
fullscreen will be spanned across all MonitorDevice
s,
otherwise across the given list of MonitorDevice
.Window.setFullscreen(boolean)
,
Window.isFullscreen()
public final boolean isFullscreen()
isFullscreen
in interface Window
public final String toString()
toString
in interface GLDrawable
toString
in class jogamp.opengl.GLAutoDrawableBase
public final Window.ReparentOperation reparentWindow(NativeWindow newParent)
Window
In case the old parent is not null and a Window,
this window is removed from it's list of children.
In case the new parent is not null and a Window,
this window is added to it's list of children.
reparentWindow
in interface Window
newParent
- The new parent NativeWindow. If null, this Window becomes a top level window.Window.reparentWindow(NativeWindow, int, int, boolean)
public final Window.ReparentOperation reparentWindow(NativeWindow newParent, int x, int y, boolean forceDestroyCreate)
Window
In case the old parent is not null and a Window,
this window is removed from it's list of children.
In case the new parent is not null and a Window,
this window is added to it's list of children.
reparentWindow
in interface Window
newParent
- The new parent NativeWindow. If null, this Window becomes a top level window.x
- new top-level position, use -1 for default position.y
- new top-level position, use -1 for default position.forceDestroyCreate
- if true, uses re-creation strategy for reparenting, default is false
.Window.reparentWindow(NativeWindow)
public final boolean removeChild(NativeWindow win)
removeChild
in interface Window
public final boolean addChild(NativeWindow win)
public final void destroy()
GLAutoDrawable
dispose(..)
for all
registered GLEventListener
s. Called automatically by the
window system toolkit upon receiving a destroy notification. This
routine may be called manually.destroy
in interface Window
destroy
in interface NativeWindow
destroy
in interface GLAutoDrawable
Window.destroy()
,
Window.setVisible(boolean)
public void setWindowDestroyNotifyAction(Runnable r)
Window
toolkit triggered window destroy
replacing the default Window.destroy()
action.
The custom action shall call Window.destroy()
but may perform further tasks before and after.
setWindowDestroyNotifyAction
in interface Window
public final void setVisible(boolean visible)
Window
setVisible
makes the window and children visible if visible
is true,
otherwise the window and children becomes invisible.
The setVisible(true)
is responsible to actual create the native window.
Zero size semantics are respected, see Window.setSize(int,int)
:
if ( 0 == windowHandle && visible ) { this.visible = visible; if( 0 < width && 0 < height ) { createNative(); } } else if ( this.visible != visible ) { this.visible = visible; setNativeSizeImpl(); }
In case this window is a child window and has a NativeWindow
parent,
setVisible(true)
has no effect as long the parent's is not valid yet,
i.e. NativeWindow.getWindowHandle()
returns null
.
setVisible(true)
shall be repeated when the parent becomes valid.
setVisible
in interface Window
public final void setSize(int width, int height)
Window
Zero size semantics are respected, see Window.setVisible(boolean)
:
if ( visible && 0 != windowHandle && ( 0 ≥ width || 0 ≥ height ) ) { setVisible(false); } else if ( visible && 0 == windowHandle && 0 < width && 0 < height ) { setVisible(true); } else { // as expected .. }
This call is ignored if in fullscreen mode.
setSize
in interface Window
width
- of the window's client areaheight
- of the window's client areaNativeWindow.getInsets()
public void setTopLevelSize(int width, int height)
Window
Note: Insets (if supported) are available only after the window is set visible and hence has been created.
setTopLevelSize
in interface Window
width
- of the top-level window areaheight
- of the top-level window areaWindow.setSize(int, int)
,
NativeWindow.getInsets()
public final boolean isNativeValid()
isNativeValid
in interface Window
setVisible(true)
, otherwise false.Window.setVisible(boolean)
,
#destroy(boolean)
public Point getLocationOnScreen(Point storage)
NativeWindow
Since the position reflects the client area, it does not include the insets.
getLocationOnScreen
in interface NativeWindow
storage
- if not null,
Point.translate(javax.media.nativewindow.util.Point)
the passed Point
by this location on the screen and return it.public void setSharedContext(GLContext sharedContext)
OpenGL context
to share with.setVisible(true)
,
a drawable
and context
is created besides the native Window itself,sharedContext
- The OpenGL context shared by this GLWindow's onepublic void display()
GLAutoDrawable
Causes OpenGL rendering to be performed for this GLAutoDrawable in the following order:
display(..)
for all
registered GLEventListener
s. GLRunnable
,
enqueued via GLAutoDrawable.invoke(boolean, GLRunnable)
.
May be called periodically by a running GLAnimatorControl
implementation,
which must register itself with GLAutoDrawable.setAnimator(javax.media.opengl.GLAnimatorControl)
.
Called automatically by the window system toolkit upon receiving a repaint() request,
except an GLAnimatorControl
implementation GLAnimatorControl.isAnimating()
.
This routine may also be called manually for better control over the
rendering process. It is legal to call another GLAutoDrawable's
display method from within the display(..)
callback.
In case of a new generated OpenGL context,
the implementation shall call init(..)
for all
registered GLEventListener
s before making the
actual display(..)
calls,
in case this has not been done yet.
display
in interface GLAutoDrawable
GLAutoDrawable.setAnimator(javax.media.opengl.GLAnimatorControl)
public final boolean isGLStatePreservationSupported()
GLWindow supports GL state preservation, hence returns true
.
isGLStatePreservationSupported
in interface GLStateKeeper
isGLStatePreservationSupported
in class jogamp.opengl.GLAutoDrawableBase
true
if GL state preservation is supported in implementation and on current platform, false
otherwise.GLStateKeeper.preserveGLStateAtDestroy(boolean)
,
GLStateKeeper.getPreservedGLState()
,
GLStateKeeper.clearPreservedGLState()
public final GLDrawableFactory getFactory()
GLDrawable
GLDrawableFactory
being used to create this instance.getFactory
in interface GLDrawable
public final void swapBuffers() throws GLException
GLDrawable
GLAutoDrawable
implementations, when automatic buffer swapping
is enabled (as is the default), this method is called
automatically and should not be called by the end user.swapBuffers
in interface GLDrawable
GLException
public boolean consumeEvent(NEWTEvent event)
NEWTEventConsumer
consumeEvent
in interface NEWTEventConsumer
public final void windowRepaint(int x, int y, int width, int height)
windowRepaint
in interface Window
public final void enqueueEvent(boolean wait, NEWTEvent event)
enqueueEvent
in interface Window
public final void runOnEDTIfAvail(boolean wait, Runnable task)
runOnEDTIfAvail
in interface Window
public final void removeSurfaceUpdatedListener(SurfaceUpdatedListener l)
NativeSurface
SurfaceUpdatedListener
from the list.removeSurfaceUpdatedListener
in interface NativeSurface
public final void addSurfaceUpdatedListener(SurfaceUpdatedListener l)
NativeSurface
SurfaceUpdatedListener
to the end of the list.addSurfaceUpdatedListener
in interface NativeSurface
public final void addSurfaceUpdatedListener(int index, SurfaceUpdatedListener l) throws IndexOutOfBoundsException
NativeSurface
SurfaceUpdatedListener
at the
specified position in the list.addSurfaceUpdatedListener
in interface NativeSurface
index
- Position where the listener will be inserted.
Should be within (0 <= index && index <= size()).
An index value of -1 is interpreted as the end of the list, size().l
- The listener object to be insertedIndexOutOfBoundsException
- If the index is not within (0 <= index && index <= size()), or -1public void sendWindowEvent(int eventType)
Window
WindowEvent
to all WindowListener
.sendWindowEvent
in interface Window
eventType
- a WindowEvent
type, e.g. WindowEvent.EVENT_WINDOW_REPAINT
.public final WindowListener getWindowListener(int index)
getWindowListener
in interface Window
public final WindowListener[] getWindowListeners()
getWindowListeners
in interface Window
public final void removeWindowListener(WindowListener l)
removeWindowListener
in interface Window
public final void addWindowListener(WindowListener l)
Window
WindowListener
to the end of
the list.addWindowListener
in interface Window
public final void addWindowListener(int index, WindowListener l) throws IndexOutOfBoundsException
Window
WindowListener
at the
specified position in the list.addWindowListener
in interface Window
index
- Position where the listener will be inserted.
Should be within (0 <= index && index <= size()).
An index value of -1 is interpreted as the end of the list, size().l
- The listener object to be insertedIndexOutOfBoundsException
- If the index is not within (0 <= index && index <= size()), or -1public final void setKeyboardVisible(boolean visible)
Window
visible
is true
or false
.
One known platform where NEWT supports this feature is Android
.
setKeyboardVisible
in interface Window
public final boolean isKeyboardVisible()
Window
true
if the virtual on-screen keyboard is visible, otherwise false
.
Currently on Android
, the only supported platform right now,
there is no way to reliably be notified of the current keyboard state.
It would be best, if your code does not rely on this information.
isKeyboardVisible
in interface Window
Window.setKeyboardVisible(boolean)
public final void addKeyListener(KeyListener l)
Window
KeyListener
to the end of
the list.addKeyListener
in interface Window
public final void addKeyListener(int index, KeyListener l)
Window
KeyListener
at the
specified position in the list.addKeyListener
in interface Window
index
- Position where the listener will be inserted.
Should be within (0 <= index && index <= size()).
An index value of -1 is interpreted as the end of the list, size().l
- The listener object to be insertedpublic final void removeKeyListener(KeyListener l)
removeKeyListener
in interface Window
public final KeyListener getKeyListener(int index)
getKeyListener
in interface Window
public final KeyListener[] getKeyListeners()
getKeyListeners
in interface Window
public final void addMouseListener(MouseListener l)
Window
MouseListener
to the end of
the list.addMouseListener
in interface Window
public final void addMouseListener(int index, MouseListener l)
Window
MouseListener
at the
specified position in the list.addMouseListener
in interface Window
index
- Position where the listener will be inserted.
Should be within (0 <= index && index <= size()).
An index value of -1 is interpreted as the end of the list, size().l
- The listener object to be insertedpublic final void removeMouseListener(MouseListener l)
removeMouseListener
in interface Window
public final MouseListener getMouseListener(int index)
getMouseListener
in interface Window
public final MouseListener[] getMouseListeners()
getMouseListeners
in interface Window
public final int lockSurface() throws NativeWindowException, RuntimeException
NativeSurface
The surface handle shall be valid after a successfull call,
ie return a value other than NativeSurface.LOCK_SURFACE_UNLOCKED
and NativeSurface.LOCK_SURFACE_NOT_READY
,
which is
boolean ok = LOCK_SURFACE_NOT_READY < lockSurface();
The caller may need to take care of the result NativeSurface.LOCK_SURFACE_CHANGED
,
where the surface handle is valid but has changed.
This call is blocking until the surface has been locked or a timeout is reached. The latter will throw a runtime exception.
This call allows recursion from the same thread.
The implementation may want to aquire the
application level RecursiveLock
first before proceeding with a native surface lock.
The implementation shall also invoke AbstractGraphicsDevice.lock()
for the initial lock (recursive count zero).
lockSurface
in interface NativeSurface
NativeSurface.LOCK_SUCCESS
, NativeSurface.LOCK_SURFACE_CHANGED
or NativeSurface.LOCK_SURFACE_NOT_READY
.NativeWindowException
- if native locking failed, maybe platform relatedRuntimeException
- after timeout when waiting for the surface lockRecursiveLock
public final void unlockSurface()
NativeSurface
NativeSurface.lockSurface()
The implementation shall also invoke AbstractGraphicsDevice.unlock()
for the final unlock (recursive count zero).
The implementation shall be fail safe, i.e. tolerant in case the native resources are already released / unlocked. In this case the implementation shall simply ignore the call.
unlockSurface
in interface NativeSurface
NativeSurface.lockSurface()
,
RecursiveLock
public final boolean isSurfaceLockedByOtherThread()
NativeSurface
final Thread o = getSurfaceLockOwner(); if( null != o && Thread.currentThread() != o ) { .. }
isSurfaceLockedByOtherThread
in interface NativeSurface
public final Thread getSurfaceLockOwner()
NativeSurface
getSurfaceLockOwner
in interface NativeSurface
public final boolean surfaceSwap()
NativeSurface
The implementation may itself apply the swapping, in which case true shall be returned.
surfaceSwap
in interface NativeSurface
public final long getWindowHandle()
NativeWindow
The window handle shall reflect the platform one for all window related operations, e.g. open, close, resize.
On X11 this returns an entity of type Window.
On Microsoft Windows this returns an entity of type HWND.
getWindowHandle
in interface NativeWindow
public final long getSurfaceHandle()
NativeSurface
The surface handle should be set/update by NativeSurface.lockSurface()
,
where NativeSurface.unlockSurface()
is not allowed to modify it.
After NativeSurface.unlockSurface()
it is no more guaranteed
that the surface handle is still valid.
The surface handle shall reflect the platform one
for all drawable surface operations, e.g. opengl, swap-buffer.
On X11 this returns an entity of type Window,
since there is no differentiation of surface and window there.
On Microsoft Windows this returns an entity of type HDC.
getSurfaceHandle
in interface NativeSurface
public final AbstractGraphicsConfiguration getGraphicsConfiguration()
NativeSurface
In case the implementation utilizes a delegation pattern to wrap abstract toolkits,
this method shall return the native AbstractGraphicsConfiguration
via AbstractGraphicsConfiguration.getNativeGraphicsConfiguration()
.
getGraphicsConfiguration
in interface NativeSurface
AbstractGraphicsConfiguration.getNativeGraphicsConfiguration()
,
javax.media.nativewindow.GraphicsConfigurationFactory#chooseGraphicsConfiguration(Capabilities, CapabilitiesChooser, AbstractGraphicsScreen)
public final long getDisplayHandle()
NativeSurface
getDisplayHandle
in interface NativeSurface
public final int getScreenIndex()
NativeSurface
getScreenIndex
in interface NativeSurface
public final void surfaceUpdated(Object updater, NativeSurface ns, long when)
SurfaceUpdatedListener
surfaceUpdated
in interface SurfaceUpdatedListener
updater
- is the caller object who updated the surface,
e.g. a JOGL GLDrawable.ns
- the updated NativeSurfacewhen
- the time in ms, when the surface was updatedpublic static void main(String[] args)
Copyright 2010 JogAmp Community.