VTK  9.2.6
vtkCocoaRenderWindow.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3 Program: Visualization Toolkit
4 Module: vtkCocoaRenderWindow.h
5 
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
42 #ifndef vtkCocoaRenderWindow_h
43 #define vtkCocoaRenderWindow_h
44 
45 #include "vtkOpenGLRenderWindow.h"
46 #include "vtkRenderingOpenGL2Module.h" // For export macro
47 #include <stack> // for ivar
48 
49 class VTKRENDERINGOPENGL2_EXPORT vtkCocoaRenderWindow : public vtkOpenGLRenderWindow
50 {
51 public:
52  static vtkCocoaRenderWindow* New();
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 
198  bool InitializeFromCurrentContext() override;
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);
379  bool GetWantsBestResolution();
380 
387  void SetConnectContextToNSView(bool connect);
388  bool GetConnectContextToNSView();
389 
391 
394  void SetPixelFormat(void* pixelFormat);
395  void* GetPixelFormat();
397 
399 
406  void PushContext() override;
407  void PopContext() override;
409 
410 protected:
412  ~vtkCocoaRenderWindow() override;
413 
414  std::stack<void*> ContextStack;
415 
416  void CreateGLContext();
417 
418  void CreateAWindow() override;
419  void DestroyWindow() override;
421 
423 
427  void SetCocoaManager(void* manager);
428  void* GetCocoaManager();
430 
431  void SetCocoaServer(void* server); // Really a vtkCocoaServer*
432  void* GetCocoaServer();
433 
434 private:
436  void operator=(const vtkCocoaRenderWindow&) = delete;
437 
438 private:
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
OpenGL rendering window.
std::stack< void * > ContextStack
#define VTK_DEPRECATED_IN_9_1_0(reason)
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
virtual void SetFullScreen(vtkTypeBool)
Turn on/off rendering full screen window size.
virtual void WindowRemap()
Remap the rendering window.
void Start(void) override
Begin the rendering process.
Cocoa OpenGL rendering window.
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on...
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
void SetWindowInfo(const char *) override
Dummy stubs for vtkWindow API.
virtual bool IsCurrent()
Tells if this window is the current graphics context for the calling thread.
void SetNextWindowId(void *) override
Dummy stubs for vtkWindow API.
void SetParentId(void *) override
Dummy stubs for vtkWindow API.
int vtkTypeBool
Definition: vtkABI.h:69
virtual void SetStereoCapableWindow(vtkTypeBool capable)
Prescribe that the window be created in a stereo-capable mode.
void SetDisplayId(void *displayId) override
Set the index of the NSScreen on which the window should be created.
void SetPosition(int a[2]) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
virtual void SetSize(int width, int height)
Set the size (width and height) of the rendering window in screen coordinates (in pixels)...
void SetWindowId(void *) override
Dummy stubs for vtkWindow API.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
void * GetGenericDisplayId() override
Dummy stubs for vtkWindow API.
virtual int * GetScreenSize()
Get the current size of the screen in pixels.
Definition: vtkWindow.h:105
virtual void MakeCurrent()
Make the window current.
Definition: vtkWindow.h:246
virtual void PushContext()
Ability to push and pop this window's context as the current context.
#define VTK_SIZEHINT(...)
void Frame() override
A termination method performed at the end of the rendering process to do things like swapping buffers...
virtual int * GetSize()
Get the size (width and height) of the rendering window in screen coordinates (in pixels)...
virtual void ReleaseCurrent()
Release the current context.
Definition: vtkWindow.h:252
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void * GetGenericParentId() override
Dummy stubs for vtkWindow API.
void SetSize(int a[2]) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels)...
bool GetPlatformSupportsRenderWindowSharing() override
Does this platform support render window data sharing.
void SetParentInfo(const char *) override
Dummy stubs for vtkWindow API.
virtual void Initialize(void)
Initialize the rendering window.
virtual void CreateAWindow()=0
Create a not-off-screen window.
void * GetGenericWindowId() override
Dummy stubs for vtkWindow API.