00001 /* -*- mode: c++ -*- */ 00002 00013 #ifndef _LinearTransform_H_ 00014 #define _LinearTransform_H_ 00015 00016 #include "UnaryTransform.h" 00017 00018 class AxisModelBase; 00019 class AxisTick; 00020 00027 class MDL_HIPPOPLOT_API LinearTransform : public UnaryTransform 00028 { 00029 private: 00030 00033 std::vector < AxisTick > m_ticks; 00034 00035 void setFirstTick( AxisModelBase & ); 00036 void setTickStep( AxisModelBase & ); 00037 const std::vector < AxisTick > & 00038 genTicks ( AxisModelBase & ); 00039 00040 public: 00041 00043 LinearTransform (); 00044 00046 LinearTransform ( const LinearTransform & ); 00047 00049 virtual ~LinearTransform(); 00050 00052 #ifdef CLONE_DEFECT 00053 virtual TransformBase * clone () const; 00054 #else 00055 virtual LinearTransform * clone () const; 00056 #endif 00057 00058 bool isLinear () const; 00059 00061 virtual void transform ( double & x ) const; 00062 00064 virtual void inverseTransform ( double & x ) const; 00065 00067 virtual void transform ( std::vector< double > & x ) const; 00068 00072 virtual void validate ( Range & ) const; 00073 00076 virtual const std::vector < AxisTick > & 00077 setTicks ( AxisModelBase & axis ); 00078 00082 virtual const Range & adjustValues ( AxisModelBase & axis, 00083 const Range & limit ); 00084 00085 }; 00086 00087 #endif // _LinearTransform_H_