00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00026 #ifndef __vtkSMBoundsDomain_h
00027 #define __vtkSMBoundsDomain_h
00028 
00029 #include "vtkSMDoubleRangeDomain.h"
00030 
00031 class vtkPVDataInformation;
00032 class vtkSMProxyProperty;
00033 
00034 class VTK_EXPORT vtkSMBoundsDomain : public vtkSMDoubleRangeDomain
00035 {
00036 public:
00037   static vtkSMBoundsDomain* New();
00038   vtkTypeRevisionMacro(vtkSMBoundsDomain, vtkSMDoubleRangeDomain);
00039   void PrintSelf(ostream& os, vtkIndent indent);
00040   
00043   virtual void Update(vtkSMProperty*);
00044 
00046   vtkSetClampMacro(Mode, int, 0, 3);
00047   vtkGetMacro(Mode, int);
00049 
00050   void SetInputInformation(vtkPVDataInformation* input);
00051 
00052 
00054 
00055   enum Modes
00056   {
00057     NORMAL,
00058     MAGNITUDE,
00059     ORIENTED_MAGNITUDE,
00060     SCALED_EXTENT
00061   };
00063 
00064 
00065   vtkSetMacro(ScaleFactor, double);
00066   vtkGetMacro(ScaleFactor, double);
00067 
00068 protected:
00069   vtkSMBoundsDomain();
00070   ~vtkSMBoundsDomain();
00071 
00072   void Update(vtkSMProxyProperty *pp);
00073   void UpdateOriented();
00074 
00077   virtual int ReadXMLAttributes(vtkSMProperty* prop, vtkPVXMLElement* element);
00078   
00079   int Mode;
00080 
00081   vtkPVDataInformation* InputInformation;
00082 
00083   double ScaleFactor; 
00084 
00085 private:
00086   vtkSMBoundsDomain(const vtkSMBoundsDomain&); 
00087   void operator=(const vtkSMBoundsDomain&); 
00088 };
00089 
00090 #endif