00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __SVGPATHPARSER_H__
00021 #define __SVGPATHPARSER_H__
00022
00023 class QString;
00024
00025 #include <koffice_export.h>
00037 class KOPAINTER_EXPORT SVGPathParser
00038 {
00039 public:
00040 virtual ~SVGPathParser(){}
00041 void parseSVG( const QString &d, bool process = false );
00042
00043 protected:
00044 virtual void svgMoveTo( double x1, double y1, bool abs = true ) = 0;
00045 virtual void svgLineTo( double x1, double y1, bool abs = true ) = 0;
00046 virtual void svgLineToHorizontal( double x, bool abs = true );
00047 virtual void svgLineToVertical( double y, bool abs = true );
00048 virtual void svgCurveToCubic( double x1, double y1, double x2, double y2, double x, double y, bool abs = true ) = 0;
00049 virtual void svgCurveToCubicSmooth( double x, double y, double x2, double y2, bool abs = true );
00050 virtual void svgCurveToQuadratic( double x, double y, double x1, double y1, bool abs = true );
00051 virtual void svgCurveToQuadraticSmooth( double x, double y, bool abs = true );
00052 virtual void svgArcTo( double x, double y, double r1, double r2, double angle, bool largeArcFlag, bool sweepFlag, bool abs = true );
00053 virtual void svgClosePath() = 0;
00054
00055 private:
00056 const char *getCoord( const char *, double & );
00057 void calculateArc( bool relative, double &curx, double &cury, double angle, double x, double y, double r1, double r2, bool largeArcFlag, bool sweepFlag );
00058 };
00059
00060 #endif