Blender V4.3
GHOST_ISystem.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
12#pragma once
13
14#include <stdlib.h>
15
16#include "GHOST_IContext.hh"
17#include "GHOST_ITimerTask.hh"
18#include "GHOST_IWindow.hh"
19#include "GHOST_Types.h"
20
22
118 public:
126 static GHOST_TSuccess createSystem(bool verbose, bool background);
128
134
139 static GHOST_ISystem *getSystem();
148 static const char *getSystemBackend();
149
151 static void setBacktraceFn(GHOST_TBacktraceFn backtrace_fn);
152
153 protected:
159
164 virtual ~GHOST_ISystem() {}
165
166 public:
167 /***************************************************************************************
168 * Time(r) functionality
169 ***************************************************************************************/
170
179 virtual uint64_t getMilliSeconds() const = 0;
180
192 uint64_t interval,
193 GHOST_TimerProcPtr timerProc,
194 GHOST_TUserDataPtr userData = nullptr) = 0;
195
202
203 /***************************************************************************************
204 * Display/window management functionality
205 ***************************************************************************************/
206
211 virtual uint8_t getNumDisplays() const = 0;
212
217 virtual void getMainDisplayDimensions(uint32_t &width, uint32_t &height) const = 0;
218
223 virtual void getAllDisplayDimensions(uint32_t &width, uint32_t &height) const = 0;
224
242 virtual GHOST_IWindow *createWindow(const char *title,
243 int32_t left,
244 int32_t top,
245 uint32_t width,
246 uint32_t height,
248 GHOST_GPUSettings gpuSettings,
249 const bool exclusive = false,
250 const bool is_dialog = false,
251 const GHOST_IWindow *parentWindow = nullptr) = 0;
252
259
266
273
279 virtual bool validWindow(GHOST_IWindow *window) = 0;
280
289 GHOST_IWindow **window,
290 const bool stereoVisual) = 0;
291
300 GHOST_IWindow **window) = 0;
301
307
312 virtual bool getFullScreen() = 0;
313
317 virtual bool useNativePixel() = 0;
318
325
329 virtual void useWindowFocus(const bool use_focus) = 0;
330
334 virtual void setAutoFocus(const bool auto_focus) = 0;
335
346
347 /***************************************************************************************
348 * Event management functionality
349 ***************************************************************************************/
350
356 virtual bool processEvents(bool waitForEvent) = 0;
357
361 virtual void dispatchEvents() = 0;
362
369
376
377 /***************************************************************************************
378 * Cursor management functionality
379 ***************************************************************************************/
380
388 int32_t &x,
389 int32_t &y) const = 0;
397 int32_t x,
398 int32_t y) = 0;
399
407
416
417 /***************************************************************************************
418 * Access to mouse button and keyboard states.
419 ***************************************************************************************/
420
427 virtual GHOST_TSuccess getModifierKeyState(GHOST_TModifierKey mask, bool &isDown) const = 0;
428
435 virtual GHOST_TSuccess getButtonState(GHOST_TButton mask, bool &isDown) const = 0;
436
441 virtual void setMultitouchGestures(const bool use) = 0;
442
447 virtual void setTabletAPI(GHOST_TTabletAPI api) = 0;
448
454 virtual GHOST_TSuccess getPixelAtCursor(float r_color[3]) const = 0;
455
456#ifdef WITH_INPUT_NDOF
461 virtual void setNDOFDeadZone(float deadzone) = 0;
462#endif
463
470
471 /***************************************************************************************
472 * Access to clipboard.
473 ***************************************************************************************/
474
479 virtual char *getClipboard(bool selection) const = 0;
480
484 virtual void putClipboard(const char *buffer, bool selection) const = 0;
485
489 virtual GHOST_TSuccess hasClipboardImage(void) const = 0;
490
497 virtual uint *getClipboardImage(int *r_width, int *r_height) const = 0;
498
505 virtual GHOST_TSuccess putClipboardImage(uint *rgba, int width, int height) const = 0;
506
507 /***************************************************************************************
508 * System Message Box.
509 ***************************************************************************************/
510
521 virtual GHOST_TSuccess showMessageBox(const char * /*title*/,
522 const char * /*message*/,
523 const char * /*help_label*/,
524 const char * /*continue_label*/,
525 const char * /*link*/,
526 GHOST_DialogOptions /*dialog_options*/) const = 0;
527
528 /***************************************************************************************
529 * Debugging
530 ***************************************************************************************/
531
536 virtual void initDebug(GHOST_Debug debug) = 0;
537
541 virtual bool isDebugEnabled() = 0;
542
543 protected:
548 virtual GHOST_TSuccess init() = 0;
549
554 virtual GHOST_TSuccess exit() = 0;
555
558 static const char *m_system_backend_id;
559
562
563#ifdef WITH_CXX_GUARDEDALLOC
564 MEM_CXX_CLASS_ALLOC_FUNCS("GHOST:GHOST_ISystem")
565#endif
566};
unsigned int uint
GHOST_TWindowState
void * GHOST_TUserDataPtr
Definition GHOST_Types.h:85
GHOST_TCapabilityFlag
Definition GHOST_Types.h:96
void(* GHOST_TimerProcPtr)(struct GHOST_TimerTaskHandle__ *task, uint64_t time)
GHOST_TModifierKey
GHOST_TSuccess
Definition GHOST_Types.h:87
void(* GHOST_TBacktraceFn)(void *file_handle)
Definition GHOST_Types.h:63
GHOST_TButton
GHOST_TConsoleWindowState
GHOST_TTabletAPI
GHOST_DialogOptions
Definition GHOST_Types.h:80
static int verbose
Definition cineonlib.cc:31
virtual GHOST_TSuccess endFullScreen()=0
static GHOST_ISystem * getSystem()
virtual void putClipboard(const char *buffer, bool selection) const =0
static GHOST_TBacktraceFn getBacktraceFn()
virtual GHOST_ITimerTask * installTimer(uint64_t delay, uint64_t interval, GHOST_TimerProcPtr timerProc, GHOST_TUserDataPtr userData=nullptr)=0
static void setBacktraceFn(GHOST_TBacktraceFn backtrace_fn)
virtual GHOST_TSuccess showMessageBox(const char *, const char *, const char *, const char *, const char *, GHOST_DialogOptions) const =0
virtual bool getFullScreen()=0
virtual void initDebug(GHOST_Debug debug)=0
virtual void setTabletAPI(GHOST_TTabletAPI api)=0
virtual char * getClipboard(bool selection) const =0
virtual GHOST_TSuccess setCursorPositionClientRelative(GHOST_IWindow *window, int32_t x, int32_t y)=0
virtual void getMainDisplayDimensions(uint32_t &width, uint32_t &height) const =0
virtual ~GHOST_ISystem()
virtual bool validWindow(GHOST_IWindow *window)=0
virtual GHOST_TSuccess getCursorPosition(int32_t &x, int32_t &y) const =0
virtual void getAllDisplayDimensions(uint32_t &width, uint32_t &height) const =0
virtual uint * getClipboardImage(int *r_width, int *r_height) const =0
virtual GHOST_TSuccess addEventConsumer(GHOST_IEventConsumer *consumer)=0
virtual GHOST_TSuccess exit()=0
virtual GHOST_IContext * createOffscreenContext(GHOST_GPUSettings gpuSettings)=0
virtual GHOST_TSuccess getModifierKeyState(GHOST_TModifierKey mask, bool &isDown) const =0
virtual bool isDebugEnabled()=0
virtual void useWindowFocus(const bool use_focus)=0
virtual GHOST_TSuccess disposeContext(GHOST_IContext *context)=0
virtual GHOST_TSuccess removeTimer(GHOST_ITimerTask *timerTask)=0
virtual bool useNativePixel()=0
static GHOST_TSuccess createSystem(bool verbose, bool background)
static GHOST_TSuccess disposeSystem()
virtual uint8_t getNumDisplays() const =0
virtual void setMultitouchGestures(const bool use)=0
virtual GHOST_TSuccess beginFullScreen(const GHOST_DisplaySetting &setting, GHOST_IWindow **window, const bool stereoVisual)=0
virtual bool setConsoleWindowState(GHOST_TConsoleWindowState action)=0
virtual void dispatchEvents()=0
virtual GHOST_TSuccess hasClipboardImage(void) const =0
static const char * getSystemBackend()
virtual GHOST_TCapabilityFlag getCapabilities() const =0
static const char * m_system_backend_id
virtual GHOST_TSuccess putClipboardImage(uint *rgba, int width, int height) const =0
static GHOST_ISystem * m_system
virtual GHOST_IWindow * 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)=0
virtual GHOST_TSuccess updateFullScreen(const GHOST_DisplaySetting &setting, GHOST_IWindow **window)=0
virtual void setAutoFocus(const bool auto_focus)=0
static GHOST_TBacktraceFn m_backtrace_fn
virtual GHOST_TSuccess getCursorPositionClientRelative(const GHOST_IWindow *window, int32_t &x, int32_t &y) const =0
virtual GHOST_TSuccess getButtonState(GHOST_TButton mask, bool &isDown) const =0
virtual uint64_t getMilliSeconds() const =0
virtual GHOST_TSuccess disposeWindow(GHOST_IWindow *window)=0
virtual GHOST_TSuccess setCursorPosition(int32_t x, int32_t y)=0
virtual GHOST_TSuccess removeEventConsumer(GHOST_IEventConsumer *consumer)=0
virtual GHOST_TSuccess getPixelAtCursor(float r_color[3]) const =0
virtual GHOST_IWindow * getWindowUnderCursor(int32_t x, int32_t y)=0
virtual bool processEvents(bool waitForEvent)=0
static GHOST_TSuccess createSystemBackground()
virtual GHOST_TSuccess init()=0
static ulong state[N]
unsigned int uint32_t
Definition stdint.h:80
signed int int32_t
Definition stdint.h:77
unsigned char uint8_t
Definition stdint.h:78
unsigned __int64 uint64_t
Definition stdint.h:90