VTK  9.3.0
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 <stack> // for ivar
36
37VTK_ABI_NAMESPACE_BEGIN
38class VTKRENDERINGOPENGL2_EXPORT vtkCocoaRenderWindow : public vtkOpenGLRenderWindow
39{
40public:
43 void PrintSelf(ostream& os, vtkIndent indent) override;
44
48 void Start() override;
49
53 void Frame() override;
54
58 virtual void WindowConfigure();
59
68 void Initialize() override;
69
76 void SetFullScreen(vtkTypeBool) override;
77
81 void WindowRemap() override;
82
87 virtual void PrefFullScreen();
88
90
98 void SetSize(int width, int height) override;
99 void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
101
106 int* GetSize() VTK_SIZEHINT(2) override;
107
109
114 void SetPosition(int x, int y) override;
115 void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
117
122 int* GetScreenSize() VTK_SIZEHINT(2) override;
123
128 int* GetPosition() VTK_SIZEHINT(2) override;
129
134 void SetWindowName(const char*) override;
135
136 void SetNextWindowInfo(const char*) override
137 {
138 vtkDebugMacro("SetNextWindowInfo not implemented (WindowRemap not implemented).");
139 }
140 void* GetGenericDrawable() override
141 {
142 vtkDebugMacro("Method not implemented.");
143 return nullptr;
144 }
145
153 void SetDisplayId(void* displayId) override
154 {
155 this->DisplayIndex = displayId ? *(reinterpret_cast<int*>(displayId)) : 0;
156 }
157
158 void* GetGenericDisplayId() override
159 {
160 vtkDebugMacro("Method not implemented.");
161 return nullptr;
162 }
163
169 void SetWindowInfo(const char*) override;
170
176 void SetParentInfo(const char*) override;
177
178 void SetNextWindowId(void*) override
179 {
180 vtkDebugMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
181 }
182
188
192 bool GetPlatformSupportsRenderWindowSharing() override { return true; }
193
200 void SetStereoCapableWindow(vtkTypeBool capable) override;
201
205 void MakeCurrent() override;
206
210 void ReleaseCurrent() override;
211
215 bool IsCurrent() override;
216
221
225 const char* ReportCapabilities() override;
226
231
237 void SetForceMakeCurrent() override;
238
244
246
249 virtual void SetupPalette(void* hDC);
250 virtual void SetupPixelFormat(void* hDC, void* dwFlags, int debug, int bpp = 16, int zbpp = 16);
252
256 void Finalize() override;
257
259
265 void HideCursor() override;
266 void ShowCursor() override;
267 void SetCursorPosition(int x, int y) override;
269
273 void SetCurrentCursor(int) override;
274
280
286
288
291 void SetContextId(void*);
293 void* GetGenericContext() override { return this->GetContextId(); }
295
306 virtual void SetRootWindow(void*);
307
311 virtual void* GetRootWindow();
312
323 void SetWindowId(void*) override;
324
328 virtual void* GetWindowId();
329 void* GetGenericWindowId() override { return this->GetWindowId(); }
330
337 void SetParentId(void* nsview) override;
338
344 virtual void* GetParentId();
345 void* GetGenericParentId() override { return this->GetParentId(); }
346
357 void SetWantsBestResolution(bool wantsBest);
359
366 void SetConnectContextToNSView(bool connect);
368
370
373 void SetPixelFormat(void* pixelFormat);
376
378
385 void PushContext() override;
386 void PopContext() override;
388
389 void Render() override;
390
391protected:
394
395 std::stack<void*> ContextStack;
396
398
399 void CreateAWindow() override;
400 void DestroyWindow() override;
402
404
408 void SetCocoaManager(void* manager);
411
412 void SetCocoaServer(void* server); // Really a vtkCocoaServer*
414
415private:
417 void operator=(const vtkCocoaRenderWindow&) = delete;
418
419private:
420 // Important: this class cannot contain Objective-C instance
421 // variables for 2 reasons:
422 // 1) C++ files include this header
423 // 2) because of garbage collection (the GC scanner does not scan objects create by C++'s new)
424 // Instead, use the CocoaManager dictionary to keep a collection
425 // of what would otherwise be Objective-C instance variables.
426 void* CocoaManager; // Really an NSMutableDictionary*
427
428 vtkTypeBool WindowCreated;
429 vtkTypeBool ViewCreated;
430 vtkTypeBool CursorHidden;
431
432 vtkTypeBool ForceMakeCurrent;
433
434 bool WantsBestResolution;
435 bool ConnectContextToNSView;
436
437 int DisplayIndex = 0;
438};
439
440VTK_ABI_NAMESPACE_END
441#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:29
OpenGL rendering window.
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SIZEHINT(...)