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 class AxisModelBase;
00026 class AxisTick;
00027
00033 class MDL_HIPPOPLOT_API UnaryTransform : public TransformBase
00034 {
00035
00036 protected:
00037
00039 const Range m_limits;
00040
00042 UnaryTransform ( double low, double high );
00043
00044 public:
00045
00047 virtual ~UnaryTransform();
00048
00050 #ifdef CLONE_DEFECT
00051 virtual TransformBase * clone () const = 0;
00052 #else
00053 virtual UnaryTransform * clone () const = 0;
00054 #endif
00055
00056 virtual bool isLinear () const = 0;
00057
00060 virtual void transform ( double & x ) const = 0;
00061
00063 virtual void inverseTransform ( double & x ) const = 0;
00064
00066 virtual void transform ( std::vector< double > & x ) const = 0;
00067
00070 virtual void validate ( Range & ) const = 0;
00071
00073 virtual const Range & limits () const;
00074
00077 virtual const std::vector < AxisTick > &
00078 setTicks ( AxisModelBase & axis ) = 0;
00079
00083 virtual const Range & adjustValues ( AxisModelBase & model,
00084 const Range & limit ) = 0;
00085
00086 };
00087
00088 #endif // _UnaryTransform_H_