SVGPathTraversalStateBuilder.h [plain text]
#ifndef SVGPathTraversalStateBuilder_h
#define SVGPathTraversalStateBuilder_h
#include "SVGPathConsumer.h"
#include "SVGPoint.h"
namespace WebCore {
class PathTraversalState;
class SVGPathTraversalStateBuilder final : public SVGPathConsumer {
public:
SVGPathTraversalStateBuilder(PathTraversalState&, float desiredLength = 0);
unsigned pathSegmentIndex() const { return m_segmentIndex; }
float totalLength() const;
SVGPoint currentPoint() const;
void incrementPathSegmentCount() override { ++m_segmentIndex; }
bool continueConsuming() override;
private:
void moveTo(const FloatPoint&, bool closed, PathCoordinateMode) override;
void lineTo(const FloatPoint&, PathCoordinateMode) override;
void curveToCubic(const FloatPoint&, const FloatPoint&, const FloatPoint&, PathCoordinateMode) override;
void closePath() override;
private:
void lineToHorizontal(float, PathCoordinateMode) override { ASSERT_NOT_REACHED(); }
void lineToVertical(float, PathCoordinateMode) override { ASSERT_NOT_REACHED(); }
void curveToCubicSmooth(const FloatPoint&, const FloatPoint&, PathCoordinateMode) override { ASSERT_NOT_REACHED(); }
void curveToQuadratic(const FloatPoint&, const FloatPoint&, PathCoordinateMode) override { ASSERT_NOT_REACHED(); }
void curveToQuadraticSmooth(const FloatPoint&, PathCoordinateMode) override { ASSERT_NOT_REACHED(); }
void arcTo(float, float, float, bool, bool, const FloatPoint&, PathCoordinateMode) override { ASSERT_NOT_REACHED(); }
PathTraversalState& m_traversalState;
unsigned m_segmentIndex { 0 };
};
}
#endif // SVGPathTraversalStateBuilder_h