00001
00002
00014 #ifndef _XYTransform_H_
00015 #define _XYTransform_H_
00016
00017 #include "BinaryTransform.h"
00018
00019 #include <vector>
00020
00021 namespace hippodraw {
00022
00023 class UnaryTransform;
00024 class Range;
00025
00030 class MDL_HIPPOPLOT_API XYTransform : public BinaryTransform
00031 {
00032
00033 private:
00034
00036 UnaryTransform * m_x;
00037
00039 UnaryTransform * m_y;
00040
00041 public:
00042
00045 XYTransform ( UnaryTransform * x,
00046 UnaryTransform * y,
00047 UnaryTransform * z );
00048
00050 XYTransform ( const XYTransform & );
00051
00053 virtual ~XYTransform();
00054
00056 #ifdef CLONE_DEFECT
00057 virtual TransformBase * clone () const;
00058 #else
00059 virtual XYTransform * clone () const;
00060 #endif
00061
00063 TransformBase * xTransform () const;
00064
00066 TransformBase * yTransform () const;
00067
00068 virtual bool isLinearInXY () const;
00069
00070 virtual void transform ( double & x, double & y ) const;
00071
00072 virtual bool inverseTransform ( double & x, double & y ) const;
00073
00074 virtual void transform ( std::vector< double > & x,
00075 std::vector< double > & y ) const;
00076
00077 virtual double aspectRatio () const;
00078
00079 virtual Rect calcRectangle ( const Range & x,
00080 const Range & y );
00081
00082 virtual void validate ( Range & x, Range & y ) const;
00083
00085 virtual const Range & limitX () const;
00086
00088 virtual const Range & limitY () const;
00089
00090 virtual const std::vector < AxisTick > &
00091 setTicks ( AxisModelBase & axis_model, hippodraw::Axes::Type axis );
00092
00096 virtual void adjustValues ( AxisModelBase & model,
00097 hippodraw::Axes::Type axes,
00098 const Range & limit );
00099 };
00100
00101 }
00102
00103 #endif // _XYTransform_H_