00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkCarbonRenderWindowInteractor.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00028 #ifndef __vtkCarbonRenderWindowInteractor_h 00029 #define __vtkCarbonRenderWindowInteractor_h 00030 00031 #include "vtkRenderWindowInteractor.h" 00032 00033 // The 10.3.9 SDK (and older probably) have a bug in fp.h (in the Carbon 00034 // umbrella framework) which this works around. Without this, there 00035 // would be a compile error from the Carbon header if Python wrappings 00036 // were enabled. 00037 #include <AvailabilityMacros.h> // Needed for MAC_OS_X_VERSION_MAX_ALLOWED 00038 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 00039 #define scalb scalbn 00040 #endif 00041 00042 #include <Carbon/Carbon.h> // Carbon and Mac specific 00043 00044 00045 class VTK_RENDERING_EXPORT vtkCarbonRenderWindowInteractor : public vtkRenderWindowInteractor { 00046 public: 00048 static vtkCarbonRenderWindowInteractor *New(); 00049 00050 vtkTypeRevisionMacro(vtkCarbonRenderWindowInteractor,vtkRenderWindowInteractor); 00051 void PrintSelf(ostream& os, vtkIndent indent); 00052 00054 virtual void Initialize(); 00055 00057 00064 virtual void Enable(); 00065 virtual void Disable(); 00067 00071 virtual void Start(); 00072 00074 00079 vtkSetMacro(InstallMessageProc,int); 00080 vtkGetMacro(InstallMessageProc,int); 00081 vtkBooleanMacro(InstallMessageProc,int); 00083 00088 void TerminateApp(void); 00089 00091 00095 static void SetClassExitMethod(void (*f)(void *), void *arg); 00096 static void SetClassExitMethodArgDelete(void (*f)(void *)); 00098 00101 virtual void ExitCallback(); 00102 00103 protected: 00104 vtkCarbonRenderWindowInteractor(); 00105 ~vtkCarbonRenderWindowInteractor(); 00106 00107 EventHandlerUPP ViewProcUPP; 00108 EventHandlerUPP WindowProcUPP; 00109 int InstallMessageProc; 00110 00111 //BTX 00113 00116 static void (*ClassExitMethod)(void *); 00117 static void (*ClassExitMethodArgDelete)(void *); 00118 static void *ClassExitMethodArg; 00119 //ETX 00121 00123 00125 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration); 00126 virtual int InternalDestroyTimer(int platformTimerId); 00128 00129 private: 00130 vtkCarbonRenderWindowInteractor(const vtkCarbonRenderWindowInteractor&); // Not implemented. 00131 void operator=(const vtkCarbonRenderWindowInteractor&); // Not implemented. 00132 }; 00133 00134 #endif