VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/Interaction/Widgets/vtkAngleWidget.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkAngleWidget.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 =========================================================================*/
00079 #ifndef vtkAngleWidget_h
00080 #define vtkAngleWidget_h
00081 
00082 #include "vtkInteractionWidgetsModule.h" // For export macro
00083 #include "vtkAbstractWidget.h"
00084 
00085 class vtkAngleRepresentation;
00086 class vtkHandleWidget;
00087 class vtkAngleWidgetCallback;
00088 
00089 
00090 class VTKINTERACTIONWIDGETS_EXPORT vtkAngleWidget : public vtkAbstractWidget
00091 {
00092 public:
00094   static vtkAngleWidget *New();
00095 
00097 
00098   vtkTypeMacro(vtkAngleWidget,vtkAbstractWidget);
00099   void PrintSelf(ostream& os, vtkIndent indent);
00101 
00105   virtual void SetEnabled(int);
00106 
00108 
00111   void SetRepresentation(vtkAngleRepresentation *r)
00112     {this->Superclass::SetWidgetRepresentation(reinterpret_cast<vtkWidgetRepresentation*>(r));}
00114 
00116   void CreateDefaultRepresentation();
00117 
00119 
00120   vtkAngleRepresentation *GetAngleRepresentation()
00121     {return reinterpret_cast<vtkAngleRepresentation*>(this->WidgetRep);}
00123 
00126   int IsAngleValid();
00127 
00130   virtual void SetProcessEvents(int);
00131 
00133 
00137   enum {Start=0,Define,Manipulate};
00138   //ETX
00140 
00142 
00150   virtual void SetWidgetStateToStart();
00151   virtual void SetWidgetStateToManipulate();
00153 
00155 
00156   virtual int GetWidgetState()
00157     {return this->WidgetState;}
00159 
00160 protected:
00161   vtkAngleWidget();
00162   ~vtkAngleWidget();
00163 
00164   // The state of the widget
00165   int WidgetState;
00166   int CurrentHandle;
00167 
00168   // Callback interface to capture events when
00169   // placing the widget.
00170   static void AddPointAction(vtkAbstractWidget*);
00171   static void MoveAction(vtkAbstractWidget*);
00172   static void EndSelectAction(vtkAbstractWidget*);
00173 
00174   // The positioning handle widgets
00175   vtkHandleWidget *Point1Widget;
00176   vtkHandleWidget *CenterWidget;
00177   vtkHandleWidget *Point2Widget;
00178   vtkAngleWidgetCallback *AngleWidgetCallback1;
00179   vtkAngleWidgetCallback *AngleWidgetCenterCallback;
00180   vtkAngleWidgetCallback *AngleWidgetCallback2;
00181 
00182   // Methods invoked when the handles at the
00183   // end points of the widget are manipulated
00184   void StartAngleInteraction(int handleNum);
00185   void AngleInteraction(int handleNum);
00186   void EndAngleInteraction(int handleNum);
00187 
00188 //BTX
00189   friend class vtkAngleWidgetCallback;
00190 //ETX
00191 
00192 private:
00193   vtkAngleWidget(const vtkAngleWidget&);  //Not implemented
00194   void operator=(const vtkAngleWidget&);  //Not implemented
00195 };
00196 
00197 #endif