VTK  9.0.1
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:
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  void SetDisplayId(void*) override
157  {
158  // no-op
159  vtkDebugMacro("Method not implemented.");
160  }
161  void* GetGenericDisplayId() override
162  {
163  vtkDebugMacro("Method not implemented.");
164  return nullptr;
165  }
166 
172  void SetWindowInfo(const char*) override;
173 
179  void SetParentInfo(const char*) override;
180 
181  void SetNextWindowId(void*) override
182  {
183  vtkDebugMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
184  }
185 
191 
195  bool GetPlatformSupportsRenderWindowSharing() override { return true; }
196 
203  void SetStereoCapableWindow(vtkTypeBool capable) override;
204 
208  void MakeCurrent() override;
209 
213  bool IsCurrent() override;
214 
221  VTK_LEGACY(bool IsDrawable() override);
222 
227 
231  const char* ReportCapabilities() override;
232 
236  vtkTypeBool IsDirect() override;
237 
243  void SetForceMakeCurrent() override;
244 
250 
252 
255  virtual void SetupPalette(void* hDC);
256  virtual void SetupPixelFormat(void* hDC, void* dwFlags, int debug, int bpp = 16, int zbpp = 16);
258 
262  void Finalize() override;
263 
265 
271  void HideCursor() override;
272  void ShowCursor() override;
273  void SetCursorPosition(int x, int y) override;
275 
279  void SetCurrentCursor(int) override;
280 
286 
292 
294 
297  void SetContextId(void*);
298  void* GetContextId();
299  void* GetGenericContext() override { return this->GetContextId(); }
301 
312  virtual void SetRootWindow(void*);
313 
317  virtual void* GetRootWindow();
318 
329  void SetWindowId(void*) override;
330 
334  virtual void* GetWindowId();
335  void* GetGenericWindowId() override { return this->GetWindowId(); }
336 
343  void SetParentId(void* nsview) override;
344 
350  virtual void* GetParentId();
351  void* GetGenericParentId() override { return this->GetParentId(); }
352 
363  void SetWantsBestResolution(bool wantsBest);
365 
374 
376 
379  void SetPixelFormat(void* pixelFormat);
380  void* GetPixelFormat();
382 
384 
391  void PushContext() override;
392  void PopContext() override;
394 
395 protected:
398 
399  std::stack<void*> ContextStack;
400 
402 
403  void CreateAWindow() override;
404  void DestroyWindow() override;
406 
408 
412  void SetCocoaManager(void* manager);
415 
416  void SetCocoaServer(void* server); // Really a vtkCocoaServer*
417  void* GetCocoaServer();
418 
419 private:
421  void operator=(const vtkCocoaRenderWindow&) = delete;
422 
423 private:
424  // Important: this class cannot contain Objective-C instance
425  // variables for 2 reasons:
426  // 1) C++ files include this header
427  // 2) because of garbage collection (the GC scanner does not scan objects create by C++'s new)
428  // Instead, use the CocoaManager dictionary to keep a collection
429  // of what would otherwise be Objective-C instance variables.
430  void* CocoaManager; // Really an NSMutableDictionary*
431 
432  vtkTypeBool WindowCreated;
433  vtkTypeBool ViewCreated;
434  vtkTypeBool CursorHidden;
435 
436  vtkTypeBool ForceMakeCurrent;
437 
438  bool WantsBestResolution;
439  bool ConnectContextToNSView;
440 };
441 
442 #endif
vtkCocoaRenderWindow::SetForceMakeCurrent
void SetForceMakeCurrent() override
If called, allow MakeCurrent() to skip cache-check when called.
vtkCocoaRenderWindow::SetCocoaManager
void SetCocoaManager(void *manager)
Accessors for the cocoa manager (Really an NSMutableDictionary*).
vtkCocoaRenderWindow::GetConnectContextToNSView
bool GetConnectContextToNSView()
vtkCocoaRenderWindow::~vtkCocoaRenderWindow
~vtkCocoaRenderWindow() override
vtkCocoaRenderWindow::CreateAWindow
void CreateAWindow() override
Create a not-off-screen window.
vtkCocoaRenderWindow::GetWindowCreated
virtual vtkTypeBool GetWindowCreated()
Get the WindowCreated flag.
vtkCocoaRenderWindow::ContextStack
std::stack< void * > ContextStack
Definition: vtkCocoaRenderWindow.h:399
vtkCocoaRenderWindow::GetWindowId
virtual void * GetWindowId()
Returns the NSView* associated with this vtkRenderWindow.
vtkX3D::connect
@ connect
Definition: vtkX3D.h:182
vtkCocoaRenderWindow::SetPixelFormat
void SetPixelFormat(void *pixelFormat)
Accessors for the pixel format object (Really an NSOpenGLPixelFormat*).
vtkCocoaRenderWindow::Start
void Start() override
Begin the rendering process.
vtkCocoaRenderWindow::ReportCapabilities
const char * ReportCapabilities() override
Get report of capabilities for the render window.
vtkCocoaRenderWindow::SetSize
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkCocoaRenderWindow::GetSize
int * GetSize() override
Get the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkCocoaRenderWindow::IsDrawable
bool IsDrawable() override
Test if the window has a valid drawable.
vtkCocoaRenderWindow::SetWindowId
void SetWindowId(void *) override
Sets the NSView* associated with this vtkRenderWindow.
vtkCocoaRenderWindow::SetCocoaServer
void SetCocoaServer(void *server)
vtkCocoaRenderWindow::GetEventPending
vtkTypeBool GetEventPending() override
Check to see if an event is pending for this window.
vtkCocoaRenderWindow::Finalize
void Finalize() override
Clean up device contexts, rendering contexts, etc.
vtkCocoaRenderWindow::SetCursorPosition
void SetCursorPosition(int x, int y) override
vtkCocoaRenderWindow::CreateGLContext
void CreateGLContext()
vtkCocoaRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Definition: vtkCocoaRenderWindow.h:151
vtkCocoaRenderWindow::SetupPixelFormat
virtual void SetupPixelFormat(void *hDC, void *dwFlags, int debug, int bpp=16, int zbpp=16)
vtkCocoaRenderWindow::SetCurrentCursor
void SetCurrentCursor(int) override
Change the shape of the cursor.
vtkCocoaRenderWindow::SetConnectContextToNSView
void SetConnectContextToNSView(bool connect)
Set to false if you want to prevent the NSOpenGLContext from being associated with the NSView.
vtkCocoaRenderWindow::SetDisplayId
void SetDisplayId(void *) override
Dummy stubs for vtkWindow API.
Definition: vtkCocoaRenderWindow.h:156
vtkCocoaRenderWindow::ShowCursor
void ShowCursor() override
vtkCocoaRenderWindow::GetPixelFormat
void * GetPixelFormat()
vtkCocoaRenderWindow::MakeCurrent
void MakeCurrent() override
Make this windows OpenGL context the current context.
vtkCocoaRenderWindow::PushContext
void PushContext() override
Ability to push and pop this window's context as the current context.
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkCocoaRenderWindow::New
static vtkCocoaRenderWindow * New()
vtkCocoaRenderWindow::GetGenericDisplayId
void * GetGenericDisplayId() override
Definition: vtkCocoaRenderWindow.h:161
vtkCocoaRenderWindow::GetGenericContext
void * GetGenericContext() override
Definition: vtkCocoaRenderWindow.h:299
vtkX3D::height
@ height
Definition: vtkX3D.h:260
vtkCocoaRenderWindow::SetContextId
void SetContextId(void *)
Accessors for the OpenGL context (Really an NSOpenGLContext*).
vtkCocoaRenderWindow::Initialize
void Initialize() override
Initialize the window for rendering.
vtkCocoaRenderWindow::InitializeFromCurrentContext
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkCocoaRenderWindow::UpdateContext
void UpdateContext()
Update this window's OpenGL context, e.g.
vtkCocoaRenderWindow::SetNextWindowId
void SetNextWindowId(void *) override
Definition: vtkCocoaRenderWindow.h:181
vtkCocoaRenderWindow::GetViewCreated
virtual vtkTypeBool GetViewCreated()
Get the ViewCreated flag.
vtkCocoaRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkCocoaRenderWindow::GetContextId
void * GetContextId()
vtkCocoaRenderWindow::PopContext
void PopContext() override
vtkCocoaRenderWindow::SetWantsBestResolution
void SetWantsBestResolution(bool wantsBest)
Set to true if you want to force NSViews created by this object to have their wantsBestResolutionOpen...
vtkCocoaRenderWindow::OnScreenInitialized
vtkTypeBool OnScreenInitialized
Definition: vtkCocoaRenderWindow.h:405
vtkCocoaRenderWindow::GetPlatformSupportsRenderWindowSharing
bool GetPlatformSupportsRenderWindowSharing() override
Does this platform support render window data sharing.
Definition: vtkCocoaRenderWindow.h:195
vtkCocoaRenderWindow::SetPosition
void SetPosition(int a[2]) override
Definition: vtkCocoaRenderWindow.h:126
vtkCocoaRenderWindow::GetCocoaManager
void * GetCocoaManager()
vtkCocoaRenderWindow::SetSize
void SetSize(int a[2]) override
Definition: vtkCocoaRenderWindow.h:110
vtkCocoaRenderWindow
Cocoa OpenGL rendering window.
Definition: vtkCocoaRenderWindow.h:50
vtkCocoaRenderWindow::SetStereoCapableWindow
void SetStereoCapableWindow(vtkTypeBool capable) override
Prescribe that the window be created in a stereo-capable mode.
vtkCocoaRenderWindow::SetParentInfo
void SetParentInfo(const char *) override
See the documentation for SetParentId().
vtkCocoaRenderWindow::GetCocoaServer
void * GetCocoaServer()
vtkCocoaRenderWindow::SetRootWindow
virtual void SetRootWindow(void *)
Sets the NSWindow* associated with this vtkRenderWindow.
vtkCocoaRenderWindow::GetGenericParentId
void * GetGenericParentId() override
Definition: vtkCocoaRenderWindow.h:351
vtkCocoaRenderWindow::SetupPalette
virtual void SetupPalette(void *hDC)
Initialize OpenGL for this window.
vtkCocoaRenderWindow::SetFullScreen
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
vtkCocoaRenderWindow::IsDirect
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
vtkCocoaRenderWindow::GetGenericWindowId
void * GetGenericWindowId() override
Definition: vtkCocoaRenderWindow.h:335
vtkCocoaRenderWindow::SetParentId
void SetParentId(void *nsview) override
Set the NSView* for the vtkRenderWindow to be parented within.
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:52
vtkCocoaRenderWindow::vtkCocoaRenderWindow
vtkCocoaRenderWindow()
vtkCocoaRenderWindow::WindowConfigure
virtual void WindowConfigure()
Specify various window parameters.
vtkCocoaRenderWindow::PrefFullScreen
virtual void PrefFullScreen()
Set the preferred window size to full screen.
vtkCocoaRenderWindow::GetParentId
virtual void * GetParentId()
Get the parent NSView* for this vtkRenderWindow.
vtkCocoaRenderWindow::GetScreenSize
int * GetScreenSize() override
Get the current size of the screen in pixels.
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkCocoaRenderWindow::Frame
void Frame() override
Finish the rendering process.
vtkCocoaRenderWindow::GetRootWindow
virtual void * GetRootWindow()
Returns the NSWindow* associated with this vtkRenderWindow.
vtkCocoaRenderWindow::SetWindowInfo
void SetWindowInfo(const char *) override
Set this RenderWindow's window id to a pre-existing window.
vtkOpenGLRenderWindow.h
vtkCocoaRenderWindow::WindowRemap
void WindowRemap() override
Remap the window.
vtkCocoaRenderWindow::DestroyWindow
void DestroyWindow() override
Destroy a not-off-screen window.
vtkCocoaRenderWindow::IsCurrent
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
vtkCocoaRenderWindow::GetWantsBestResolution
bool GetWantsBestResolution()
vtkCocoaRenderWindow::HideCursor
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...