VTK  9.1.0
vtkCocoaRenderWindow.h
Go to the documentation of this file.
1/*=========================================================================
2
3Program: Visualization Toolkit
4Module: vtkCocoaRenderWindow.h
5
6Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7All rights reserved.
8See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10This software is distributed WITHOUT ANY WARRANTY; without even
11the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
42#ifndef vtkCocoaRenderWindow_h
43#define vtkCocoaRenderWindow_h
44
46#include "vtkRenderingOpenGL2Module.h" // For export macro
47#include <stack> // for ivar
48
49class VTKRENDERINGOPENGL2_EXPORT vtkCocoaRenderWindow : public vtkOpenGLRenderWindow
50{
51public:
54 void PrintSelf(ostream& os, vtkIndent indent) override;
55
59 void Start() override;
60
64 void Frame() override;
65
69 virtual void WindowConfigure();
70
79 void Initialize() override;
80
87 void SetFullScreen(vtkTypeBool) override;
88
92 void WindowRemap() override;
93
98 virtual void PrefFullScreen();
99
101
109 void SetSize(int width, int height) override;
110 void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
112
117 int* GetSize() VTK_SIZEHINT(2) override;
118
120
125 void SetPosition(int x, int y) override;
126 void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
128
133 int* GetScreenSize() VTK_SIZEHINT(2) override;
134
139 int* GetPosition() VTK_SIZEHINT(2) override;
140
145 void SetWindowName(const char*) override;
146
147 void SetNextWindowInfo(const char*) override
148 {
149 vtkDebugMacro("SetNextWindowInfo not implemented (WindowRemap not implemented).");
150 }
151 void* GetGenericDrawable() override
152 {
153 vtkDebugMacro("Method not implemented.");
154 return nullptr;
155 }
156
164 void SetDisplayId(void* displayId) override
165 {
166 this->DisplayIndex = displayId ? *(reinterpret_cast<int*>(displayId)) : 0;
167 }
168
169 void* GetGenericDisplayId() override
170 {
171 vtkDebugMacro("Method not implemented.");
172 return nullptr;
173 }
174
180 void SetWindowInfo(const char*) override;
181
187 void SetParentInfo(const char*) override;
188
189 void SetNextWindowId(void*) override
190 {
191 vtkDebugMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
192 }
193
199
203 bool GetPlatformSupportsRenderWindowSharing() override { return true; }
204
211 void SetStereoCapableWindow(vtkTypeBool capable) override;
212
216 void MakeCurrent() override;
217
221 void ReleaseCurrent() override;
222
226 bool IsCurrent() override;
227
235 "Deprecated in 9.1 because no one knows what it's for and nothing uses it")
236 bool IsDrawable() override;
237
241 void UpdateContext();
242
246 const char* ReportCapabilities() override;
247
251 vtkTypeBool IsDirect() override;
252
258 void SetForceMakeCurrent() override;
259
264 vtkTypeBool GetEventPending() override;
265
267
270 virtual void SetupPalette(void* hDC);
271 virtual void SetupPixelFormat(void* hDC, void* dwFlags, int debug, int bpp = 16, int zbpp = 16);
273
277 void Finalize() override;
278
280
286 void HideCursor() override;
287 void ShowCursor() override;
288 void SetCursorPosition(int x, int y) override;
290
294 void SetCurrentCursor(int) override;
295
300 virtual vtkTypeBool GetViewCreated();
301
306 virtual vtkTypeBool GetWindowCreated();
307
309
312 void SetContextId(void*);
313 void* GetContextId();
314 void* GetGenericContext() override { return this->GetContextId(); }
316
327 virtual void SetRootWindow(void*);
328
332 virtual void* GetRootWindow();
333
344 void SetWindowId(void*) override;
345
349 virtual void* GetWindowId();
350 void* GetGenericWindowId() override { return this->GetWindowId(); }
351
358 void SetParentId(void* nsview) override;
359
365 virtual void* GetParentId();
366 void* GetGenericParentId() override { return this->GetParentId(); }
367
378 void SetWantsBestResolution(bool wantsBest);
380
387 void SetConnectContextToNSView(bool connect);
389
391
394 void SetPixelFormat(void* pixelFormat);
397
399
406 void PushContext() override;
407 void PopContext() override;
409
410protected:
413
414 std::stack<void*> ContextStack;
415
417
418 void CreateAWindow() override;
419 void DestroyWindow() override;
421
423
427 void SetCocoaManager(void* manager);
430
431 void SetCocoaServer(void* server); // Really a vtkCocoaServer*
433
434private:
436 void operator=(const vtkCocoaRenderWindow&) = delete;
437
438private:
439 // Important: this class cannot contain Objective-C instance
440 // variables for 2 reasons:
441 // 1) C++ files include this header
442 // 2) because of garbage collection (the GC scanner does not scan objects create by C++'s new)
443 // Instead, use the CocoaManager dictionary to keep a collection
444 // of what would otherwise be Objective-C instance variables.
445 void* CocoaManager; // Really an NSMutableDictionary*
446
447 vtkTypeBool WindowCreated;
448 vtkTypeBool ViewCreated;
449 vtkTypeBool CursorHidden;
450
451 vtkTypeBool ForceMakeCurrent;
452
453 bool WantsBestResolution;
454 bool ConnectContextToNSView;
455
456 int DisplayIndex = 0;
457};
458
459#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
Dummy stubs for vtkWindow API.
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 * GetGenericWindowId() override
Dummy stubs for vtkWindow API.
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.
void SetConnectContextToNSView(bool connect)
Set to false if you want to prevent the NSOpenGLContext from being associated with the NSView.
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 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...
~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*).
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 SetPosition(int a[2]) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
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).
bool GetConnectContextToNSView()
void SetWindowId(void *) override
Sets the NSView* associated with this vtkRenderWindow.
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
Dummy stubs for vtkWindow API.
virtual void PrefFullScreen()
Set the preferred window size to full screen.
void * GetGenericParentId() override
Dummy stubs for vtkWindow API.
virtual void WindowConfigure()
Specify various window parameters.
void ReleaseCurrent() override
Release the current context.
std::stack< void * > ContextStack
a simple class to control print indentation
Definition: vtkIndent.h:113
OpenGL rendering window.
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_DEPRECATED_IN_9_1_0(reason)
#define VTK_SIZEHINT(...)