VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/Interaction/Widgets/vtkBiDimensionalWidget.h
Go to the documentation of this file.
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