00001
00002
00014 #ifndef _UnaryTransform_H_
00015 #define _UnaryTransform_H_
00016
00017 #ifdef _MSC_VER
00018 #include "msdevstudio/MSconfig.h"
00019 #endif
00020
00021 #include "TransformBase.h"
00022
00023 #include "axes/Range.h"
00024
00025 namespace hippodraw {
00026
00027 class AxisModelBase;
00028 class AxisTick;
00029
00035 class MDL_HIPPOPLOT_API UnaryTransform : public TransformBase
00036 {
00037
00038 protected:
00039
00041 const Range m_limits;
00042
00044 UnaryTransform ( double low, double high );
00045
00046 public:
00047
00049 virtual ~UnaryTransform();
00050
00052 #ifdef CLONE_DEFECT
00053 virtual TransformBase * clone () const = 0;
00054 #else
00055 virtual UnaryTransform * clone () const = 0;
00056 #endif
00057
00058 virtual bool isLinear () const = 0;
00059
00062 virtual void transform ( double & x ) const = 0;
00063
00065 virtual void inverseTransform ( double & x ) const = 0;
00066
00068 virtual void transform ( std::vector< double > & x ) const = 0;
00069
00072 virtual void validate ( Range & ) const = 0;
00073
00075 virtual const Range & limits () const;
00076
00079 virtual const std::vector < AxisTick > &
00080 setTicks ( AxisModelBase & axis ) = 0;
00081
00085 virtual const Range & adjustValues ( AxisModelBase & model,
00086 const Range & limit ) = 0;
00087
00088 };
00089
00090 }
00091
00092 #endif // _UnaryTransform_H_