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
00030 #ifndef __CDRPATH_H__
00031 #define __CDRPATH_H__
00032
00033 #include <vector>
00034 #include <libwpd/libwpd.h>
00035
00036 #include "CDRTypes.h"
00037
00038 namespace libcdr
00039 {
00040
00041 class CDRTransform;
00042
00043 class CDRPathElement
00044 {
00045 public:
00046 CDRPathElement() {}
00047 virtual ~CDRPathElement() {}
00048 virtual void writeOut(WPXPropertyListVector &vec) const = 0;
00049 virtual void transform(const CDRTransforms &trafos) = 0;
00050 virtual void transform(const CDRTransform &trafo) = 0;
00051 virtual CDRPathElement *clone() = 0;
00052 };
00053
00054
00055 class CDRPath : public CDRPathElement
00056 {
00057 public:
00058 CDRPath() : m_elements(), m_isClosed(false) {}
00059 CDRPath(const CDRPath &path);
00060 ~CDRPath();
00061
00062 void appendMoveTo(double x, double y);
00063 void appendLineTo(double x, double y);
00064 void appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y);
00065 void appendQuadraticBezierTo(double x1, double y1, double x, double y);
00066 void appendSplineTo(std::vector<std::pair<double, double> > &points);
00067 void appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y);
00068 void appendClosePath();
00069 void appendPath(const CDRPath &path);
00070
00071 void writeOut(WPXPropertyListVector &vec) const;
00072 void transform(const CDRTransforms &trafos);
00073 void transform(const CDRTransform &trafo);
00074 CDRPathElement *clone();
00075
00076 void clear();
00077 bool empty() const;
00078 bool isClosed() const;
00079
00080 private:
00081 CDRPath &operator=(const CDRPath &path);
00082
00083 private:
00084 std::vector<CDRPathElement *> m_elements;
00085 bool m_isClosed;
00086 };
00087
00088 }
00089
00090 #endif
00091