00001
00002
00013 #ifndef _LinearTransform_H_
00014 #define _LinearTransform_H_
00015
00016 #include "UnaryTransform.h"
00017
00018 namespace hippodraw {
00019
00020 class AxisModelBase;
00021 class AxisTick;
00022
00029 class MDL_HIPPOPLOT_API LinearTransform : public UnaryTransform
00030 {
00031 private:
00032
00035 std::vector < AxisTick > m_ticks;
00036
00037 void setFirstTick( AxisModelBase & );
00038 void setTickStep( AxisModelBase & );
00039 const std::vector < AxisTick > &
00040 genTicks ( AxisModelBase & );
00041
00042 public:
00043
00045 LinearTransform ();
00046
00048 LinearTransform ( const LinearTransform & );
00049
00051 virtual ~LinearTransform();
00052
00054 #ifdef CLONE_DEFECT
00055 virtual TransformBase * clone () const;
00056 #else
00057 virtual LinearTransform * clone () const;
00058 #endif
00059
00060 bool isLinear () const;
00061
00063 virtual void transform ( double & x ) const;
00064
00066 virtual void inverseTransform ( double & x ) const;
00067
00069 virtual void transform ( std::vector< double > & x ) const;
00070
00074 virtual void validate ( Range & ) const;
00075
00078 virtual const std::vector < AxisTick > &
00079 setTicks ( AxisModelBase & axis );
00080
00084 virtual const Range & adjustValues ( AxisModelBase & axis,
00085 const Range & limit );
00086
00087 };
00088
00089 }
00090
00091 #endif // _LinearTransform_H_