VTK  9.3.20240420
vtkCocoaRenderWindow.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
30#ifndef vtkCocoaRenderWindow_h
31#define vtkCocoaRenderWindow_h
32
34#include "vtkRenderingOpenGL2Module.h" // For export macro
35#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
36#include <stack> // for ivar
37
38VTK_ABI_NAMESPACE_BEGIN
39class VTKRENDERINGOPENGL2_EXPORT VTK_MARSHALAUTO vtkCocoaRenderWindow : public vtkOpenGLRenderWindow
40{
41public:
44 void PrintSelf(ostream& os, vtkIndent indent) override;
45
49 void Start() override;
50
54 void Frame() override;
55
59 virtual void WindowConfigure();
60
69 void Initialize() override;
70
77 void SetFullScreen(vtkTypeBool) override;
78
82 void WindowRemap() override;
83
88 virtual void PrefFullScreen();
89
91
99 void SetSize(int width, int height) override;
100 void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
102
107 int* GetSize() VTK_SIZEHINT(2) override;
108
110
115 void SetPosition(int x, int y) override;
116 void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
118
123 int* GetScreenSize() VTK_SIZEHINT(2) override;
124
129 int* GetPosition() VTK_SIZEHINT(2) override;
130
135 void SetWindowName(const char*) override;
136
137 void SetNextWindowInfo(const char*) override
138 {
139 vtkDebugMacro("SetNextWindowInfo not implemented (WindowRemap not implemented).");
140 }
141 void* GetGenericDrawable() override
142 {
143 vtkDebugMacro("Method not implemented.");
144 return nullptr;
145 }
146
154 void SetDisplayId(void* displayId) override
155 {
156 this->DisplayIndex = displayId ? *(reinterpret_cast<int*>(displayId)) : 0;
157 }
158
159 void* GetGenericDisplayId() override
160 {
161 vtkDebugMacro("Method not implemented.");
162 return nullptr;
163 }
164
170 void SetWindowInfo(const char*) override;
171
177 void SetParentInfo(const char*) override;
178
179 void SetNextWindowId(void*) override
180 {
181 vtkDebugMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
182 }
183
189
193 bool GetPlatformSupportsRenderWindowSharing() override { return true; }
194
201 void SetStereoCapableWindow(vtkTypeBool capable) override;
202
206 void MakeCurrent() override;
207
211 void ReleaseCurrent() override;
212
216 bool IsCurrent() override;
217
222
226 const char* ReportCapabilities() override;
227
232
238 void SetForceMakeCurrent() override;
239
245
247
250 virtual void SetupPalette(void* hDC);
251 virtual void SetupPixelFormat(void* hDC, void* dwFlags, int debug, int bpp = 16, int zbpp = 16);
253
257 void Finalize() override;
258
260
266 void HideCursor() override;
267 void ShowCursor() override;
268 void SetCursorPosition(int x, int y) override;
270
274 void SetCurrentCursor(int) override;
275
281
287
289
292 void SetContextId(void*);
294 void* GetGenericContext() override { return this->GetContextId(); }
296
307 virtual void SetRootWindow(void*);
308
312 virtual void* GetRootWindow();
313
324 void SetWindowId(void*) override;
325
329 virtual void* GetWindowId();
330 void* GetGenericWindowId() override { return this->GetWindowId(); }
331
338 void SetParentId(void* nsview) override;
339
345 virtual void* GetParentId();
346 void* GetGenericParentId() override { return this->GetParentId(); }
347
358 void SetWantsBestResolution(bool wantsBest);
360
367 void SetConnectContextToNSView(bool connect);
369
371
374 void SetPixelFormat(void* pixelFormat);
377
379
386 void PushContext() override;
387 void PopContext() override;
389
390 void Render() override;
391
392protected:
395
396 std::stack<void*> ContextStack;
397
399
400 void CreateAWindow() override;
401 void DestroyWindow() override;
403
405
409 void SetCocoaManager(void* manager);
412
413 void SetCocoaServer(void* server); // Really a vtkCocoaServer*
415
416private:
418 void operator=(const vtkCocoaRenderWindow&) = delete;
419
420private:
421 // Important: this class cannot contain Objective-C instance
422 // variables for 2 reasons:
423 // 1) C++ files include this header
424 // 2) because of garbage collection (the GC scanner does not scan objects create by C++'s new)
425 // Instead, use the CocoaManager dictionary to keep a collection
426 // of what would otherwise be Objective-C instance variables.
427 void* CocoaManager; // Really an NSMutableDictionary*
428
429 vtkTypeBool WindowCreated;
430 vtkTypeBool ViewCreated;
431 vtkTypeBool CursorHidden;
432
433 vtkTypeBool ForceMakeCurrent;
434
435 bool WantsBestResolution;
436 bool ConnectContextToNSView;
437
438 int DisplayIndex = 0;
439};
440
441VTK_ABI_NAMESPACE_END
442#endif
Cocoa OpenGL rendering window.
virtual void SetRootWindow(void *)
Sets the NSWindow* associated with this vtkRenderWindow.
void SetWindowInfo(const char *) override
Set this RenderWindow's window id to a pre-existing window.
void SetDisplayId(void *displayId) override
Set the index of the NSScreen on which the window should be created.
void SetParentInfo(const char *) override
See the documentation for SetParentId().
void SetSize(int a[2]) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
virtual void * GetParentId()
Get the parent NSView* for this vtkRenderWindow.
void WindowRemap() override
Remap the window.
void * GetGenericDisplayId() override
These are window system independent methods that are used to help interface vtkWindow to native windo...
void SetParentId(void *nsview) override
Set the NSView* for the vtkRenderWindow to be parented within.
void * GetCocoaManager()
Accessors for the cocoa manager (Really an NSMutableDictionary*).
void SetCocoaServer(void *server)
void SetCocoaManager(void *manager)
Accessors for the cocoa manager (Really an NSMutableDictionary*).
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
void SetCurrentCursor(int) override
Change the shape of the cursor.
void SetCursorPosition(int x, int y) override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
void * GetGenericWindowId() override
These are window system independent methods that are used to help interface vtkWindow to native windo...
void SetStereoCapableWindow(vtkTypeBool capable) override
Prescribe that the window be created in a stereo-capable mode.
void PushContext() override
Ability to push and pop this window's context as the current context.
const char * ReportCapabilities() override
Get report of capabilities for the render window.
void SetConnectContextToNSView(bool connect)
Set to false if you want to prevent the NSOpenGLContext from being associated with the NSView.
vtkTypeBool GetEventPending() override
Check to see if an event is pending for this window.
void CreateAWindow() override
Create a not-off-screen window.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetPixelFormat(void *pixelFormat)
Accessors for the pixel format object (Really an NSOpenGLPixelFormat*).
int * GetScreenSize() override
Get the current size of the screen in pixels.
void PopContext() override
Ability to push and pop this window's context as the current context.
void Frame() override
Finish the rendering process.
int * GetSize() override
Get the size (width and height) of the rendering window in screen coordinates (in pixels).
virtual void * GetWindowId()
Returns the NSView* associated with this vtkRenderWindow.
void Initialize() override
Initialize the window for rendering.
void * GetGenericContext() override
Accessors for the OpenGL context (Really an NSOpenGLContext*).
virtual void SetupPixelFormat(void *hDC, void *dwFlags, int debug, int bpp=16, int zbpp=16)
Initialize OpenGL for this window.
void DestroyWindow() override
Destroy a not-off-screen window.
void SetWantsBestResolution(bool wantsBest)
Set to true if you want to force NSViews created by this object to have their wantsBestResolutionOpen...
void Finalize() override
Clean up device contexts, rendering contexts, etc.
void * GetContextId()
Accessors for the OpenGL context (Really an NSOpenGLContext*).
~vtkCocoaRenderWindow() override
virtual void * GetRootWindow()
Returns the NSWindow* associated with this vtkRenderWindow.
void Start() override
Begin the rendering process.
void * GetPixelFormat()
Accessors for the pixel format object (Really an NSOpenGLPixelFormat*).
void ShowCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual vtkTypeBool GetWindowCreated()
Get the WindowCreated flag.
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
bool GetPlatformSupportsRenderWindowSharing() override
Does this platform support render window data sharing.
static vtkCocoaRenderWindow * New()
void SetContextId(void *)
Accessors for the OpenGL context (Really an NSOpenGLContext*).
void SetPosition(int a[2]) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
virtual vtkTypeBool GetViewCreated()
Get the ViewCreated flag.
void SetNextWindowId(void *) override
Dummy stubs for vtkWindow API.
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
void SetForceMakeCurrent() override
If called, allow MakeCurrent() to skip cache-check when called.
bool GetConnectContextToNSView()
void SetWindowId(void *) override
Sets the NSView* associated with this vtkRenderWindow.
void HideCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
void MakeCurrent() override
Make this windows OpenGL context the current context.
void * GetGenericDrawable() override
These are window system independent methods that are used to help interface vtkWindow to native windo...
void Render() override
Ask each viewport owned by this Window to render its image and synchronize this process.
void UpdateContext()
Update this window's OpenGL context, e.g.
virtual void PrefFullScreen()
Set the preferred window size to full screen.
void * GetGenericParentId() override
These are window system independent methods that are used to help interface vtkWindow to native windo...
virtual void SetupPalette(void *hDC)
Initialize OpenGL for this window.
virtual void WindowConfigure()
Specify various window parameters.
void ReleaseCurrent() override
Release the current context.
std::stack< void * > ContextStack
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
a simple class to control print indentation
Definition vtkIndent.h:108
OpenGL rendering window.
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO