SVGPathTraversalStateBuilder.cpp [plain text]
#include "config.h"
#include "SVGPathTraversalStateBuilder.h"
#include "PathTraversalState.h"
namespace WebCore {
SVGPathTraversalStateBuilder::SVGPathTraversalStateBuilder()
: m_traversalState(nullptr)
, m_segmentIndex(0)
{
}
void SVGPathTraversalStateBuilder::moveTo(const FloatPoint& targetPoint, bool, PathCoordinateMode)
{
ASSERT(m_traversalState);
m_traversalState->processPathElement(PathElementMoveToPoint, &targetPoint);
}
void SVGPathTraversalStateBuilder::lineTo(const FloatPoint& targetPoint, PathCoordinateMode)
{
ASSERT(m_traversalState);
m_traversalState->processPathElement(PathElementAddLineToPoint, &targetPoint);
}
void SVGPathTraversalStateBuilder::curveToCubic(const FloatPoint& point1, const FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode)
{
FloatPoint points[] = { point1, point2, targetPoint };
ASSERT(m_traversalState);
m_traversalState->processPathElement(PathElementAddCurveToPoint, points);
}
void SVGPathTraversalStateBuilder::closePath()
{
ASSERT(m_traversalState);
m_traversalState->processPathElement(PathElementCloseSubpath, nullptr);
}
void SVGPathTraversalStateBuilder::setDesiredLength(float desiredLength)
{
ASSERT(m_traversalState);
m_traversalState->setDesiredLength(desiredLength);
}
bool SVGPathTraversalStateBuilder::continueConsuming()
{
ASSERT(m_traversalState);
return !m_traversalState->success();
}
float SVGPathTraversalStateBuilder::totalLength()
{
ASSERT(m_traversalState);
return m_traversalState->totalLength();
}
SVGPoint SVGPathTraversalStateBuilder::currentPoint()
{
ASSERT(m_traversalState);
return m_traversalState->current();
}
}