VTK
vtkCocoaRenderWindowInteractor.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCocoaRenderWindowInteractor.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 =========================================================================*/
33 #ifndef vtkCocoaRenderWindowInteractor_h
34 #define vtkCocoaRenderWindowInteractor_h
35 
36 #include "vtkRenderingOpenGL2Module.h" // For export macro
38 #include "vtkTDxConfigure.h" // defines VTK_USE_TDX
39 #ifdef VTK_USE_TDX
40 class vtkTDxMacDevice;
41 #endif
42 
43 class VTKRENDERINGOPENGL2_EXPORT vtkCocoaRenderWindowInteractor : public vtkRenderWindowInteractor
44 {
45 public:
50 
52  void PrintSelf(ostream& os, vtkIndent indent) override;
53 
57  void Initialize() override;
58 
60 
69  void Enable() override;
70  void Disable() override;
72 
78  void TerminateApp() override;
79 
81 
87  static void SetClassExitMethod(void (*f)(void *), void *arg);
88  static void SetClassExitMethodArgDelete(void (*f)(void *));
90 
95  void ExitCallback() override;
96 
97 // int GetButtonDown();
98 // void SetButtonDown(int button);
99 
100 protected:
102  ~vtkCocoaRenderWindowInteractor() override;
103 
108  void SetTimerDictionary(void *dictionary); // Really an NSMutableDictionary*
109  void *GetTimerDictionary();
110 
112 
117  static void (*ClassExitMethod)(void *);
118  static void (*ClassExitMethodArgDelete)(void *);
119  static void *ClassExitMethodArg;
121 
123 
127  int InternalCreateTimer(int timerId, int timerType, unsigned long duration) override;
128  int InternalDestroyTimer(int platformTimerId) override;
130 
136  void StartEventLoop() override;
137 
139 
143  void SetCocoaManager(void *manager);
144  void *GetCocoaManager();
146 
147 #ifdef VTK_USE_TDX
148  vtkTDxMacDevice *Device;
149 #endif
150 
151 private:
153  void operator=(const vtkCocoaRenderWindowInteractor&) = delete;
154 
155  // Important: this class cannot contain Objective-C instance
156  // variables for 2 reasons:
157  // 1) C++ files include this header
158  // 2) because of garbage collection
159  // Instead, use the CocoaManager dictionary to keep a collection
160  // of what would otherwise be Objective-C instance variables.
161  void *CocoaManager; // Really an NSMutableDictionary*
162 
163 };
164 
165 #endif
virtual void Enable()
Enable/Disable interactions.
virtual int InternalDestroyTimer(int platformTimerId)
Internal methods for creating and destroying timers that must be implemented by subclasses.
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
Internal methods for creating and destroying timers that must be implemented by subclasses.
static void * ClassExitMethodArg
Class variables so an exit method can be defined for this class (used to set different exit methods f...
virtual void Initialize()
Prepare for handling events and set the Enabled flag to true.
static vtkRenderWindowInteractor * New()
implements Cocoa specific functions required by vtkRenderWindowInteractor.
platform-independent render window interaction including picking and frame rate control.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void ExitCallback()
These methods correspond to the Exit, User and Pick callbacks.
virtual void StartEventLoop()
Run the event loop (does not return until TerminateApp is called).
virtual void TerminateApp(void)
This function is called on 'q','e' keypress if exitmethod is not specified and should be overridden b...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.