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:
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 
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 
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 
371 
375 
376  int OffScreenInitialized;
377  int OnScreenInitialized;
378 
380 
384  void SetCocoaManager(void *manager);
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
Cocoa OpenGL rendering window.
virtual void SetRootWindow(void *)
Sets the NSWindow* associated with this vtkRenderWindow.
std::stack< void * > ContextStack
virtual void SetStereoCapableWindow(int capable)
Prescribe that the window be created in a stereo-capable mode.
virtual void SetSize(int, int)
virtual void * GetGenericWindowId()
virtual int GetEventPending()
Check to see if an event is pending for this window.
virtual void SetSize(int a[2])
Set the size of the window in pixels.
virtual void SetDisplayId(void *)
Dummy stubs for vtkWindow API.
const char * ReportCapabilities()
Get report of capabilities for the render window.
void SetCocoaServer(void *server)
void SetCocoaManager(void *manager)
Accessors for the cocoa manager (Really an NSMutableDictionary*).
virtual void Frame()
Finish the rendering process.
void Finalize()
Clean up device contexts, rendering contexts, etc.
virtual void MakeCurrent()
Make this windows OpenGL context the current context.
virtual void * GetGenericDisplayId()
virtual void * GetGenericDrawable()
virtual void StereoUpdate()
Update system if needed due to stereo rendering.
virtual void WindowRemap()
Remap the window.
virtual void ShowCursor()
virtual void HideCursor()
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 SetFullScreen(int)
Change the window to fill the entire screen.
void SetPixelFormat(void *pixelFormat)
Accessors for the pixel format object (Really an NSOpenGLPixelFormat*).
virtual void SetPosition(int a[2])
Set the position of the window.
virtual void SetCursorPosition(int x, int y)
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void * GetGenericParentId()
static vtkCocoaRenderWindow * New()
virtual void PopContext()
virtual bool IsCurrent()
Tells if this window is the current OpenGL context for the calling thread.
void DestroyWindow()
Destroy a not-off-screen window.
virtual void SetupPixelFormat(void *hDC, void *dwFlags, int debug, int bpp=16, int zbpp=16)
virtual int * GetPosition()
Get the position in screen coordinates of the window.
virtual int GetViewCreated()
Get the ViewCreated flag.
virtual bool IsDrawable()
Test if the window has a valid drawable.
virtual void SetWindowInfo(char *)
Set this RenderWindow's window id to a pre-existing window.
virtual int * GetSize()
Get the current size of the window in pixels.
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
virtual void SetWindowName(const char *)
Set the name of the window.
void CreateAWindow()
Create a not-off-screen window.
virtual void SetParentInfo(char *)
See the documenation for SetParentId().
virtual void SetWindowId(void *)
Sets the NSView* associated with this vtkRenderWindow.
virtual void * GetGenericContext()
virtual int GetWindowCreated()
Get the WindowCreated flag.
virtual int * GetScreenSize()
Get the current size of the screen in pixels.
virtual void Initialize()
Initialize the window for rendering.
virtual void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
void SetContextId(void *)
Accessors for the OpenGL context (Really an NSOpenGLContext*).
virtual void * GetParentId()
Get the parent NSView* for this vtkRenderWindow.
virtual void * GetRootWindow()
Returns the NSWindow* associated with this vtkRenderWindow.
int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
virtual void SetPosition(int, int)
virtual void * GetWindowId()
Returns the NSView* associated with this vtkRenderWindow.
virtual void PushContext()
Ability to push and pop this window's context as the current context.
virtual void SetParentId(void *nsview)
Set the NSView* for the vtkRenderWindow to be parented within.
void UpdateContext()
Update this window's OpenGL context, e.g.
virtual void PrefFullScreen()
Set the preferred window size to full screen.
virtual void Start()
Begin the rendering process.
virtual void SetupPalette(void *hDC)
Initialize OpenGL for this window.
virtual void WindowConfigure()
Specify various window parameters.
a simple class to control print indentation
Definition: vtkIndent.h:40
OpenGL rendering window.