VTK
dox/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 "vtkAbstractWidget.h"
00083 
00084 class vtkAngleRepresentation;
00085 class vtkHandleWidget;
00086 class vtkAngleWidgetCallback;
00087 
00088 
00089 class VTK_WIDGETS_EXPORT vtkAngleWidget : public vtkAbstractWidget
00090 {
00091 public:
00093   static vtkAngleWidget *New();
00094 
00096 
00097   vtkTypeMacro(vtkAngleWidget,vtkAbstractWidget);
00098   void PrintSelf(ostream& os, vtkIndent indent);
00100 
00104   virtual void SetEnabled(int);
00105 
00107 
00110   void SetRepresentation(vtkAngleRepresentation *r)
00111     {this->Superclass::SetWidgetRepresentation(reinterpret_cast<vtkWidgetRepresentation*>(r));}
00113 
00115   void CreateDefaultRepresentation();
00116 
00118 
00119   vtkAngleRepresentation *GetAngleRepresentation()
00120     {return reinterpret_cast<vtkAngleRepresentation*>(this->WidgetRep);}
00122 
00125   int IsAngleValid();
00126 
00129   virtual void SetProcessEvents(int);
00130 
00132 
00136   enum {Start=0,Define,Manipulate};
00137   //ETX
00139 
00141 
00149   virtual void SetWidgetStateToStart();
00150   virtual void SetWidgetStateToManipulate();
00152 
00154 
00155   virtual int GetWidgetState()
00156     {return this->WidgetState;}
00158 
00159 protected:
00160   vtkAngleWidget();
00161   ~vtkAngleWidget();
00162 
00163   // The state of the widget
00164   int WidgetState;
00165   int CurrentHandle;
00166 
00167   // Callback interface to capture events when
00168   // placing the widget.
00169   static void AddPointAction(vtkAbstractWidget*);
00170   static void MoveAction(vtkAbstractWidget*);
00171   static void EndSelectAction(vtkAbstractWidget*);
00172 
00173   // The positioning handle widgets
00174   vtkHandleWidget *Point1Widget;
00175   vtkHandleWidget *CenterWidget;
00176   vtkHandleWidget *Point2Widget;
00177   vtkAngleWidgetCallback *AngleWidgetCallback1;
00178   vtkAngleWidgetCallback *AngleWidgetCenterCallback;
00179   vtkAngleWidgetCallback *AngleWidgetCallback2;
00180 
00181   // Methods invoked when the handles at the
00182   // end points of the widget are manipulated
00183   void StartAngleInteraction(int handleNum);
00184   void AngleInteraction(int handleNum);
00185   void EndAngleInteraction(int handleNum);
00186 
00187 //BTX
00188   friend class vtkAngleWidgetCallback;
00189 //ETX
00190 
00191 private:
00192   vtkAngleWidget(const vtkAngleWidget&);  //Not implemented
00193   void operator=(const vtkAngleWidget&);  //Not implemented
00194 };
00195 
00196 #endif