VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkBiDimensionalWidget.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 =========================================================================*/ 00099 #ifndef __vtkBiDimensionalWidget_h 00100 #define __vtkBiDimensionalWidget_h 00101 00102 #include "vtkAbstractWidget.h" 00103 00104 class vtkBiDimensionalRepresentation; 00105 class vtkHandleWidget; 00106 class vtkBiDimensionalWidgetCallback; 00107 00108 00109 class VTK_WIDGETS_EXPORT vtkBiDimensionalWidget : public vtkAbstractWidget 00110 { 00111 public: 00113 static vtkBiDimensionalWidget *New(); 00114 00116 00117 vtkTypeMacro(vtkBiDimensionalWidget,vtkAbstractWidget); 00118 void PrintSelf(ostream& os, vtkIndent indent); 00120 00124 virtual void SetEnabled(int); 00125 00127 00130 void SetRepresentation(vtkBiDimensionalRepresentation *r) 00131 {this->Superclass::SetWidgetRepresentation(reinterpret_cast<vtkWidgetRepresentation*>(r));} 00133 00135 00136 vtkBiDimensionalRepresentation *GetBiDimensionalRepresentation() 00137 {return reinterpret_cast<vtkBiDimensionalRepresentation*>(this->WidgetRep);} 00139 00141 void CreateDefaultRepresentation(); 00142 00145 int IsMeasureValid(); 00146 00147 //BTX 00149 00150 enum 00151 { 00152 EndWidgetSelectEvent = 10050 00153 }; 00154 //ETX 00156 00159 virtual void SetProcessEvents(int); 00160 00162 00166 enum {Start=0,Define,Manipulate}; 00167 //ETX 00169 00171 00179 virtual void SetWidgetStateToStart(); 00180 virtual void SetWidgetStateToManipulate(); 00182 00184 00185 virtual int GetWidgetState() 00186 {return this->WidgetState;} 00188 00189 protected: 00190 vtkBiDimensionalWidget(); 00191 ~vtkBiDimensionalWidget(); 00192 00193 // The state of the widget 00194 int WidgetState; 00195 int CurrentHandle; 00196 int HandleLine1Selected; 00197 int HandleLine2Selected; 00198 int Line1InnerSelected; 00199 int Line1OuterSelected; 00200 int Line2InnerSelected; 00201 int Line2OuterSelected; 00202 int CenterSelected; 00203 00204 // Callback interface to capture events when 00205 // placing the widget. 00206 static void AddPointAction(vtkAbstractWidget*); 00207 static void MoveAction(vtkAbstractWidget*); 00208 static void EndSelectAction(vtkAbstractWidget*); 00209 00210 // The positioning handle widgets 00211 vtkHandleWidget *Point1Widget; 00212 vtkHandleWidget *Point2Widget; 00213 vtkHandleWidget *Point3Widget; 00214 vtkHandleWidget *Point4Widget; 00215 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback1; 00216 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback2; 00217 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback3; 00218 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback4; 00219 00220 // Methods invoked when the handles at the 00221 // end points of the widget are manipulated 00222 void StartBiDimensionalInteraction(); 00223 virtual void EndBiDimensionalInteraction(); 00224 00225 //BTX 00226 friend class vtkBiDimensionalWidgetCallback; 00227 //ETX 00228 00229 private: 00230 vtkBiDimensionalWidget(const vtkBiDimensionalWidget&); //Not implemented 00231 void operator=(const vtkBiDimensionalWidget&); //Not implemented 00232 }; 00233 00234 #endif