Blender V4.3
GHOST_Context.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2013 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10#pragma once
11
12#include "GHOST_IContext.hh"
13#include "GHOST_Types.h"
14
15#include <cstdlib> // for nullptr
16
18 public:
23 GHOST_Context(bool stereoVisual) : m_stereoVisual(stereoVisual) {}
24
28 virtual ~GHOST_Context() {}
29
34 virtual GHOST_TSuccess swapBuffers() override = 0;
35
40 virtual GHOST_TSuccess activateDrawingContext() override = 0;
41
46 virtual GHOST_TSuccess releaseDrawingContext() override = 0;
47
53
60 {
61 return GHOST_kFailure;
62 }
63
69
75 virtual GHOST_TSuccess setSwapInterval(int /*interval*/)
76 {
77 return GHOST_kFailure;
78 }
79
86 {
87 return GHOST_kFailure;
88 }
89
94 {
95 return m_user_data;
96 }
97
101 void setUserData(void *user_data)
102 {
103 m_user_data = user_data;
104 }
105
111 inline bool isStereoVisual() const
112 {
113 return m_stereoVisual;
114 }
115
119 virtual inline bool isUpsideDown() const
120 {
121 return false;
122 }
123
128 virtual unsigned int getDefaultFramebuffer() override
129 {
130 return 0;
131 }
132
133#ifdef WITH_VULKAN_BACKEND
164 virtual GHOST_TSuccess getVulkanHandles(void * /*r_instance*/,
165 void * /*r_physical_device*/,
166 void * /*r_device*/,
167 uint32_t * /*r_graphic_queue_family*/,
168 void * /*r_queue*/,
169 void ** /*r_queue_mutex*/) override
170 {
171 return GHOST_kFailure;
172 };
173
174 virtual GHOST_TSuccess getVulkanSwapChainFormat(
175 GHOST_VulkanSwapChainData * /*r_swap_chain_data*/) override
176 {
177 return GHOST_kFailure;
178 }
179
180 virtual GHOST_TSuccess setVulkanSwapBuffersCallbacks(
181 std::function<void(const GHOST_VulkanSwapChainData *)> /*swap_buffers_pre_callback*/,
182 std::function<void(void)> /*swap_buffers_post_callback*/) override
183 {
184 return GHOST_kFailure;
185 }
186#endif
187
188 protected:
190
192 void *m_user_data = nullptr;
193
194#ifdef WITH_OPENGL_BACKEND
195 static void initClearGL();
196#endif
197
198#ifdef WITH_CXX_GUARDEDALLOC
199 MEM_CXX_CLASS_ALLOC_FUNCS("GHOST:GHOST_Context")
200#endif
201};
202
203#ifdef _WIN32
204bool win32_chk(bool result, const char *file = nullptr, int line = 0, const char *text = nullptr);
205bool win32_silent_chk(bool result);
206
207# ifndef NDEBUG
208# define WIN32_CHK(x) win32_chk((x), __FILE__, __LINE__, #x)
209# else
210# define WIN32_CHK(x) win32_chk(x)
211# endif
212
213# define WIN32_CHK_SILENT(x, silent) ((silent) ? win32_silent_chk(x) : WIN32_CHK(x))
214#endif /* _WIN32 */
GHOST_TSuccess
Definition GHOST_Types.h:87
@ GHOST_kFailure
Definition GHOST_Types.h:87
virtual GHOST_TSuccess activateDrawingContext() override=0
virtual GHOST_TSuccess releaseNativeHandles()=0
virtual GHOST_TSuccess setSwapInterval(int)
virtual GHOST_TSuccess releaseDrawingContext() override=0
virtual GHOST_TSuccess updateDrawingContext()
virtual bool isUpsideDown() const
virtual GHOST_TSuccess initializeDrawingContext()=0
void * getUserData()
virtual unsigned int getDefaultFramebuffer() override
virtual GHOST_TSuccess swapBuffers() override=0
void setUserData(void *user_data)
virtual GHOST_TSuccess getSwapInterval(int &)
bool isStereoVisual() const
GHOST_Context(bool stereoVisual)
virtual ~GHOST_Context()
unsigned int uint32_t
Definition stdint.h:80