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 "vtkInteractionWidgetsModule.h" // For export macro 00103 #include "vtkAbstractWidget.h" 00104 00105 class vtkBiDimensionalRepresentation; 00106 class vtkHandleWidget; 00107 class vtkBiDimensionalWidgetCallback; 00108 00109 00110 class VTKINTERACTIONWIDGETS_EXPORT vtkBiDimensionalWidget : public vtkAbstractWidget 00111 { 00112 public: 00114 static vtkBiDimensionalWidget *New(); 00115 00117 00118 vtkTypeMacro(vtkBiDimensionalWidget,vtkAbstractWidget); 00119 void PrintSelf(ostream& os, vtkIndent indent); 00121 00125 virtual void SetEnabled(int); 00126 00128 00131 void SetRepresentation(vtkBiDimensionalRepresentation *r) 00132 {this->Superclass::SetWidgetRepresentation(reinterpret_cast<vtkWidgetRepresentation*>(r));} 00134 00136 00137 vtkBiDimensionalRepresentation *GetBiDimensionalRepresentation() 00138 {return reinterpret_cast<vtkBiDimensionalRepresentation*>(this->WidgetRep);} 00140 00142 void CreateDefaultRepresentation(); 00143 00146 int IsMeasureValid(); 00147 00148 //BTX 00150 00151 enum 00152 { 00153 EndWidgetSelectEvent = 10050 00154 }; 00155 //ETX 00157 00160 virtual void SetProcessEvents(int); 00161 00163 00167 enum {Start=0,Define,Manipulate}; 00168 //ETX 00170 00172 00180 virtual void SetWidgetStateToStart(); 00181 virtual void SetWidgetStateToManipulate(); 00183 00185 00186 virtual int GetWidgetState() 00187 {return this->WidgetState;} 00189 00190 protected: 00191 vtkBiDimensionalWidget(); 00192 ~vtkBiDimensionalWidget(); 00193 00194 // The state of the widget 00195 int WidgetState; 00196 int CurrentHandle; 00197 int HandleLine1Selected; 00198 int HandleLine2Selected; 00199 int Line1InnerSelected; 00200 int Line1OuterSelected; 00201 int Line2InnerSelected; 00202 int Line2OuterSelected; 00203 int CenterSelected; 00204 00205 // Callback interface to capture events when 00206 // placing the widget. 00207 static void AddPointAction(vtkAbstractWidget*); 00208 static void MoveAction(vtkAbstractWidget*); 00209 static void EndSelectAction(vtkAbstractWidget*); 00210 00211 // The positioning handle widgets 00212 vtkHandleWidget *Point1Widget; 00213 vtkHandleWidget *Point2Widget; 00214 vtkHandleWidget *Point3Widget; 00215 vtkHandleWidget *Point4Widget; 00216 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback1; 00217 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback2; 00218 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback3; 00219 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback4; 00220 00221 // Methods invoked when the handles at the 00222 // end points of the widget are manipulated 00223 void StartBiDimensionalInteraction(); 00224 virtual void EndBiDimensionalInteraction(); 00225 00226 //BTX 00227 friend class vtkBiDimensionalWidgetCallback; 00228 //ETX 00229 00230 private: 00231 vtkBiDimensionalWidget(const vtkBiDimensionalWidget&); //Not implemented 00232 void operator=(const vtkBiDimensionalWidget&); //Not implemented 00233 }; 00234 00235 #endif