Class NativeWindowFactory
- java.lang.Object
-
- com.jogamp.nativewindow.NativeWindowFactory
-
public abstract class NativeWindowFactory extends Object
Provides a pluggable mechanism for arbitrary window toolkits to adapt their components to theNativeWindowinterface, which provides a platform-independent mechanism of accessing the information required to perform operations like hardware-accelerated rendering using the OpenGL API.FIXME: Bug 973 Needs service provider interface (SPI) for TK dependent implementation
-
-
Field Summary
Fields Modifier and Type Field Description static StringTYPE_ANDROIDAndroid/EGL type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_AWTGeneric AWT type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_BCM_VC_IVBroadcom VC IV/EGL type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_DEFAULTGeneric DEFAULT type, where platform implementation don't care, as retrieved withgetNativeWindowType(boolean).static StringTYPE_DRM_GBMDRM/GBM type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_EGLOpenKODE/EGL type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_IOSiOS type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_MACOSXMac OS X type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_WAYLANDWayland/EGL type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_WINDOWSMicrosoft Windows type, as retrieved withgetNativeWindowType(boolean).static StringTYPE_X11X11 type, as retrieved withgetNativeWindowType(boolean).
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidaddCustomShutdownHook(boolean head, Runnable runnable)Add a custom shutdown hook to be performed at JVM shutdown before shutting down NativeWindowFactory instance.static AbstractGraphicsDevicecreateDevice(String displayConnection, boolean own)Creates a native device type, followinggetNativeWindowType(true).static AbstractGraphicsDevicecreateDevice(String nwt, String displayConnection, boolean own)Creates a native device type, following the givennative-window-type.static AbstractGraphicsDevicecreateDevice(String nwt, String displayConnection, int unitID, boolean own)Creates a native device type, following the givennative-window-type.static AbstractGraphicsScreencreateScreen(AbstractGraphicsDevice device, int screen)static NativeWindowcreateWrappedWindow(AbstractGraphicsScreen aScreen, long surfaceHandle, long windowHandle, UpstreamWindowHookMutableSizePos hook)Creates a wrappedNativeWindowwith given native handles andAbstractGraphicsScreen.static ToolkitLockgetAWTToolkitLock()Returns the AWTToolkitLock(JAWT based) ifisAWTAvailable, otherwise null.static StringgetDefaultDisplayConnection()static StringgetDefaultDisplayConnection(String nwt)static NativeWindowFactorygetDefaultFactory()Gets the default NativeWindowFactory.static ToolkitLockgetDefaultToolkitLock()Provides the system defaultToolkitLockfor the default system windowing type.static ToolkitLockgetDefaultToolkitLock(String type)Provides the defaultToolkitLockfortype.static NativeWindowFactorygetFactory(Class<?> windowClass)Returns the appropriate NativeWindowFactory to handle window objects of the given type.static PointgetLocationOnScreen(NativeWindow nw)static NativeWindowgetNativeWindow(Object winObj, AbstractGraphicsConfiguration config)Converts the given window object and it'sAbstractGraphicsConfigurationinto aNativeWindowwhich can be operated upon by a custom toolkit, e.g.static StringgetNativeWindowType(boolean useCustom)static ToolkitLockgetNullToolkitLock()static OffscreenLayerSurfacegetOffscreenLayerSurface(NativeSurface surface, boolean ifEnabled)Returns theOffscreenLayerSurfaceinstance of thisNativeSurface.static voidinitSingleton()Static one time initialization of this factory.
This initialization method must be called once by the program or utilizing modules!static booleanisAWTAvailable()static booleanisInitialized()Returns true ifinitSingleton()has been called w/o subsequentshutdown(boolean).static booleanisJVMShuttingDown()Returns true if the JVM is shutting down, otherwise false.static booleanisNativeVisualIDValidForProcessing(int visualID)Returns true if the given visualID is valid for further processing, i.e.static booleanrequiresToolkitLock()static voidsetDefaultFactory(NativeWindowFactory factory)Sets the default NativeWindowFactory.static voidshutdown(boolean _isJVMShuttingDown)Cleanup resources at JVM shutdown
-
-
-
Field Detail
-
TYPE_WAYLAND
public static final String TYPE_WAYLAND
Wayland/EGL type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_DRM_GBM
public static final String TYPE_DRM_GBM
DRM/GBM type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_EGL
public static final String TYPE_EGL
OpenKODE/EGL type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_WINDOWS
public static final String TYPE_WINDOWS
Microsoft Windows type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_X11
public static final String TYPE_X11
X11 type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_BCM_VC_IV
public static final String TYPE_BCM_VC_IV
Broadcom VC IV/EGL type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_ANDROID
public static final String TYPE_ANDROID
Android/EGL type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_MACOSX
public static final String TYPE_MACOSX
Mac OS X type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_IOS
public static final String TYPE_IOS
iOS type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_AWT
public static final String TYPE_AWT
Generic AWT type, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
TYPE_DEFAULT
public static final String TYPE_DEFAULT
Generic DEFAULT type, where platform implementation don't care, as retrieved withgetNativeWindowType(boolean). String is canonical viaString.intern().- See Also:
- Constant Field Values
-
-
Method Detail
-
isJVMShuttingDown
public static final boolean isJVMShuttingDown()
Returns true if the JVM is shutting down, otherwise false.
-
addCustomShutdownHook
public static void addCustomShutdownHook(boolean head, Runnable runnable)Add a custom shutdown hook to be performed at JVM shutdown before shutting down NativeWindowFactory instance.- Parameters:
head- if true add runnable at the start, otherwise at the endrunnable- runnable to be added.
-
shutdown
public static void shutdown(boolean _isJVMShuttingDown)
Cleanup resources at JVM shutdown
-
isInitialized
public static boolean isInitialized()
Returns true ifinitSingleton()has been called w/o subsequentshutdown(boolean).
-
initSingleton
public static void initSingleton()
Static one time initialization of this factory.
This initialization method must be called once by the program or utilizing modules!
-
requiresToolkitLock
public static boolean requiresToolkitLock()
- Returns:
- true if the underlying toolkit requires locking, otherwise false.
-
isAWTAvailable
public static boolean isAWTAvailable()
- Returns:
- true if not headless, AWT Component and NativeWindow's AWT part available
-
getNativeWindowType
public static String getNativeWindowType(boolean useCustom)
- Parameters:
useCustom- if false return the native value, if true return a custom value if set, otherwise fallback to the native value.- Returns:
- the native window type, e.g.
TYPE_X11, which is canonical viaString.intern(). HenceString.equals(Object)and==produce the same result.
-
setDefaultFactory
public static void setDefaultFactory(NativeWindowFactory factory)
Sets the default NativeWindowFactory.
-
getDefaultFactory
public static NativeWindowFactory getDefaultFactory()
Gets the default NativeWindowFactory.
-
getAWTToolkitLock
public static ToolkitLock getAWTToolkitLock()
Returns the AWTToolkitLock(JAWT based) ifisAWTAvailable, otherwise null.The JAWT based
ToolkitLockalso locks the global lock, which matters if the latter is required.
-
getNullToolkitLock
public static ToolkitLock getNullToolkitLock()
-
getDefaultToolkitLock
public static ToolkitLock getDefaultToolkitLock()
Provides the system defaultToolkitLockfor the default system windowing type.
-
getDefaultToolkitLock
public static ToolkitLock getDefaultToolkitLock(String type)
Provides the defaultToolkitLockfortype.- JAWT
ToolkitLockif required andtypeis ofTYPE_AWTand AWT available, -
ResourceToolkitLockif required, otherwise -
NullToolkitLock
- JAWT
-
createScreen
public static AbstractGraphicsScreen createScreen(AbstractGraphicsDevice device, int screen)
- Parameters:
device-screen- -1 is default screen of the given device, e.g. maybe 0 or determined by native API. >= 0 is specific screen- Returns:
- newly created AbstractGraphicsScreen matching device's native type
-
getFactory
public static NativeWindowFactory getFactory(Class<?> windowClass) throws IllegalArgumentException
Returns the appropriate NativeWindowFactory to handle window objects of the given type. The windowClass might beNativeWindow, in which case the client has already assumed the responsibility of creating a compatible NativeWindow implementation, or it might be that of a toolkit class likeComponent.- Throws:
IllegalArgumentException
-
getNativeWindow
public static NativeWindow getNativeWindow(Object winObj, AbstractGraphicsConfiguration config) throws IllegalArgumentException, NativeWindowException
Converts the given window object and it'sAbstractGraphicsConfigurationinto aNativeWindowwhich can be operated upon by a custom toolkit, e.g.com.jogamp.opengl.GLDrawableFactory.
The object may be a component for a particular window toolkit, such as an AWT Canvas. It may also be a NativeWindow object itself.
You shall utilizeGraphicsConfigurationFactoryto construct a properAbstractGraphicsConfiguration.
The particular implementation of the NativeWindowFactory is responsible for handling objects from a particular window toolkit. The built-in NativeWindowFactory handles NativeWindow instances as well as AWT Components.- Throws:
IllegalArgumentException- if the given window object could not be handled by any of the registered NativeWindowFactory instancesNativeWindowException- See Also:
com.jogamp.nativewindow.GraphicsConfigurationFactory#chooseGraphicsConfiguration(Capabilities, CapabilitiesChooser, AbstractGraphicsScreen)
-
getOffscreenLayerSurface
public static OffscreenLayerSurface getOffscreenLayerSurface(NativeSurface surface, boolean ifEnabled)
Returns theOffscreenLayerSurfaceinstance of thisNativeSurface.In case this surface is a
NativeWindow, we traverse from the given surface up to root until an implementation ofOffscreenLayerSurfaceis found. In caseifEnabledis true, the surface must also implementOffscreenLayerOptionwhereOffscreenLayerOption.isOffscreenLayerSurfaceEnabled()istrue.- Parameters:
surface- The surface to query.ifEnabled- If true, only return the enabledOffscreenLayerSurface, seeOffscreenLayerOption.isOffscreenLayerSurfaceEnabled().- Returns:
-
isNativeVisualIDValidForProcessing
public static boolean isNativeVisualIDValidForProcessing(int visualID)
Returns true if the given visualID is valid for further processing, i.e. OpenGL usage, otherwise return false.On certain platforms, i.e. X11, a valid visualID is required at window creation. Other platforms may determine it later on, e.g. OSX and Windows.
If the visualID is
VisualIDHolder.VID_UNDEFINEDand the platform requires it at creation time (see above), it is not valid for further processing.FIXME: Bug 973 Needs service provider interface (SPI) for TK dependent implementation
-
getDefaultDisplayConnection
public static String getDefaultDisplayConnection()
-
createDevice
public static AbstractGraphicsDevice createDevice(String displayConnection, boolean own)
Creates a native device type, followinggetNativeWindowType(true).The device will be opened if
ownis true, otherwise no native handle will ever be acquired.
-
createDevice
public static AbstractGraphicsDevice createDevice(String nwt, String displayConnection, boolean own)
Creates a native device type, following the givennative-window-type.The device will be opened if
ownis true, otherwise no native handle will ever be acquired.FIXME: Bug 973 Needs service provider interface (SPI) for TK dependent implementation
-
createDevice
public static AbstractGraphicsDevice createDevice(String nwt, String displayConnection, int unitID, boolean own)
Creates a native device type, following the givennative-window-type.The device will be opened if
ownis true, otherwise no native handle will ever be acquired.FIXME: Bug 973 Needs service provider interface (SPI) for TK dependent implementation
-
createWrappedWindow
public static NativeWindow createWrappedWindow(AbstractGraphicsScreen aScreen, long surfaceHandle, long windowHandle, UpstreamWindowHookMutableSizePos hook)
Creates a wrappedNativeWindowwith given native handles andAbstractGraphicsScreen.The given
UpstreamWindowHookMutableSizePosmaybe used to reflect resizes and repositioning of the native window.The
AbstractGraphicsScreenmay be created viacreateScreen(AbstractGraphicsDevice, int).The
AbstractGraphicsScreenmay have an underlying openAbstractGraphicsDeviceor a simple dummy instance, seecreateDevice(String, boolean).
-
getLocationOnScreen
public static Point getLocationOnScreen(NativeWindow nw)
- Parameters:
nw-- Returns:
- top-left client-area position in window units
FIXME: Bug 973 Needs service provider interface (SPI) for TK dependent implementation
-
-