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 =========================================================================*/
00074 #ifndef __vtkDistanceWidget_h
00075 #define __vtkDistanceWidget_h
00076 
00077 #include "vtkAbstractWidget.h"
00078 
00079 class vtkDistanceRepresentation;
00080 class vtkHandleWidget;
00081 class vtkDistanceWidgetCallback;
00082 
00083 
00084 class VTK_WIDGETS_EXPORT vtkDistanceWidget : public vtkAbstractWidget
00085 {
00086 public:
00088   static vtkDistanceWidget *New();
00089 
00091 
00092   vtkTypeMacro(vtkDistanceWidget,vtkAbstractWidget);
00093   void PrintSelf(ostream& os, vtkIndent indent);
00095 
00099   virtual void SetEnabled(int);
00100 
00102 
00105   void SetRepresentation(vtkDistanceRepresentation *r)
00106     {this->Superclass::SetWidgetRepresentation(
00107       reinterpret_cast<vtkWidgetRepresentation*>(r));}
00109 
00111 
00112   vtkDistanceRepresentation *GetDistanceRepresentation()
00113     {return reinterpret_cast<vtkDistanceRepresentation*>(this->WidgetRep);}
00115 
00117   void CreateDefaultRepresentation();
00118 
00121   virtual void SetProcessEvents(int);
00122 
00124 
00128   enum {Start=0,Define,Manipulate};
00129   //ETX
00131 
00133 
00141   virtual void SetWidgetStateToStart();
00142   virtual void SetWidgetStateToManipulate();
00144 
00146 
00147   virtual int GetWidgetState()
00148     {return this->WidgetState;}
00150 
00151 protected:
00152   vtkDistanceWidget();
00153   ~vtkDistanceWidget();
00154 
00155   // The state of the widget
00156   int WidgetState;
00157   int CurrentHandle;
00158 
00159   // Callback interface to capture events when
00160   // placing the widget.
00161   static void AddPointAction(vtkAbstractWidget*);
00162   static void MoveAction(vtkAbstractWidget*);
00163   static void EndSelectAction(vtkAbstractWidget*);
00164 
00165   // The positioning handle widgets
00166   vtkHandleWidget *Point1Widget;
00167   vtkHandleWidget *Point2Widget;
00168   vtkDistanceWidgetCallback *DistanceWidgetCallback1;
00169   vtkDistanceWidgetCallback *DistanceWidgetCallback2;
00170 
00171   // Methods invoked when the handles at the
00172   // end points of the widget are manipulated
00173   void StartDistanceInteraction(int handleNum);
00174   void DistanceInteraction(int handleNum);
00175   void EndDistanceInteraction(int handleNum);
00176 
00177 //BTX
00178   friend class vtkDistanceWidgetCallback;
00179 //ETX
00180 
00181 private:
00182   vtkDistanceWidget(const vtkDistanceWidget&);  //Not implemented
00183   void operator=(const vtkDistanceWidget&);  //Not implemented
00184 };
00185 
00186 #endif