00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00040 #ifndef __vtkScalarBarWidget_h
00041 #define __vtkScalarBarWidget_h
00042 
00043 #include "vtkInteractorObserver.h"
00044 class vtkScalarBarActor;
00045 
00046 class VTK_WIDGETS_EXPORT vtkScalarBarWidget : public vtkInteractorObserver
00047 {
00048 public:
00049   static vtkScalarBarWidget *New();
00050   vtkTypeRevisionMacro(vtkScalarBarWidget,vtkInteractorObserver);
00051   void PrintSelf(ostream& os, vtkIndent indent);
00052 
00054 
00055   void SetScalarBarActor(vtkScalarBarActor *scalarbar);
00056   vtkGetObjectMacro(ScalarBarActor,vtkScalarBarActor);
00058   
00060   virtual void SetEnabled(int);
00061 
00062 protected:
00063   vtkScalarBarWidget();
00064   ~vtkScalarBarWidget();
00065 
00066   
00067   vtkScalarBarActor *ScalarBarActor;
00068 
00069   
00070   static void ProcessEvents(vtkObject* object, 
00071                             unsigned long event,
00072                             void* clientdata, 
00073                             void* calldata);
00074 
00075   
00076   void OnLeftButtonDown();
00077   void OnLeftButtonUp();
00078   void OnRightButtonDown();
00079   void OnRightButtonUp();
00080   void OnMouseMove();
00081 
00082   
00083   double StartPosition[2];
00084   
00085 
00086   int State;
00087   
00088   
00089   int LeftButtonDown;
00090   int RightButtonDown;
00091   enum WidgetState
00092   {
00093     Moving=0,
00094     AdjustingP1,
00095     AdjustingP2,
00096     AdjustingP3,
00097     AdjustingP4,
00098     AdjustingE1,
00099     AdjustingE2,
00100     AdjustingE3,
00101     AdjustingE4,
00102     Inside,
00103     Outside
00104   };
00105 
00106 
00107   
00108   
00109   int ComputeStateBasedOnPosition(int X, int Y, int *pos1, int *pos2);
00110 
00111   
00112   void SetCursor(int State);
00113 
00114 private:
00115   vtkScalarBarWidget(const vtkScalarBarWidget&);  
00116   void operator=(const vtkScalarBarWidget&);  
00117 };
00118 
00119 #endif