Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __CDRTRANSFORMS_H__
00030 #define __CDRTRANSFORMS_H__
00031
00032 #include <vector>
00033 #include <math.h>
00034
00035 namespace libcdr
00036 {
00037 class CDRPath;
00038
00039 class CDRTransform
00040 {
00041 public:
00042 CDRTransform();
00043 CDRTransform(double v0, double v1, double x0, double v3, double v4, double y0);
00044 CDRTransform(const CDRTransform &trafo);
00045
00046 void applyToPoint(double &x, double &y) const;
00047 void applyToArc(double &rx, double &ry, double &rotation, bool &sweep, double &endx, double &endy) const;
00048 double getScaleX() const;
00049 double getScaleY() const;
00050 double getTranslateX() const;
00051 double getTranslateY() const;
00052 bool getFlipX() const;
00053 bool getFlipY() const;
00054
00055 private:
00056 double _getScaleX() const;
00057 double _getScaleY() const;
00058 double m_v0;
00059 double m_v1;
00060 double m_x0;
00061 double m_v3;
00062 double m_v4;
00063 double m_y0;
00064 };
00065
00066 class CDRTransforms
00067 {
00068 public:
00069 CDRTransforms();
00070 CDRTransforms(const CDRTransforms &trafos);
00071 ~CDRTransforms();
00072
00073 void append(double v0, double v1, double x0, double v3, double v4, double y0);
00074 void append(const CDRTransform &trafo);
00075 void clear();
00076 bool empty() const;
00077
00078 void applyToPoint(double &x, double &y) const;
00079 void applyToArc(double &rx, double &ry, double &rotation, bool &sweep, double &x, double &y) const;
00080 double getScaleX() const;
00081 double getScaleY() const;
00082 double getTranslateX() const;
00083 double getTranslateY() const;
00084 bool getFlipX() const;
00085 bool getFlipY() const;
00086
00087 private:
00088 double _getScaleX() const;
00089 double _getScaleY() const;
00090 std::vector<CDRTransform> m_trafos;
00091 };
00092
00093 }
00094
00095 #endif
00096