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
vtkOpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkRenderWindow::Start
virtual void Start()=0
Initialize the rendering process.
vtkRenderWindow::SetStereoCapableWindow
virtual void SetStereoCapableWindow(int capable)
vtkRenderWindow::ShowCursor
virtual void ShowCursor()=0
vtkRenderWindow::SetFullScreen
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
vtkWindow::GetSize
virtual int * GetSize()
Set/Get the size of the window in screen coordinates in pixels.
vtkCocoaRenderWindow::GetGenericDisplayId
virtual void * GetGenericDisplayId()
Definition: vtkCocoaRenderWindow.h:151
vtkRenderWindow::HideCursor
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...
vtkRenderWindow::Finalize
virtual void Finalize()=0
Finalize the rendering process.
vtkRenderWindow::SetWindowInfo
virtual void SetWindowInfo(char *)=0
vtkWindow::GetScreenSize
virtual int * GetScreenSize()=0
Get the current size of the screen in pixels.
vtkRenderWindow::IsCurrent
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
vtkRenderWindow::SetForceMakeCurrent
virtual void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
Definition: vtkRenderWindow.h:641
vtkRenderWindow::WindowRemap
virtual void WindowRemap()=0
Remap the rendering window.
vtkOpenGLRenderWindow::PopContext
virtual void PopContext()
Definition: vtkOpenGLRenderWindow.h:376
vtkCocoaRenderWindow::GetGenericParentId
virtual void * GetGenericParentId()
Definition: vtkCocoaRenderWindow.h:342
vtkCocoaRenderWindow::GetGenericDrawable
virtual void * GetGenericDrawable()
Definition: vtkCocoaRenderWindow.h:142
vtkOpenGLRenderWindow.h
vtkCocoaRenderWindow::GetGenericContext
virtual void * GetGenericContext()
Definition: vtkCocoaRenderWindow.h:290
vtkWindow::SetWindowName
virtual void SetWindowName(const char *)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkOpenGLRenderWindow::StereoUpdate
virtual void StereoUpdate()
Update system if needed due to stereo rendering.
vtkCocoaRenderWindow::SetDisplayId
virtual void SetDisplayId(void *)
Dummy stubs for vtkWindow API.
Definition: vtkCocoaRenderWindow.h:147
vtkRenderWindow::SetCurrentCursor
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
vtkRenderWindow::ReportCapabilities
virtual const char * ReportCapabilities()
Get report of capabilities for the render window.
Definition: vtkRenderWindow.h:646
vtkCocoaRenderWindow::SetNextWindowId
void SetNextWindowId(void *)
Definition: vtkCocoaRenderWindow.h:171
vtkRenderWindow::SetWindowId
virtual void SetWindowId(void *)=0
vtkWindow::GetPosition
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
vtkCocoaRenderWindow
Cocoa OpenGL rendering window.
Definition: vtkCocoaRenderWindow.h:49
vtkRenderWindow::SetCursorPosition
virtual void SetCursorPosition(int, int)
Definition: vtkRenderWindow.h:195
vtkCocoaRenderWindow::ContextStack
std::stack< void * > ContextStack
Definition: vtkCocoaRenderWindow.h:368
vtkRenderWindow::SetParentInfo
virtual void SetParentInfo(char *)=0
vtkRenderWindow::IsDrawable
virtual bool IsDrawable()
Test if the window has a valid drawable.
Definition: vtkRenderWindow.h:634
vtkRenderWindow::SetParentId
virtual void SetParentId(void *)=0
vtkRenderWindow::MakeCurrent
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
vtkOpenGLRenderWindow::DestroyWindow
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
vtkCocoaRenderWindow::SetNextWindowInfo
void SetNextWindowInfo(char *)
Definition: vtkCocoaRenderWindow.h:138
vtkRenderWindow::IsDirect
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
Definition: vtkRenderWindow.h:656
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:41
vtkRenderWindow::InitializeFromCurrentContext
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
Definition: vtkRenderWindow.h:614
vtkWindow::SetPosition
virtual void SetPosition(int, int)
vtkRenderWindow::Frame
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
vtkRenderWindow::New
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on,...
vtkOpenGLRenderWindow::PushContext
virtual void PushContext()
Ability to push and pop this window's context as the current context.
Definition: vtkOpenGLRenderWindow.h:375
vtkCocoaRenderWindow::GetGenericWindowId
virtual void * GetGenericWindowId()
Definition: vtkCocoaRenderWindow.h:326
vtkRenderWindow::GetEventPending
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
vtkOpenGLRenderWindow::Initialize
virtual void Initialize(void)
Initialize the rendering window.
Definition: vtkOpenGLRenderWindow.h:344
vtkOpenGLRenderWindow::CreateAWindow
virtual void CreateAWindow()=0
Create a not-off-screen window.
vtkOpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.