VTK
dox/Widgets/vtkDistanceWidget.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkDistanceWidget.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 =========================================================================*/
00077 #ifndef __vtkDistanceWidget_h
00078 #define __vtkDistanceWidget_h
00079 
00080 #include "vtkAbstractWidget.h"
00081 
00082 class vtkDistanceRepresentation;
00083 class vtkHandleWidget;
00084 class vtkDistanceWidgetCallback;
00085 
00086 
00087 class VTK_WIDGETS_EXPORT vtkDistanceWidget : public vtkAbstractWidget
00088 {
00089 public:
00091   static vtkDistanceWidget *New();
00092 
00094 
00095   vtkTypeMacro(vtkDistanceWidget,vtkAbstractWidget);
00096   void PrintSelf(ostream& os, vtkIndent indent);
00098 
00102   virtual void SetEnabled(int);
00103 
00105 
00108   void SetRepresentation(vtkDistanceRepresentation *r)
00109     {this->Superclass::SetWidgetRepresentation(
00110       reinterpret_cast<vtkWidgetRepresentation*>(r));}
00112 
00114 
00115   vtkDistanceRepresentation *GetDistanceRepresentation()
00116     {return reinterpret_cast<vtkDistanceRepresentation*>(this->WidgetRep);}
00118 
00120   void CreateDefaultRepresentation();
00121 
00124   virtual void SetProcessEvents(int);
00125 
00127 
00131   enum {Start=0,Define,Manipulate};
00132   //ETX
00134 
00136 
00144   virtual void SetWidgetStateToStart();
00145   virtual void SetWidgetStateToManipulate();
00147 
00149 
00150   virtual int GetWidgetState()
00151     {return this->WidgetState;}
00153 
00154 protected:
00155   vtkDistanceWidget();
00156   ~vtkDistanceWidget();
00157 
00158   // The state of the widget
00159   int WidgetState;
00160   int CurrentHandle;
00161 
00162   // Callback interface to capture events when
00163   // placing the widget.
00164   static void AddPointAction(vtkAbstractWidget*);
00165   static void MoveAction(vtkAbstractWidget*);
00166   static void EndSelectAction(vtkAbstractWidget*);
00167 
00168   // The positioning handle widgets
00169   vtkHandleWidget *Point1Widget;
00170   vtkHandleWidget *Point2Widget;
00171   vtkDistanceWidgetCallback *DistanceWidgetCallback1;
00172   vtkDistanceWidgetCallback *DistanceWidgetCallback2;
00173 
00174   // Methods invoked when the handles at the
00175   // end points of the widget are manipulated
00176   void StartDistanceInteraction(int handleNum);
00177   void DistanceInteraction(int handleNum);
00178   void EndDistanceInteraction(int handleNum);
00179 
00180 //BTX
00181   friend class vtkDistanceWidgetCallback;
00182 //ETX
00183 
00184 private:
00185   vtkDistanceWidget(const vtkDistanceWidget&);  //Not implemented
00186   void operator=(const vtkDistanceWidget&);  //Not implemented
00187 };
00188 
00189 #endif