Blender V5.0
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 static bool getUseWindowFrame();
154 static void setUseWindowFrame(bool use_window_frame);
155
156 protected:
162
167 virtual ~GHOST_ISystem() = default;
168
169 public:
170 /***************************************************************************************
171 * Time(r) functionality
172 ***************************************************************************************/
173
182 virtual uint64_t getMilliSeconds() const = 0;
183
197 uint64_t interval,
198 GHOST_TimerProcPtr timer_proc,
199 GHOST_TUserDataPtr user_data = nullptr) = 0;
200
207
208 /***************************************************************************************
209 * Display/window management functionality
210 ***************************************************************************************/
211
216 virtual uint8_t getNumDisplays() const = 0;
217
222 virtual void getMainDisplayDimensions(uint32_t &width, uint32_t &height) const = 0;
223
228 virtual void getAllDisplayDimensions(uint32_t &width, uint32_t &height) const = 0;
229
247 virtual GHOST_IWindow *createWindow(const char *title,
249 int32_t top,
250 uint32_t width,
251 uint32_t height,
253 GHOST_GPUSettings gpu_settings,
254 const bool exclusive = false,
255 const bool is_dialog = false,
256 const GHOST_IWindow *parent_window = nullptr) = 0;
257
264
271
278
284 virtual bool validWindow(GHOST_IWindow *window) = 0;
285
290 virtual bool useNativePixel() = 0;
291
298
302 virtual void useWindowFocus(const bool use_focus) = 0;
303
307 virtual void setAutoFocus(const bool auto_focus) = 0;
308
319
320 /***************************************************************************************
321 * Event management functionality
322 ***************************************************************************************/
323
329 virtual bool processEvents(bool waitForEvent) = 0;
330
335 virtual void dispatchEvents() = 0;
336
343
350
351 /***************************************************************************************
352 * Cursor management functionality
353 ***************************************************************************************/
354
362 int32_t &x,
363 int32_t &y) const = 0;
371 int32_t x,
372 int32_t y) = 0;
373
381
385 virtual uint32_t getCursorPreferredLogicalSize() const = 0;
386
395
396 /***************************************************************************************
397 * Access to mouse button and keyboard states.
398 ***************************************************************************************/
399
407
414 virtual GHOST_TSuccess getButtonState(GHOST_TButton mask, bool &is_down) const = 0;
415
420 virtual void setMultitouchGestures(const bool use) = 0;
421
426 virtual void setTabletAPI(GHOST_TTabletAPI api) = 0;
427
433 virtual GHOST_TSuccess getPixelAtCursor(float r_color[3]) const = 0;
434
435#ifdef WITH_INPUT_NDOF
440 virtual void setNDOFDeadZone(float deadzone) = 0;
441#endif
442
449
450 /***************************************************************************************
451 * Access to clipboard.
452 ***************************************************************************************/
453
461 virtual char *getClipboard(bool selection) const = 0;
462
468 virtual void putClipboard(const char *buffer, bool selection) const = 0;
469
474
481 virtual uint *getClipboardImage(int *r_width, int *r_height) const = 0;
482
489 virtual GHOST_TSuccess putClipboardImage(uint *rgba, int width, int height) const = 0;
490
491 /***************************************************************************************
492 * System Message Box.
493 ***************************************************************************************/
494
505 virtual GHOST_TSuccess showMessageBox(const char * /*title*/,
506 const char * /*message*/,
507 const char * /*help_label*/,
508 const char * /*continue_label*/,
509 const char * /*link*/,
510 GHOST_DialogOptions /*dialog_options*/) const = 0;
511
512 /***************************************************************************************
513 * Debugging
514 ***************************************************************************************/
515
520 virtual void initDebug(GHOST_Debug debug) = 0;
521
525 virtual bool isDebugEnabled() = 0;
526
527 protected:
532 virtual GHOST_TSuccess init() = 0;
533
538 virtual GHOST_TSuccess exit() = 0;
539
542 static const char *system_backend_id_;
543
546
554 static bool use_window_frame_;
555
556 MEM_CXX_CLASS_ALLOC_FUNCS("GHOST:GHOST_ISystem")
557};
unsigned int uint
GHOST_TWindowState
void * GHOST_TUserDataPtr
Definition GHOST_Types.h:55
GHOST_TCapabilityFlag
void(* GHOST_TimerProcPtr)(struct GHOST_TimerTaskHandle__ *task, uint64_t time)
GHOST_TModifierKey
GHOST_TSuccess
Definition GHOST_Types.h:57
void(* GHOST_TBacktraceFn)(void *file_handle)
Definition GHOST_Types.h:53
GHOST_TButton
GHOST_TConsoleWindowState
GHOST_TTabletAPI
GHOST_DialogOptions
unsigned long long int uint64_t
static int verbose
Definition cineonlib.cc:30
static GHOST_TBacktraceFn backtrace_fn_
static GHOST_ISystem * getSystem()
virtual void putClipboard(const char *buffer, bool selection) const =0
virtual GHOST_TSuccess getModifierKeyState(GHOST_TModifierKey mask, bool &is_down) const =0
static void setUseWindowFrame(bool use_window_frame)
static GHOST_TBacktraceFn getBacktraceFn()
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
static GHOST_ISystem * system_
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 GHOST_IWindow * createWindow(const char *title, int32_t left, int32_t top, uint32_t width, uint32_t height, GHOST_TWindowState state, GHOST_GPUSettings gpu_settings, const bool exclusive=false, const bool is_dialog=false, const GHOST_IWindow *parent_window=nullptr)=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_IContext * createOffscreenContext(GHOST_GPUSettings gpu_settings)=0
virtual GHOST_TSuccess addEventConsumer(GHOST_IEventConsumer *consumer)=0
virtual GHOST_TSuccess exit()=0
static const char * system_backend_id_
virtual GHOST_ITimerTask * installTimer(uint64_t delay, uint64_t interval, GHOST_TimerProcPtr timer_proc, GHOST_TUserDataPtr user_data=nullptr)=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 bool use_window_frame_
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
static bool getUseWindowFrame()
virtual void dispatchEvents()=0
static const char * getSystemBackend()
virtual GHOST_TCapabilityFlag getCapabilities() const =0
virtual uint32_t getCursorPreferredLogicalSize() const =0
virtual GHOST_TSuccess putClipboardImage(uint *rgba, int width, int height) const =0
virtual ~GHOST_ISystem()=default
virtual GHOST_TSuccess getButtonState(GHOST_TButton mask, bool &is_down) const =0
virtual void setAutoFocus(const bool auto_focus)=0
virtual GHOST_TSuccess getCursorPositionClientRelative(const GHOST_IWindow *window, int32_t &x, int32_t &y) 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