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 CDRPathElement
00042 {
00043 public:
00044 CDRPathElement() {}
00045 virtual ~CDRPathElement() {}
00046 virtual void writeOut(WPXPropertyListVector &vec) const = 0;
00047 virtual void transform(const CDRTransform &trafo) = 0;
00048 virtual CDRPathElement *clone() = 0;
00049 };
00050
00051
00052 class CDRPath : public CDRPathElement
00053 {
00054 public:
00055 CDRPath() : m_elements() {}
00056 CDRPath(const CDRPath &path);
00057 ~CDRPath();
00058
00059 void appendMoveTo(double x, double y);
00060 void appendLineTo(double x, double y);
00061 void appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y);
00062 void appendQuadraticBezierTo(double x1, double y1, double x, double y);
00063 void appendSplineTo(std::vector<std::pair<double, double> > &points);
00064 void appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y);
00065 void appendClosePath();
00066 void appendPath(const CDRPath &path);
00067
00068 void writeOut(WPXPropertyListVector &vec) const;
00069 void transform(const CDRTransform &trafo);
00070 CDRPathElement *clone();
00071
00072 void clear();
00073 bool empty();
00074
00075 private:
00076 std::vector<CDRPathElement *> m_elements;
00077 };
00078
00079 }
00080
00081 #endif
00082