VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkAngleWidget.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 =========================================================================*/ 00079 #ifndef vtkAngleWidget_h 00080 #define vtkAngleWidget_h 00081 00082 #include "vtkInteractionWidgetsModule.h" // For export macro 00083 #include "vtkAbstractWidget.h" 00084 00085 class vtkAngleRepresentation; 00086 class vtkHandleWidget; 00087 class vtkAngleWidgetCallback; 00088 00089 00090 class VTKINTERACTIONWIDGETS_EXPORT vtkAngleWidget : public vtkAbstractWidget 00091 { 00092 public: 00094 static vtkAngleWidget *New(); 00095 00097 00098 vtkTypeMacro(vtkAngleWidget,vtkAbstractWidget); 00099 void PrintSelf(ostream& os, vtkIndent indent); 00101 00105 virtual void SetEnabled(int); 00106 00108 00111 void SetRepresentation(vtkAngleRepresentation *r) 00112 {this->Superclass::SetWidgetRepresentation(reinterpret_cast<vtkWidgetRepresentation*>(r));} 00114 00116 void CreateDefaultRepresentation(); 00117 00119 00120 vtkAngleRepresentation *GetAngleRepresentation() 00121 {return reinterpret_cast<vtkAngleRepresentation*>(this->WidgetRep);} 00123 00126 int IsAngleValid(); 00127 00130 virtual void SetProcessEvents(int); 00131 00133 00137 enum {Start=0,Define,Manipulate}; 00138 //ETX 00140 00142 00150 virtual void SetWidgetStateToStart(); 00151 virtual void SetWidgetStateToManipulate(); 00153 00155 00156 virtual int GetWidgetState() 00157 {return this->WidgetState;} 00159 00160 protected: 00161 vtkAngleWidget(); 00162 ~vtkAngleWidget(); 00163 00164 // The state of the widget 00165 int WidgetState; 00166 int CurrentHandle; 00167 00168 // Callback interface to capture events when 00169 // placing the widget. 00170 static void AddPointAction(vtkAbstractWidget*); 00171 static void MoveAction(vtkAbstractWidget*); 00172 static void EndSelectAction(vtkAbstractWidget*); 00173 00174 // The positioning handle widgets 00175 vtkHandleWidget *Point1Widget; 00176 vtkHandleWidget *CenterWidget; 00177 vtkHandleWidget *Point2Widget; 00178 vtkAngleWidgetCallback *AngleWidgetCallback1; 00179 vtkAngleWidgetCallback *AngleWidgetCenterCallback; 00180 vtkAngleWidgetCallback *AngleWidgetCallback2; 00181 00182 // Methods invoked when the handles at the 00183 // end points of the widget are manipulated 00184 void StartAngleInteraction(int handleNum); 00185 void AngleInteraction(int handleNum); 00186 void EndAngleInteraction(int handleNum); 00187 00188 //BTX 00189 friend class vtkAngleWidgetCallback; 00190 //ETX 00191 00192 private: 00193 vtkAngleWidget(const vtkAngleWidget&); //Not implemented 00194 void operator=(const vtkAngleWidget&); //Not implemented 00195 }; 00196 00197 #endif