Class SWTAccessor
- java.lang.Object
-
- com.jogamp.nativewindow.swt.SWTAccessor
-
public class SWTAccessor extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
isOSX
static boolean
isWindows
static boolean
isX11
static boolean
isX11GTK
static Class<?>
OS_gtk_class
static VersionNumber
OS_gtk_version
-
Constructor Summary
Constructors Constructor Description SWTAccessor()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static long
createCompatibleGDKChildWindow(org.eclipse.swt.widgets.Control swtControl, int visualID, int width, int height)
static long
createCompatibleX11ChildWindow(AbstractGraphicsScreen screen, org.eclipse.swt.widgets.Control swtControl, int visualID, int width, int height)
static void
destroyGDKWindow(long gdkWindow)
static void
destroyX11Window(AbstractGraphicsDevice device, long x11Window)
static void
disposeGC(org.eclipse.swt.widgets.Control swtControl, long gc, org.eclipse.swt.graphics.GCData gcData)
static void
focusGDKWindow(long gdkWindow)
static long
gdk_widget_get_window(long handle)
static long
gdk_window_get_xdisplay(long window)
static long
gdk_window_get_xwindow(long window)
static void
gdk_window_set_back_pixmap(long window, long pixmap, boolean parent_relative)
static org.eclipse.swt.graphics.Rectangle
getClientAreaInPixels(org.eclipse.swt.widgets.Scrollable s)
Returns the unscaledScrollable.getClientArea()
in pixels.static AbstractGraphicsDevice
getDevice(org.eclipse.swt.widgets.Control swtControl)
static long
getHandle(org.eclipse.swt.widgets.Control swtControl)
static int
getNativeVisualID(AbstractGraphicsDevice device, long windowHandle)
static AbstractGraphicsScreen
getScreen(AbstractGraphicsDevice device, int screen)
static long
getWindowHandle(org.eclipse.swt.widgets.Control swtControl)
static VersionNumber
GTK_VERSION()
static void
invoke(boolean wait, Runnable runnable)
Runs the specified action in an SWT compatible thread, which is: Mac OSX Main Thread: Run on OSX UI main thread.static void
invoke(org.eclipse.swt.widgets.Display display, boolean wait, Runnable runnable)
Runs the specified action on the SWT UI thread.static boolean
isUsingLongHandles()
static long
newGC(org.eclipse.swt.widgets.Control swtControl, org.eclipse.swt.graphics.GCData gcData)
static void
resizeGDKWindow(org.eclipse.swt.graphics.Rectangle clientArea, long gdkWindow)
static void
resizeX11Window(AbstractGraphicsDevice device, org.eclipse.swt.graphics.Rectangle clientArea, long x11Window)
static void
setRealized(org.eclipse.swt.widgets.Control swtControl, boolean realize)
static void
showGDKWindow(long gdkWindow)
static boolean
useX11GTK()
-
-
-
Field Detail
-
isOSX
public static final boolean isOSX
-
isWindows
public static final boolean isWindows
-
isX11
public static final boolean isX11
-
isX11GTK
public static final boolean isX11GTK
-
OS_gtk_class
public static final Class<?> OS_gtk_class
-
OS_gtk_version
public static final VersionNumber OS_gtk_version
-
-
Method Detail
-
isUsingLongHandles
public static boolean isUsingLongHandles()
-
useX11GTK
public static boolean useX11GTK()
-
GTK_VERSION
public static VersionNumber GTK_VERSION()
-
gdk_widget_get_window
public static long gdk_widget_get_window(long handle)
-
gdk_window_get_xdisplay
public static long gdk_window_get_xdisplay(long window)
-
gdk_window_get_xwindow
public static long gdk_window_get_xwindow(long window)
-
gdk_window_set_back_pixmap
public static void gdk_window_set_back_pixmap(long window, long pixmap, boolean parent_relative)
-
getClientAreaInPixels
public static org.eclipse.swt.graphics.Rectangle getClientAreaInPixels(org.eclipse.swt.widgets.Scrollable s) throws NativeWindowException
Returns the unscaledScrollable.getClientArea()
in pixels.If the package restricted method
Scrollable.getClientAreaInPixels()
is implemented, we return its result.Fallback is to return
DPIUtil#autoScaleUp
(Scrollable.getClientArea()
), revertingScrollable.getClientArea()
'sDPIUtil.autoScaleDown(Rectangle)
.Note to SWT's API spec writers: You need to allow access to the unscaled value, scale properties and define what is being scaled (fonts, images, ..). Further more the scale should be separate for x/y coordinates, as DPI differs here.
Note to Eclipse authors: Scaling up the fonts and images hardly works on GTK/SWT/Eclipse. GDK_SCALE, GDK_DPI_SCALE and swt.autoScale produce inconsistent results with Eclipse. Broken High-DPI for .. some years now.
Requires SWT >= 3.105 (DPIUtil)- Parameters:
s
- theScrollable
instance- Returns:
- unscaled client area in pixels, see above
- Throws:
NativeWindowException
- during invocation of the method, if any
-
getHandle
public static long getHandle(org.eclipse.swt.widgets.Control swtControl) throws NativeWindowException
- Parameters:
swtControl
- the SWT Control to retrieve the native widget-handle from- Returns:
- the native widget-handle
- Throws:
NativeWindowException
- if the widget handle is null
-
setRealized
public static void setRealized(org.eclipse.swt.widgets.Control swtControl, boolean realize) throws NativeWindowException
- Throws:
NativeWindowException
-
getDevice
public static AbstractGraphicsDevice getDevice(org.eclipse.swt.widgets.Control swtControl) throws NativeWindowException, UnsupportedOperationException
- Parameters:
swtControl
- the SWT Control to retrieve the native device handle from- Returns:
- the AbstractGraphicsDevice w/ the native device handle
- Throws:
NativeWindowException
- if the widget handle is nullUnsupportedOperationException
- if the windowing system is not supported
-
getScreen
public static AbstractGraphicsScreen getScreen(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:
-
getNativeVisualID
public static int getNativeVisualID(AbstractGraphicsDevice device, long windowHandle)
-
getWindowHandle
public static long getWindowHandle(org.eclipse.swt.widgets.Control swtControl) throws NativeWindowException, UnsupportedOperationException
- Parameters:
swtControl
- the SWT Control to retrieve the native window handle from- Returns:
- the native window handle
- Throws:
NativeWindowException
- if the widget handle is nullUnsupportedOperationException
- if the windowing system is not supported
-
newGC
public static long newGC(org.eclipse.swt.widgets.Control swtControl, org.eclipse.swt.graphics.GCData gcData)
-
disposeGC
public static void disposeGC(org.eclipse.swt.widgets.Control swtControl, long gc, org.eclipse.swt.graphics.GCData gcData)
-
invoke
public static void invoke(boolean wait, Runnable runnable)
Runs the specified action in an SWT compatible thread, which is:- Mac OSX
- Main Thread: Run on OSX UI main thread. 'wait' is implemented on Java site via lock/wait on
RunnableTask
to not freeze OSX main thread.
- Main Thread: Run on OSX UI main thread. 'wait' is implemented on Java site via lock/wait on
- Linux, Windows, ..
- Current thread.
- See Also:
Platform.AWT_AVAILABLE
,Platform.getOSType()
- Mac OSX
-
invoke
public static void invoke(org.eclipse.swt.widgets.Display display, boolean wait, Runnable runnable)
Runs the specified action on the SWT UI thread.If
display
is disposed or the current thread is the SWT UI threadinvoke(boolean, Runnable)
is being used.- See Also:
invoke(boolean, Runnable)
-
createCompatibleX11ChildWindow
public static long createCompatibleX11ChildWindow(AbstractGraphicsScreen screen, org.eclipse.swt.widgets.Control swtControl, int visualID, int width, int height)
-
resizeX11Window
public static void resizeX11Window(AbstractGraphicsDevice device, org.eclipse.swt.graphics.Rectangle clientArea, long x11Window)
-
destroyX11Window
public static void destroyX11Window(AbstractGraphicsDevice device, long x11Window)
-
createCompatibleGDKChildWindow
public static long createCompatibleGDKChildWindow(org.eclipse.swt.widgets.Control swtControl, int visualID, int width, int height)
-
showGDKWindow
public static void showGDKWindow(long gdkWindow)
-
focusGDKWindow
public static void focusGDKWindow(long gdkWindow)
-
resizeGDKWindow
public static void resizeGDKWindow(org.eclipse.swt.graphics.Rectangle clientArea, long gdkWindow)
-
destroyGDKWindow
public static void destroyGDKWindow(long gdkWindow)
-
-