00001
00002
00014 #ifndef _XYTransform_H_
00015 #define _XYTransform_H_
00016
00017 #include "BinaryTransform.h"
00018 #include <vector>
00019
00020 class UnaryTransform;
00021 class Range;
00022
00027 class MDL_HIPPOPLOT_API XYTransform : public BinaryTransform
00028 {
00029
00030 private:
00031
00033 UnaryTransform * m_x;
00034
00036 UnaryTransform * m_y;
00037
00038 public:
00039
00042 XYTransform ( UnaryTransform * x,
00043 UnaryTransform * y,
00044 UnaryTransform * z );
00045
00047 XYTransform ( const XYTransform & );
00048
00050 virtual ~XYTransform();
00051
00053 #ifdef CLONE_DEFECT
00054 virtual TransformBase * clone () const;
00055 #else
00056 virtual XYTransform * clone () const;
00057 #endif
00058
00060 TransformBase * xTransform () const;
00061
00063 TransformBase * yTransform () const;
00064
00065 virtual bool isLinearInXY () const;
00066
00067 virtual void transform ( double & x, double & y ) const;
00068
00069 virtual void inverseTransform ( double & x, double & y ) const;
00070
00071 virtual void transform ( std::vector< double > & x,
00072 std::vector< double > & y ) const;
00073
00074 virtual double aspectRatio () const;
00075
00076 virtual HippoRectangle calcRectangle ( const Range & x,
00077 const Range & y );
00078
00079 virtual void validate ( Range & x, Range & y ) const;
00080
00082 virtual const Range & limitX () const;
00083
00085 virtual const Range & limitY () const;
00086
00087 virtual const std::vector < AxisTick > &
00088 setTicks ( AxisModelBase & axis_model, hippodraw::Axes::Type axis );
00089
00093 virtual void adjustValues ( AxisModelBase & model,
00094 hippodraw::Axes::Type axes,
00095 const Range & limit );
00096 };
00097
00098 #endif // _XYTransform_H_