VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkDistanceWidget.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 =========================================================================*/ 00077 #ifndef __vtkDistanceWidget_h 00078 #define __vtkDistanceWidget_h 00079 00080 #include "vtkAbstractWidget.h" 00081 00082 class vtkDistanceRepresentation; 00083 class vtkHandleWidget; 00084 class vtkDistanceWidgetCallback; 00085 00086 00087 class VTK_WIDGETS_EXPORT vtkDistanceWidget : public vtkAbstractWidget 00088 { 00089 public: 00091 static vtkDistanceWidget *New(); 00092 00094 00095 vtkTypeMacro(vtkDistanceWidget,vtkAbstractWidget); 00096 void PrintSelf(ostream& os, vtkIndent indent); 00098 00102 virtual void SetEnabled(int); 00103 00105 00108 void SetRepresentation(vtkDistanceRepresentation *r) 00109 {this->Superclass::SetWidgetRepresentation( 00110 reinterpret_cast<vtkWidgetRepresentation*>(r));} 00112 00114 00115 vtkDistanceRepresentation *GetDistanceRepresentation() 00116 {return reinterpret_cast<vtkDistanceRepresentation*>(this->WidgetRep);} 00118 00120 void CreateDefaultRepresentation(); 00121 00124 virtual void SetProcessEvents(int); 00125 00127 00131 enum {Start=0,Define,Manipulate}; 00132 //ETX 00134 00136 00144 virtual void SetWidgetStateToStart(); 00145 virtual void SetWidgetStateToManipulate(); 00147 00149 00150 virtual int GetWidgetState() 00151 {return this->WidgetState;} 00153 00154 protected: 00155 vtkDistanceWidget(); 00156 ~vtkDistanceWidget(); 00157 00158 // The state of the widget 00159 int WidgetState; 00160 int CurrentHandle; 00161 00162 // Callback interface to capture events when 00163 // placing the widget. 00164 static void AddPointAction(vtkAbstractWidget*); 00165 static void MoveAction(vtkAbstractWidget*); 00166 static void EndSelectAction(vtkAbstractWidget*); 00167 00168 // The positioning handle widgets 00169 vtkHandleWidget *Point1Widget; 00170 vtkHandleWidget *Point2Widget; 00171 vtkDistanceWidgetCallback *DistanceWidgetCallback1; 00172 vtkDistanceWidgetCallback *DistanceWidgetCallback2; 00173 00174 // Methods invoked when the handles at the 00175 // end points of the widget are manipulated 00176 void StartDistanceInteraction(int handleNum); 00177 void DistanceInteraction(int handleNum); 00178 void EndDistanceInteraction(int handleNum); 00179 00180 //BTX 00181 friend class vtkDistanceWidgetCallback; 00182 //ETX 00183 00184 private: 00185 vtkDistanceWidget(const vtkDistanceWidget&); //Not implemented 00186 void operator=(const vtkDistanceWidget&); //Not implemented 00187 }; 00188 00189 #endif