00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkCarbonRenderWindowInteractor.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00042 #ifndef __vtkCarbonRenderWindowInteractor_h 00043 #define __vtkCarbonRenderWindowInteractor_h 00044 00045 #include "vtkRenderWindowInteractor.h" 00046 00047 #include <Carbon/Carbon.h> // Needed for Carbon types 00048 00049 00050 class VTK_RENDERING_EXPORT vtkCarbonRenderWindowInteractor : public vtkRenderWindowInteractor { 00051 public: 00053 static vtkCarbonRenderWindowInteractor *New(); 00054 00055 vtkTypeRevisionMacro(vtkCarbonRenderWindowInteractor,vtkRenderWindowInteractor); 00056 void PrintSelf(ostream& os, vtkIndent indent); 00057 00059 virtual void Initialize(); 00060 00062 00069 virtual void Enable(); 00070 virtual void Disable(); 00072 00076 virtual void Start(); 00077 00079 00084 vtkSetMacro(InstallMessageProc,int); 00085 vtkGetMacro(InstallMessageProc,int); 00086 vtkBooleanMacro(InstallMessageProc,int); 00088 00093 void TerminateApp(void); 00094 00096 00097 int CreateTimer(int timertype); 00098 int DestroyTimer(void); 00100 00102 00106 static void SetClassExitMethod(void (*f)(void *), void *arg); 00107 static void SetClassExitMethodArgDelete(void (*f)(void *)); 00109 00112 virtual void ExitCallback(); 00113 00114 // int GetButtonDown(); 00115 // void SetButtonDown(int button); 00116 00117 protected: 00118 vtkCarbonRenderWindowInteractor(); 00119 ~vtkCarbonRenderWindowInteractor(); 00120 00121 WindowPtr WindowId; 00122 EventLoopTimerRef TimerId; 00123 EventHandlerUPP OldProc; 00124 int InstallMessageProc; 00125 00126 00127 //BTX 00129 /*! Class variables so an exit method can be defined for this class (used 00130 to set different exit methods for various language bindings, i.e. 00131 tcl, java, Carbon) */ 00132 static void (*ClassExitMethod)(void *); 00133 static void (*ClassExitMethodArgDelete)(void *); 00134 static void *ClassExitMethodArg; 00135 //ETX 00137 00138 private: 00139 vtkCarbonRenderWindowInteractor(const vtkCarbonRenderWindowInteractor&); // Not implemented. 00140 void operator=(const vtkCarbonRenderWindowInteractor&); // Not implemented. 00141 }; 00142 00143 #endif 00144 00145