00001 /* -*- mode: c++ -*- */ 00002 00014 #ifndef _HammerAito_H_ 00015 #define _HammerAito_H_ 00016 00017 #include "PeriodicBinaryTransform.h" 00018 #include "axes/AxisTick.h" 00019 00036 class MDL_HIPPOPLOT_API HammerAito : public PeriodicBinaryTransform 00037 { 00038 00039 private: 00040 00043 std::vector < AxisTick > m_ticks; 00044 00046 void setTickStep( AxisModelBase & axis ); 00047 00049 void setFirstTick( AxisModelBase & axis ); 00050 00052 const std::vector < AxisTick > & 00053 genTicks ( AxisModelBase & axis, hippodraw::Axes::Type axistype ); 00054 00055 public: 00056 00059 HammerAito ( UnaryTransform * z ); 00060 00062 HammerAito ( const HammerAito & ); 00063 00065 virtual ~HammerAito(); 00066 00068 #ifdef CLONE_DEFECT 00069 virtual TransformBase * clone () const; 00070 #else 00071 virtual HammerAito * clone () const; 00072 #endif 00073 00074 virtual bool isLinearInXY () const; 00075 00076 /* It should be noted that we need to explicitly take care of offset 00077 because the following transform assumes that all the points given 00078 to it are such that they have ALREADY been altered to take care 00079 of offset 00080 */ 00081 virtual void transform ( double & lon, double & lat ) const; 00082 00083 /* It should be noted that we need to explicitly take care of offset 00084 because the following inverse transform assumes that all the points 00085 returned by it r such that they SHALL be altered to take care of offset */ 00086 virtual void inverseTransform ( double & lon, double & lat ) const; 00087 00088 /* It should be noted that we need to explicitly take care of offset 00089 because the following transform assumes that all the points given to 00090 it are such that they have ALREADY been altered to take care of offset */ 00091 virtual void transform ( std::vector< double > & lon, 00092 std::vector< double > & lat ) const; 00093 00094 virtual double aspectRatio () const; 00095 00096 virtual HippoRectangle calcRectangle ( const Range & x, 00097 const Range & y ); 00098 00099 virtual void validate ( Range & lat, Range & lon ) const; 00100 00101 virtual const std::vector < AxisTick > & 00102 setTicks ( AxisModelBase & axis_model, hippodraw::Axes::Type axis ); 00103 00107 virtual void adjustValues ( AxisModelBase & model, 00108 hippodraw::Axes::Type axes, 00109 const Range & limit ); 00110 }; 00111 00112 #endif // _HammerAito_H_