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 vtkBiDimensionalRepresentation2D; 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(vtkBiDimensionalRepresentation2D *r) 00131 {this->Superclass::SetWidgetRepresentation(reinterpret_cast<vtkWidgetRepresentation*>(r));} 00133 00135 void CreateDefaultRepresentation(); 00136 00139 int IsMeasureValid(); 00140 00142 00143 enum 00144 { 00145 EndWidgetSelectEvent = 10050 00146 }; 00147 //ETX 00149 00152 virtual void SetProcessEvents(int); 00153 protected: 00154 vtkBiDimensionalWidget(); 00155 ~vtkBiDimensionalWidget(); 00156 00157 // The state of the widget 00158 //BTX 00159 enum {Start=0,Define,Manipulate}; 00160 //ETX 00161 int WidgetState; 00162 int CurrentHandle; 00163 int HandleLine1Selected; 00164 int HandleLine2Selected; 00165 int Line1InnerSelected; 00166 int Line1OuterSelected; 00167 int Line2InnerSelected; 00168 int Line2OuterSelected; 00169 int CenterSelected; 00170 00171 // Callback interface to capture events when 00172 // placing the widget. 00173 static void AddPointAction(vtkAbstractWidget*); 00174 static void MoveAction(vtkAbstractWidget*); 00175 static void EndSelectAction(vtkAbstractWidget*); 00176 00177 // The positioning handle widgets 00178 vtkHandleWidget *Point1Widget; 00179 vtkHandleWidget *Point2Widget; 00180 vtkHandleWidget *Point3Widget; 00181 vtkHandleWidget *Point4Widget; 00182 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback1; 00183 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback2; 00184 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback3; 00185 vtkBiDimensionalWidgetCallback *BiDimensionalWidgetCallback4; 00186 00187 // Methods invoked when the handles at the 00188 // end points of the widget are manipulated 00189 void StartBiDimensionalInteraction(); 00190 virtual void EndBiDimensionalInteraction(); 00191 00192 //BTX 00193 friend class vtkBiDimensionalWidgetCallback; 00194 //ETX 00195 00196 private: 00197 vtkBiDimensionalWidget(const vtkBiDimensionalWidget&); //Not implemented 00198 void operator=(const vtkBiDimensionalWidget&); //Not implemented 00199 }; 00200 00201 #endif