Blender V4.3
GHOST_SystemX11 Class Reference

#include <GHOST_SystemX11.hh>

Inherits GHOST_System.

Public Member Functions

 GHOST_SystemX11 ()
 
 ~GHOST_SystemX11 () override
 
GHOST_TSuccess init () override
 
uint64_t getMilliSeconds () const override
 
uint8_t getNumDisplays () const override
 
void getMainDisplayDimensions (uint32_t &width, uint32_t &height) const override
 
void getAllDisplayDimensions (uint32_t &width, uint32_t &height) const override
 
GHOST_IWindowcreateWindow (const char *title, int32_t left, int32_t top, uint32_t width, uint32_t height, GHOST_TWindowState state, GHOST_GPUSettings gpuSettings, const bool exclusive=false, const bool is_dialog=false, const GHOST_IWindow *parentWindow=nullptr) override
 
GHOST_IContextcreateOffscreenContext (GHOST_GPUSettings gpuSettings) override
 
GHOST_TSuccess disposeContext (GHOST_IContext *context) override
 
bool processEvents (bool waitForEvent) override
 
GHOST_TSuccess getCursorPosition (int32_t &x, int32_t &y) const override
 
GHOST_TSuccess setCursorPosition (int32_t x, int32_t y) override
 
GHOST_TSuccess getPixelAtCursor (float r_color[3]) const override
 
GHOST_TSuccess getModifierKeys (GHOST_ModifierKeys &keys) const override
 
GHOST_TSuccess getButtons (GHOST_Buttons &buttons) const override
 
GHOST_TCapabilityFlag getCapabilities () const override
 
void addDirtyWindow (GHOST_WindowX11 *bad_wind)
 
DisplaygetXDisplay ()
 
uint64_t ms_from_input_time (const Time timestamp) const
 
void getClipboard_xcout (const XEvent *evt, Atom sel, Atom target, unsigned char **txt, unsigned long *len, unsigned int *context) const
 
char * getClipboard (bool selection) const override
 
void putClipboard (const char *buffer, bool selection) const override
 
bool setConsoleWindowState (GHOST_TConsoleWindowState) override
 
Message Box
GHOST_TSuccess showMessageBox (const char *title, const char *message, const char *help_label, const char *continue_label, const char *link, GHOST_DialogOptions dialog_options) const override
 
- Public Member Functions inherited from GHOST_System
GHOST_ITimerTaskinstallTimer (uint64_t delay, uint64_t interval, GHOST_TimerProcPtr timerProc, GHOST_TUserDataPtr userData=nullptr)
 
GHOST_TSuccess removeTimer (GHOST_ITimerTask *timerTask)
 
GHOST_TSuccess disposeWindow (GHOST_IWindow *window)
 
bool validWindow (GHOST_IWindow *window)
 
GHOST_TSuccess beginFullScreen (const GHOST_DisplaySetting &setting, GHOST_IWindow **window, const bool stereoVisual)
 
GHOST_TSuccess updateFullScreen (const GHOST_DisplaySetting &setting, GHOST_IWindow **window)
 
GHOST_TSuccess endFullScreen ()
 
bool getFullScreen ()
 
bool useNativePixel ()
 
void useWindowFocus (const bool use_focus)
 
void setAutoFocus (const bool auto_focus)
 
GHOST_IWindowgetWindowUnderCursor (int32_t x, int32_t y)
 
void dispatchEvents ()
 
GHOST_TSuccess addEventConsumer (GHOST_IEventConsumer *consumer)
 
GHOST_TSuccess removeEventConsumer (GHOST_IEventConsumer *consumer)
 
GHOST_TSuccess getCursorPositionClientRelative (const GHOST_IWindow *window, int32_t &x, int32_t &y) const
 
GHOST_TSuccess setCursorPositionClientRelative (GHOST_IWindow *window, int32_t x, int32_t y)
 
GHOST_TSuccess getModifierKeyState (GHOST_TModifierKey mask, bool &isDown) const
 
GHOST_TSuccess getButtonState (GHOST_TButton mask, bool &isDown) const
 
void setMultitouchGestures (const bool use)
 
virtual void setTabletAPI (GHOST_TTabletAPI api)
 
GHOST_TTabletAPI getTabletAPI ()
 
GHOST_TSuccess pushEvent (const GHOST_IEvent *event)
 
GHOST_TimerManagergetTimerManager () const
 
GHOST_EventManagergetEventManager () const
 
GHOST_WindowManagergetWindowManager () const
 
GHOST_TSuccess hasClipboardImage () const
 
uintgetClipboardImage (int *r_width, int *r_height) const
 
GHOST_TSuccess putClipboardImage (uint *rgba, int width, int height) const
 
virtual void initDebug (GHOST_Debug debug)
 
virtual bool isDebugEnabled ()
 

Public Attributes

struct { 
 
   Atom   WM_STATE 
 
   Atom   WM_CHANGE_STATE 
 
   Atom   _NET_WM_STATE 
 
   Atom   _NET_WM_STATE_MAXIMIZED_HORZ 
 
   Atom   _NET_WM_STATE_MAXIMIZED_VERT 
 
   Atom   _NET_WM_STATE_FULLSCREEN 
 
   Atom   _MOTIF_WM_HINTS 
 
   Atom   WM_TAKE_FOCUS 
 
   Atom   WM_PROTOCOLS 
 
   Atom   WM_DELETE_WINDOW 
 
   Atom   TARGETS 
 
   Atom   STRING 
 
   Atom   COMPOUND_TEXT 
 
   Atom   TEXT 
 
   Atom   CLIPBOARD 
 
   Atom   PRIMARY 
 
   Atom   XCLIP_OUT 
 
   Atom   INCR 
 
   Atom   UTF8_STRING 
 
m_atom 
 
- Public Attributes inherited from GHOST_System
bool m_nativePixel
 
bool m_windowFocus
 
bool m_autoFocus
 

Additional Inherited Members

- Static Public Member Functions inherited from GHOST_ISystem
static GHOST_TSuccess createSystem (bool verbose, bool background)
 
static GHOST_TSuccess createSystemBackground ()
 
static GHOST_TSuccess disposeSystem ()
 
static GHOST_ISystemgetSystem ()
 
static const char * getSystemBackend ()
 
static GHOST_TBacktraceFn getBacktraceFn ()
 
static void setBacktraceFn (GHOST_TBacktraceFn backtrace_fn)
 
- Protected Member Functions inherited from GHOST_System
 GHOST_System ()
 
virtual ~GHOST_System ()
 
virtual GHOST_TSuccess exit ()
 
GHOST_TSuccess createFullScreenWindow (GHOST_Window **window, const GHOST_DisplaySetting &settings, const bool stereoVisual)
 
- Protected Member Functions inherited from GHOST_ISystem
 GHOST_ISystem ()
 
virtual ~GHOST_ISystem ()
 
- Protected Attributes inherited from GHOST_System
GHOST_DisplayManagerm_displayManager
 
GHOST_TimerManagerm_timerManager
 
GHOST_WindowManagerm_windowManager
 
GHOST_EventManagerm_eventManager
 
GHOST_DisplaySetting m_preFullScreenSetting
 
bool m_multitouchGestures
 
GHOST_TTabletAPI m_tabletAPI
 
bool m_is_debug_enabled
 
- Static Protected Attributes inherited from GHOST_ISystem
static GHOST_ISystemm_system = nullptr
 
static const char * m_system_backend_id = nullptr
 
static GHOST_TBacktraceFn m_backtrace_fn = nullptr
 

Detailed Description

X11 Implementation of GHOST_System class.

See also
GHOST_System.

Definition at line 60 of file GHOST_SystemX11.hh.

Constructor & Destructor Documentation

◆ GHOST_SystemX11()

◆ ~GHOST_SystemX11()

GHOST_SystemX11::~GHOST_SystemX11 ( )
override

Destructor.

Definition at line 226 of file GHOST_SystemX11.cc.

Member Function Documentation

◆ addDirtyWindow()

void GHOST_SystemX11::addDirtyWindow ( GHOST_WindowX11 * bad_wind)

Flag a window as dirty. This will generate a GHOST window update event on a call to processEvents()

Definition at line 1826 of file GHOST_SystemX11.cc.

References GHOST_ASSERT.

Referenced by GHOST_WindowX11::invalidate().

◆ createOffscreenContext()

GHOST_IContext * GHOST_SystemX11::createOffscreenContext ( GHOST_GPUSettings gpuSettings)
overridevirtual

Create a new off-screen context. Never explicitly delete the context, use disposeContext() instead.

Returns
The new context (or 0 if creation failed).

Implements GHOST_System.

Definition at line 408 of file GHOST_SystemX11.cc.

References GHOST_GPUSettings::context_type, GHOST_GPUSettings::flags, GHOST_gpuDebugContext, GHOST_OPENGL_GLX_CONTEXT_FLAGS, GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY, and GHOST_GPUSettings::preferred_device.

◆ createWindow()

GHOST_IWindow * GHOST_SystemX11::createWindow ( const char * title,
int32_t left,
int32_t top,
uint32_t width,
uint32_t height,
GHOST_TWindowState state,
GHOST_GPUSettings gpuSettings,
const bool exclusive = false,
const bool is_dialog = false,
const GHOST_IWindow * parentWindow = nullptr )
overridevirtual

Create a new window. The new window is added to the list of windows managed. Never explicitly delete the window, use disposeWindow() instead.

Parameters
titleThe name of the window. (displayed in the title bar of the window if the OS supports it).
leftThe coordinate of the left edge of the window.
topThe coordinate of the top edge of the window.
widthThe width the window.
heightThe height the window.
stateThe state of the window when opened.
stereoVisualCreate a stereo visual for quad buffered stereo.
exclusiveUse to show the window on top and ignore others (used full-screen).
parentWindowParent (embedder) window.
Returns
The new window (or 0 if creation failed).

Implements GHOST_ISystem.

Definition at line 357 of file GHOST_SystemX11.cc.

References GHOST_WindowManager::addWindow(), GHOST_GPUSettings::context_type, GHOST_GPUSettings::flags, getMilliSeconds(), GHOST_WindowX11::getValid(), GHOST_gpuDebugContext, GHOST_gpuStereoVisual, GHOST_kEventWindowSize, GHOST_System::m_windowManager, GHOST_GPUSettings::preferred_device, pushEvent, GHOST_WindowManager::setActiveWindow(), and state.

◆ disposeContext()

GHOST_TSuccess GHOST_SystemX11::disposeContext ( GHOST_IContext * context)
overridevirtual

Dispose of a context.

Parameters
contextPointer to the context to be disposed.
Returns
Indication of success.

Implements GHOST_ISystem.

Definition at line 461 of file GHOST_SystemX11.cc.

References GHOST_kSuccess.

◆ getAllDisplayDimensions()

void GHOST_SystemX11::getAllDisplayDimensions ( uint32_t & width,
uint32_t & height ) const
overridevirtual

Returns the dimensions of all displays on this system.

Returns
The dimension of the main display.

Implements GHOST_ISystem.

Definition at line 349 of file GHOST_SystemX11.cc.

Referenced by getMainDisplayDimensions().

◆ getButtons()

GHOST_TSuccess GHOST_SystemX11::getButtons ( GHOST_Buttons & buttons) const
overridevirtual

Returns the state of the mouse buttons (outside the message queue).

Parameters
buttonsThe state of the buttons.
Returns
Indication of success.

Implements GHOST_System.

Definition at line 1695 of file GHOST_SystemX11.cc.

References GHOST_kButtonMaskButton4, GHOST_kButtonMaskButton5, GHOST_kButtonMaskLeft, GHOST_kButtonMaskMiddle, GHOST_kButtonMaskRight, GHOST_kFailure, GHOST_kSuccess, and GHOST_Buttons::set().

◆ getCapabilities()

GHOST_TCapabilityFlag GHOST_SystemX11::getCapabilities ( ) const
overridevirtual

Return features supported by the system back-end.

The resulting value doesn't change at run-time.

Implements GHOST_ISystem.

Definition at line 1816 of file GHOST_SystemX11.cc.

References GHOST_CAPABILITY_FLAG_ALL, GHOST_kCapabilityClipboardImages, and GHOST_kCapabilityInputIME.

◆ getClipboard()

char * GHOST_SystemX11::getClipboard ( bool selection) const
overridevirtual

Returns unsigned char from CUT_BUFFER0

Parameters
selectionGet selection, X11 only feature.
Returns
Returns the Clipboard indicated by Flag.

Implements GHOST_System.

Definition at line 2235 of file GHOST_SystemX11.cc.

References free(), getClipboard_xcout(), GHOST_WindowManager::getWindows(), GHOST_WindowX11::getXWindow(), m_atom, GHOST_System::m_windowManager, None, txt_cut_buffer, txt_select_buffer, XCLIB_XCOUT_FALLBACK, XCLIB_XCOUT_FALLBACK_COMP, XCLIB_XCOUT_FALLBACK_TEXT, XCLIB_XCOUT_FALLBACK_UTF8, and XCLIB_XCOUT_NONE.

◆ getClipboard_xcout()

void GHOST_SystemX11::getClipboard_xcout ( const XEvent * evt,
Atom sel,
Atom target,
unsigned char ** txt,
unsigned long * len,
unsigned int * context ) const

◆ getCursorPosition()

GHOST_TSuccess GHOST_SystemX11::getCursorPosition ( int32_t & x,
int32_t & y ) const
overridevirtual

Returns the current location of the cursor (location in screen coordinates)

Parameters
xThe x-coordinate of the cursor.
yThe y-coordinate of the cursor.
Returns
Indication of success.

Implements GHOST_ISystem.

Definition at line 1752 of file GHOST_SystemX11.cc.

References getCursorPosition_impl().

Referenced by getPixelAtCursor(), setCursorPosition(), and GHOST_WindowX11::setWindowCursorGrab().

◆ getMainDisplayDimensions()

void GHOST_SystemX11::getMainDisplayDimensions ( uint32_t & width,
uint32_t & height ) const
overridevirtual

Returns the dimensions of the main display on this system.

Returns
The dimension of the main display.

Implements GHOST_ISystem.

Definition at line 339 of file GHOST_SystemX11.cc.

References getAllDisplayDimensions().

◆ getMilliSeconds()

uint64_t GHOST_SystemX11::getMilliSeconds ( ) const
overridevirtual

Inherited from GHOST_ISystem

Returns the system time. Returns the number of milliseconds since the start of the system process.

Returns
The number of milliseconds.

Implements GHOST_ISystem.

Definition at line 264 of file GHOST_SystemX11.cc.

References GHOST_ASSERT, and time.

Referenced by createWindow(), ms_from_input_time(), and processEvents().

◆ getModifierKeys()

GHOST_TSuccess GHOST_SystemX11::getModifierKeys ( GHOST_ModifierKeys & keys) const
overridevirtual

Returns the state of all modifier keys.

Parameters
keysThe state of all modifier keys (true == pressed).
Returns
Indication of success.

Implements GHOST_System.

Definition at line 1653 of file GHOST_SystemX11.cc.

References GHOST_kModifierKeyLeftAlt, GHOST_kModifierKeyLeftControl, GHOST_kModifierKeyLeftOS, GHOST_kModifierKeyLeftShift, GHOST_kModifierKeyRightAlt, GHOST_kModifierKeyRightControl, GHOST_kModifierKeyRightOS, GHOST_kModifierKeyRightShift, GHOST_kSuccess, and GHOST_ModifierKeys::set().

◆ getNumDisplays()

uint8_t GHOST_SystemX11::getNumDisplays ( ) const
overridevirtual

Returns the number of displays on this system.

Returns
The number of displays.

Implements GHOST_ISystem.

Definition at line 334 of file GHOST_SystemX11.cc.

Referenced by GHOST_DisplayManagerX11::getNumDisplays().

◆ getPixelAtCursor()

GHOST_TSuccess GHOST_SystemX11::getPixelAtCursor ( float r_color[3]) const
overridevirtual

Get the color of the pixel at the current mouse cursor location

Parameters
r_colorreturned sRGB float colors
Returns
Success value (true == successful and supported by platform)

Reimplemented from GHOST_System.

Definition at line 1614 of file GHOST_SystemX11.cc.

References getCursorPosition(), GHOST_kFailure, GHOST_kSuccess, x, and y.

◆ getXDisplay()

Display * GHOST_SystemX11::getXDisplay ( )
inline

◆ init()

GHOST_TSuccess GHOST_SystemX11::init ( )
overridevirtual

Initialize the system.

Returns
Indication of success.

Reimplemented from GHOST_System.

Definition at line 246 of file GHOST_SystemX11.cc.

References GHOST_kFailure, GHOST_kSuccess, GHOST_System::init(), and GHOST_System::m_displayManager.

◆ ms_from_input_time()

uint64_t GHOST_SystemX11::ms_from_input_time ( const Time timestamp) const

Use this function instead of GHOST_System::getMilliSeconds, passing in the time-stamp from X to input to get the event time-stamp with an offset applied to make it compatible with getMilliSeconds.

Definition at line 275 of file GHOST_SystemX11.cc.

References getMilliSeconds(), UINT32_MAX, and UNLIKELY.

Referenced by processEvents().

◆ processEvents()

bool GHOST_SystemX11::processEvents ( bool waitForEvent)
overridevirtual

Retrieves events from the system and stores them in the queue.

Parameters
waitForEventFlag to wait for an event (or return immediately).
Returns
Indication of the presence of events.

Implements GHOST_ISystem.

Definition at line 594 of file GHOST_SystemX11.cc.

References ARRAY_SIZE, ELEM, GHOST_TimerManager::fireTimers(), getMilliSeconds(), GHOST_System::getTimerManager(), GHOST_kEventKeyDown, ghost_key_from_keysym(), GHOST_kFireTimeNever, GHOST_PRINT, int, ms_from_input_time(), next, GHOST_TimerManager::nextFireTime(), processEvents(), pushEvent, and SleepTillEvent().

Referenced by processEvents().

◆ putClipboard()

void GHOST_SystemX11::putClipboard ( const char * buffer,
bool selection ) const
overridevirtual

Puts buffer to system clipboard

Parameters
bufferThe buffer to copy to the clipboard.
selectionSet the selection into the clipboard, X11 only feature.

Implements GHOST_System.

Definition at line 2347 of file GHOST_SystemX11.cc.

References free(), GHOST_WindowManager::getWindows(), GHOST_WindowX11::getXWindow(), m_atom, GHOST_System::m_windowManager, txt_cut_buffer, and txt_select_buffer.

◆ setConsoleWindowState()

bool GHOST_SystemX11::setConsoleWindowState ( GHOST_TConsoleWindowState )
inlineoverridevirtual
See also
GHOST_ISystem

Implements GHOST_ISystem.

Definition at line 270 of file GHOST_SystemX11.hh.

◆ setCursorPosition()

GHOST_TSuccess GHOST_SystemX11::setCursorPosition ( int32_t x,
int32_t y )
overridevirtual

Updates the location of the cursor (location in screen coordinates). Not all operating systems allow the cursor to be moved (without the input device being moved).

Parameters
xThe x-coordinate of the cursor.
yThe y-coordinate of the cursor.
Returns
Indication of success.

Implements GHOST_ISystem.

Definition at line 1758 of file GHOST_SystemX11.cc.

References getCursorPosition(), getCursorPosition_impl(), GHOST_kFailure, GHOST_kSuccess, and None.

Referenced by GHOST_WindowX11::beginFullScreen(), and GHOST_WindowX11::setWindowCursorGrab().

◆ showMessageBox()

GHOST_TSuccess GHOST_SystemX11::showMessageBox ( const char * title,
const char * message,
const char * help_label,
const char * continue_label,
const char * link,
GHOST_DialogOptions dialog_options ) const
overridevirtual

Show a system message box

Parameters
titleThe title of the message box.
messageThe message to display.
help_labelHelp button label.
continue_labelContinue button label.
linkAn optional hyperlink.
dialog_optionsOptions how to display the message.

Reimplemented from GHOST_System.

Definition at line 2492 of file GHOST_SystemX11.cc.

References DialogData::drawButton(), e, free(), GHOST_kSuccess, GHOST_PRINTF, DialogData::height, DialogData::isInsideButton(), DialogData::line_height, DialogData::padding_x, split(), and DialogData::width.

Referenced by GHOST_WindowX11::GHOST_WindowX11().

Member Data Documentation

◆ _MOTIF_WM_HINTS

Atom GHOST_SystemX11::_MOTIF_WM_HINTS

Definition at line 309 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::setDialogHints().

◆ _NET_WM_STATE

Atom GHOST_SystemX11::_NET_WM_STATE

Definition at line 305 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::GHOST_WindowX11().

◆ _NET_WM_STATE_FULLSCREEN

Atom GHOST_SystemX11::_NET_WM_STATE_FULLSCREEN

Definition at line 308 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::GHOST_WindowX11().

◆ _NET_WM_STATE_MAXIMIZED_HORZ

Atom GHOST_SystemX11::_NET_WM_STATE_MAXIMIZED_HORZ

Definition at line 306 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::GHOST_WindowX11().

◆ _NET_WM_STATE_MAXIMIZED_VERT

Atom GHOST_SystemX11::_NET_WM_STATE_MAXIMIZED_VERT

Definition at line 307 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::GHOST_WindowX11().

◆ CLIPBOARD

Atom GHOST_SystemX11::CLIPBOARD

Definition at line 319 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ COMPOUND_TEXT

Atom GHOST_SystemX11::COMPOUND_TEXT

Definition at line 317 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ INCR

Atom GHOST_SystemX11::INCR

Definition at line 322 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ [struct]

◆ PRIMARY

Atom GHOST_SystemX11::PRIMARY

Definition at line 320 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ STRING

Atom GHOST_SystemX11::STRING

Definition at line 316 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ TARGETS

Atom GHOST_SystemX11::TARGETS

Definition at line 315 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ TEXT

Atom GHOST_SystemX11::TEXT

Definition at line 318 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ UTF8_STRING

Atom GHOST_SystemX11::UTF8_STRING

Definition at line 323 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ WM_CHANGE_STATE

Atom GHOST_SystemX11::WM_CHANGE_STATE

Definition at line 304 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ WM_DELETE_WINDOW

Atom GHOST_SystemX11::WM_DELETE_WINDOW

Definition at line 312 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::GHOST_WindowX11().

◆ WM_PROTOCOLS

Atom GHOST_SystemX11::WM_PROTOCOLS

Definition at line 311 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::GHOST_WindowX11().

◆ WM_STATE

Atom GHOST_SystemX11::WM_STATE

Atom used for ICCCM, WM-spec and Motif. We only need get this atom at the start, it's relative to the display not the window and are public for every window that need it.

Definition at line 303 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().

◆ WM_TAKE_FOCUS

Atom GHOST_SystemX11::WM_TAKE_FOCUS

Definition at line 310 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11(), and GHOST_WindowX11::GHOST_WindowX11().

◆ XCLIP_OUT

Atom GHOST_SystemX11::XCLIP_OUT

Definition at line 321 of file GHOST_SystemX11.hh.

Referenced by GHOST_SystemX11().


The documentation for this class was generated from the following files: