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 =========================================================================*/
43 #ifndef vtkCocoaRenderWindow_h
44 #define vtkCocoaRenderWindow_h
45 
46 #include "vtkRenderingOpenGL2Module.h" // For export macro
47 #include <stack> // for ivar
48 #include "vtkOpenGLRenderWindow.h"
49 
50 class VTKRENDERINGOPENGL2_EXPORT vtkCocoaRenderWindow : public vtkOpenGLRenderWindow
51 {
52 public:
53  static vtkCocoaRenderWindow *New();
55  void PrintSelf(ostream& os, vtkIndent indent);
56 
60  virtual void Start();
61 
65  virtual void Frame();
66 
70  virtual void WindowConfigure();
71 
80  virtual void Initialize();
81 
88  virtual void SetFullScreen(int);
89 
93  virtual void WindowRemap();
94 
99  virtual void PrefFullScreen();
100 
102 
105  virtual void SetSize(int a[2]);
106  virtual void SetSize(int,int);
108 
112  virtual int *GetSize();
113 
115 
118  virtual void SetPosition(int a[2]);
119  virtual void SetPosition(int,int);
121 
125  virtual int *GetScreenSize();
126 
130  virtual int *GetPosition();
131 
136  virtual void SetWindowName(const char *);
137 
138  void SetNextWindowInfo(char *)
139  {
140  vtkWarningMacro("SetNextWindowInfo not implemented (WindowRemap not implemented).");
141  }
142  virtual void* GetGenericDrawable()
143  {
144  vtkWarningMacro("Method not implemented.");
145  return 0;
146  }
147  virtual void SetDisplayId(void*)
148  {
149  vtkWarningMacro("Method not implemented.");
150  }
151  virtual void *GetGenericDisplayId()
152  {
153  vtkWarningMacro("Method not implemented.");
154  return 0;
155  }
156 
162  virtual void SetWindowInfo(char*);
163 
169  virtual void SetParentInfo(char*);
170 
171  void SetNextWindowId(void*)
172  {
173  vtkWarningMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
174  }
175 
180  virtual bool InitializeFromCurrentContext();
181 
185  virtual void StereoUpdate();
186 
193  virtual void SetStereoCapableWindow(int capable);
194 
198  virtual void MakeCurrent();
199 
203  virtual bool IsCurrent();
204 
211  virtual bool IsDrawable();
212 
216  void UpdateContext();
217 
221  const char *ReportCapabilities();
222 
226  int IsDirect();
227 
233  virtual void SetForceMakeCurrent();
234 
239  virtual int GetEventPending();
240 
242 
245  virtual void SetupPalette(void *hDC);
246  virtual void SetupPixelFormat(void *hDC, void *dwFlags, int debug,
247  int bpp=16, int zbpp=16);
249 
253  void Finalize();
254 
256 
262  virtual void HideCursor();
263  virtual void ShowCursor();
264  virtual void SetCursorPosition(int x, int y);
266 
270  virtual void SetCurrentCursor(int);
271 
276  virtual int GetViewCreated();
277 
282  virtual int GetWindowCreated();
283 
285 
288  void SetContextId(void *);
289  void *GetContextId();
290  virtual void *GetGenericContext() {return this->GetContextId();}
292 
303  virtual void SetRootWindow(void *);
304 
308  virtual void *GetRootWindow();
309 
320  virtual void SetWindowId(void *);
321 
325  virtual void *GetWindowId();
326  virtual void *GetGenericWindowId() {return this->GetWindowId();}
327 
334  virtual void SetParentId(void *nsview);
335 
341  virtual void *GetParentId();
342  virtual void *GetGenericParentId() { return this->GetParentId(); }
343 
345 
348  void SetPixelFormat(void *pixelFormat);
349  void *GetPixelFormat();
351 
353 
360  virtual void PushContext();
361  virtual void PopContext();
363 
364 protected:
367 
368  std::stack<void *> ContextStack;
369 
370  void CreateGLContext();
371 
372  void CreateAWindow();
373  void DestroyWindow();
374  void DestroyOffScreenWindow();
375 
376  int OffScreenInitialized;
377  int OnScreenInitialized;
378 
380 
384  void SetCocoaManager(void *manager);
385  void *GetCocoaManager();
387 
388  void SetCocoaServer(void *server); // Really a vtkCocoaServer*
389  void *GetCocoaServer();
390 
391 private:
392  vtkCocoaRenderWindow(const vtkCocoaRenderWindow&) VTK_DELETE_FUNCTION;
393  void operator=(const vtkCocoaRenderWindow&) VTK_DELETE_FUNCTION;
394 
395 private:
396  // Important: this class cannot contain Objective-C instance
397  // variables for 2 reasons:
398  // 1) C++ files include this header
399  // 2) because of garbage collection (the GC scanner does not scan objects create by C++'s new)
400  // Instead, use the CocoaManager dictionary to keep a collection
401  // of what would otherwise be Objective-C instance variables.
402  void *CocoaManager; // Really an NSMutableDictionary*
403 
404  int WindowCreated;
405  int ViewCreated;
406  int CursorHidden;
407 
408  int ForceMakeCurrent;
409  char *Capabilities;
410 };
411 
412 #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 SetWindowInfo(char *)=0
Dummy stubs for vtkWindow API.
virtual void WindowRemap()=0
Remap the rendering window.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
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...
virtual void * GetGenericParentId()
Dummy stubs for vtkWindow API.
Cocoa OpenGL rendering window.
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on...
virtual int * GetScreenSize()=0
Get the current size of the screen in pixels.
virtual void SetWindowId(void *)=0
Dummy stubs for vtkWindow API.
virtual void * GetGenericDrawable()
Dummy stubs for vtkWindow API.
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
virtual void * GetGenericDisplayId()
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 const char * ReportCapabilities()
Get report of capabilities for the render window.
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
virtual void SetParentInfo(char *)=0
Dummy stubs for vtkWindow API.
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
virtual void SetParentId(void *)=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.
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
virtual void SetDisplayId(void *)
Dummy stubs for vtkWindow API.
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...
virtual int * GetSize()
Set/Get the size of the window in screen coordinates in pixels.
virtual void * GetGenericContext()
Accessors for the OpenGL context (Really an NSOpenGLContext*).
void SetNextWindowInfo(char *)
Dummy stubs for vtkWindow API.
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
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 StereoUpdate()
Update system if needed due to stereo rendering.
void SetNextWindowId(void *)
Dummy stubs for vtkWindow API.
virtual void Initialize(void)
Initialize the rendering window.
virtual void CreateAWindow()=0
Create a not-off-screen window.
virtual void * GetGenericWindowId()
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.