VTK
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 "vtkRenderingOpenGL2Module.h" // For export macro
46 #include <stack> // for ivar
47 #include "vtkOpenGLRenderWindow.h"
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(int) override;
88 
92  void WindowRemap() override;
93 
98  virtual void PrefFullScreen();
99 
101 
104  void SetSize(int a[2]) override;
105  void SetSize(int,int) override;
107 
111  int *GetSize() override;
112 
114 
117  void SetPosition(int a[2]) override;
118  void SetPosition(int,int) override;
120 
124  int *GetScreenSize() override;
125 
129  int *GetPosition() override;
130 
135  void SetWindowName(const char *) override;
136 
137  void SetNextWindowInfo(char *) override
138  {
139  vtkWarningMacro("SetNextWindowInfo not implemented (WindowRemap not implemented).");
140  }
141  void* GetGenericDrawable() override
142  {
143  vtkWarningMacro("Method not implemented.");
144  return 0;
145  }
146  void SetDisplayId(void*) override
147  {
148  vtkWarningMacro("Method not implemented.");
149  }
150  void *GetGenericDisplayId() override
151  {
152  vtkWarningMacro("Method not implemented.");
153  return 0;
154  }
155 
161  void SetWindowInfo(char*) override;
162 
168  void SetParentInfo(char*) override;
169 
170  void SetNextWindowId(void*) override
171  {
172  vtkWarningMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
173  }
174 
179  bool InitializeFromCurrentContext() override;
180 
187  void SetStereoCapableWindow(int capable) override;
188 
192  void MakeCurrent() override;
193 
197  bool IsCurrent() override;
198 
205  bool IsDrawable() override;
206 
210  void UpdateContext();
211 
215  const char *ReportCapabilities() override;
216 
220  int IsDirect() override;
221 
227  void SetForceMakeCurrent() override;
228 
233  int GetEventPending() override;
234 
236 
239  virtual void SetupPalette(void *hDC);
240  virtual void SetupPixelFormat(void *hDC, void *dwFlags, int debug,
241  int bpp=16, int zbpp=16);
243 
247  void Finalize() override;
248 
250 
256  void HideCursor() override;
257  void ShowCursor() override;
258  void SetCursorPosition(int x, int y) override;
260 
264  void SetCurrentCursor(int) override;
265 
270  virtual int GetViewCreated();
271 
276  virtual int GetWindowCreated();
277 
279 
282  void SetContextId(void *);
283  void *GetContextId();
284  void *GetGenericContext() override {return this->GetContextId();}
286 
297  virtual void SetRootWindow(void *);
298 
302  virtual void *GetRootWindow();
303 
314  void SetWindowId(void *) override;
315 
319  virtual void *GetWindowId();
320  void *GetGenericWindowId() override {return this->GetWindowId();}
321 
328  void SetParentId(void *nsview) override;
329 
335  virtual void *GetParentId();
336  void *GetGenericParentId() override { return this->GetParentId(); }
337 
348  void SetWantsBestResolution(bool wantsBest);
349  bool GetWantsBestResolution();
350 
352 
355  void SetPixelFormat(void *pixelFormat);
356  void *GetPixelFormat();
358 
360 
367  void PushContext() override;
368  void PopContext() override;
370 
371 protected:
373  ~vtkCocoaRenderWindow() override;
374 
375  std::stack<void *> ContextStack;
376 
377  void CreateGLContext();
378 
379  void CreateAWindow() override;
380  void DestroyWindow() override;
381  void DestroyOffScreenWindow();
382 
383  int OffScreenInitialized;
384  int OnScreenInitialized;
385 
387 
391  void SetCocoaManager(void *manager);
392  void *GetCocoaManager();
394 
395  void SetCocoaServer(void *server); // Really a vtkCocoaServer*
396  void *GetCocoaServer();
397 
398 private:
400  void operator=(const vtkCocoaRenderWindow&) = delete;
401 
402 private:
403  // Important: this class cannot contain Objective-C instance
404  // variables for 2 reasons:
405  // 1) C++ files include this header
406  // 2) because of garbage collection (the GC scanner does not scan objects create by C++'s new)
407  // Instead, use the CocoaManager dictionary to keep a collection
408  // of what would otherwise be Objective-C instance variables.
409  void *CocoaManager; // Really an NSMutableDictionary*
410 
411  int WindowCreated;
412  int ViewCreated;
413  int CursorHidden;
414 
415  int ForceMakeCurrent;
416 
417  bool WantsBestResolution;
418 };
419 
420 #endif
OpenGL rendering window.
virtual void Finalize()=0
Finalize the rendering process.
virtual void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
virtual void WindowRemap()=0
Remap the rendering window.
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
virtual void HideCursor()=0
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
Cocoa OpenGL rendering window.
void SetDisplayId(void *) override
Dummy stubs for vtkWindow API.
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...
virtual int * GetScreenSize()=0
Get the current size of the screen in pixels.
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
void SetNextWindowId(void *) override
Dummy stubs for vtkWindow API.
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
virtual void SetStereoCapableWindow(int capable)
Prescribe that the window be created in a stereo-capable mode.
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
void SetWindowId(void *) override=0
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 SetWindowInfo(char *) override=0
Dummy stubs for vtkWindow API.
void * GetGenericDisplayId() override
Dummy stubs for vtkWindow API.
void * GetGenericContext() override
Accessors for the OpenGL context (Really an NSOpenGLContext*).
virtual void SetCursorPosition(int, int)
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
virtual void PushContext()
Ability to push and pop this window's context as the current context.
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
const char * ReportCapabilities() override
Get report of capabilities for the render window.
void SetNextWindowInfo(char *) override
Dummy stubs for vtkWindow API.
void SetParentId(void *) override=0
Dummy stubs for vtkWindow API.
virtual int * GetSize()
Set/Get the size of the window in screen coordinates in pixels.
void SetParentInfo(char *) override=0
Dummy stubs for vtkWindow API.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetSize(int a[2]) override
Set the size of the window in screen coordinates in pixels.
void * GetGenericParentId() override
Dummy stubs for vtkWindow API.
std::stack< void * > ContextStack
virtual void Start()=0
Initialize the rendering process.
virtual void SetWindowName(const char *)
Get name of rendering window.
virtual void SetPosition(int, int)
Set/Get the position in screen coordinates of the rendering window.
virtual void Initialize(void)
Initialize the rendering window.
virtual void CreateAWindow()=0
Create a not-off-screen window.
void MakeCurrent() override=0
Attempt to make this window the current graphics context for the calling thread.
void * GetGenericWindowId() override
Dummy stubs for vtkWindow API.
virtual void ShowCursor()=0
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual bool IsDrawable()
Test if the window has a valid drawable.