Blender V4.5
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
11
12#pragma once
13
14#include <cstdlib>
15
16#include "GHOST_IContext.hh"
17#include "GHOST_ITimerTask.hh"
18#include "GHOST_IWindow.hh"
19#include "GHOST_Types.h"
20
22
103
118 public:
125
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() = default;
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,
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
284 virtual bool useNativePixel() = 0;
285
292
296 virtual void useWindowFocus(const bool use_focus) = 0;
297
301 virtual void setAutoFocus(const bool auto_focus) = 0;
302
313
314 /***************************************************************************************
315 * Event management functionality
316 ***************************************************************************************/
317
323 virtual bool processEvents(bool waitForEvent) = 0;
324
328 virtual void dispatchEvents() = 0;
329
336
343
344 /***************************************************************************************
345 * Cursor management functionality
346 ***************************************************************************************/
347
355 int32_t &x,
356 int32_t &y) const = 0;
364 int32_t x,
365 int32_t y) = 0;
366
374
378 virtual uint32_t getCursorPreferredLogicalSize() const = 0;
379
388
389 /***************************************************************************************
390 * Access to mouse button and keyboard states.
391 ***************************************************************************************/
392
400
407 virtual GHOST_TSuccess getButtonState(GHOST_TButton mask, bool &isDown) const = 0;
408
413 virtual void setMultitouchGestures(const bool use) = 0;
414
419 virtual void setTabletAPI(GHOST_TTabletAPI api) = 0;
420
426 virtual GHOST_TSuccess getPixelAtCursor(float r_color[3]) const = 0;
427
428#ifdef WITH_INPUT_NDOF
433 virtual void setNDOFDeadZone(float deadzone) = 0;
434#endif
435
442
443 /***************************************************************************************
444 * Access to clipboard.
445 ***************************************************************************************/
446
451 virtual char *getClipboard(bool selection) const = 0;
452
456 virtual void putClipboard(const char *buffer, bool selection) const = 0;
457
462
469 virtual uint *getClipboardImage(int *r_width, int *r_height) const = 0;
470
477 virtual GHOST_TSuccess putClipboardImage(uint *rgba, int width, int height) const = 0;
478
479 /***************************************************************************************
480 * System Message Box.
481 ***************************************************************************************/
482
493 virtual GHOST_TSuccess showMessageBox(const char * /*title*/,
494 const char * /*message*/,
495 const char * /*help_label*/,
496 const char * /*continue_label*/,
497 const char * /*link*/,
498 GHOST_DialogOptions /*dialog_options*/) const = 0;
499
500 /***************************************************************************************
501 * Debugging
502 ***************************************************************************************/
503
508 virtual void initDebug(GHOST_Debug debug) = 0;
509
513 virtual bool isDebugEnabled() = 0;
514
515 protected:
520 virtual GHOST_TSuccess init() = 0;
521
526 virtual GHOST_TSuccess exit() = 0;
527
530 static const char *m_system_backend_id;
531
534
535 MEM_CXX_CLASS_ALLOC_FUNCS("GHOST:GHOST_ISystem")
536};
unsigned int uint
GHOST_TWindowState
void * GHOST_TUserDataPtr
Definition GHOST_Types.h:78
GHOST_TCapabilityFlag
Definition GHOST_Types.h:89
void(* GHOST_TimerProcPtr)(struct GHOST_TimerTaskHandle__ *task, uint64_t time)
GHOST_TModifierKey
GHOST_TSuccess
Definition GHOST_Types.h:80
void(* GHOST_TBacktraceFn)(void *file_handle)
Definition GHOST_Types.h:56
GHOST_TButton
GHOST_TConsoleWindowState
GHOST_TTabletAPI
GHOST_DialogOptions
Definition GHOST_Types.h:73
unsigned long long int uint64_t
static int verbose
Definition cineonlib.cc:30
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 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_TSuccess hasClipboardImage() const =0
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 bool setConsoleWindowState(GHOST_TConsoleWindowState action)=0
virtual void dispatchEvents()=0
static const char * getSystemBackend()
virtual GHOST_TCapabilityFlag getCapabilities() const =0
virtual uint32_t getCursorPreferredLogicalSize() 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_ISystem()=default
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 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
uint top
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
static ulong state[N]
static int left