VTK
dox/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 "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