#ifndef __SVGPATHPARSER_H__
#define __SVGPATHPARSER_H__
#if SVG_SUPPORT
namespace WebCore
{
class DeprecatedString;
const char *parseCoord(const char *ptr, double &number);
class SVGPolyParser
{
public:
virtual ~SVGPolyParser() { }
void parsePoints( const DeprecatedString &points ) const;
protected:
virtual void svgPolyTo( double x1, double y1, int nr ) const = 0;
};
class SVGPathParser
{
public:
virtual ~SVGPathParser() { }
void parseSVG( const DeprecatedString &d, bool process = false );
protected:
virtual void svgMoveTo( double x1, double y1, bool closed, bool abs = true ) = 0;
virtual void svgLineTo( double x1, double y1, bool abs = true ) = 0;
virtual void svgLineToHorizontal( double x, bool abs = true );
virtual void svgLineToVertical( double y, bool abs = true );
virtual void svgCurveToCubic( double x1, double y1, double x2, double y2, double x, double y, bool abs = true ) = 0;
virtual void svgCurveToCubicSmooth( double x, double y, double x2, double y2, bool abs = true );
virtual void svgCurveToQuadratic( double x, double y, double x1, double y1, bool abs = true );
virtual void svgCurveToQuadraticSmooth( double x, double y, bool abs = true );
virtual void svgArcTo( double x, double y, double r1, double r2, double angle, bool largeArcFlag, bool sweepFlag, bool abs = true );
virtual void svgClosePath() = 0;
private:
void calculateArc( bool relative, double &curx, double &cury, double angle, double x, double y, double r1, double r2, bool largeArcFlag, bool sweepFlag );
};
};
#endif // SVG_SUPPORT
#endif