diff options
Diffstat (limited to 'Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp')
-rw-r--r-- | Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp | 56 |
1 files changed, 15 insertions, 41 deletions
diff --git a/Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp b/Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp index b5f53f909..de1a0cac9 100644 --- a/Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp +++ b/Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> * Copyright (C) 2007 Eric Seidel <eric@webkit.org> + * Copyright (C) 2015 Apple Inc. All rights reserved. * Copyright (C) Research In Motion Limited 2010. All rights reserved. * * This library is free software; you can redistribute it and/or @@ -21,80 +22,53 @@ */ #include "config.h" - -#if ENABLE(SVG) #include "SVGPathTraversalStateBuilder.h" #include "PathTraversalState.h" namespace WebCore { -SVGPathTraversalStateBuilder::SVGPathTraversalStateBuilder() - : m_traversalState(0) +SVGPathTraversalStateBuilder::SVGPathTraversalStateBuilder(PathTraversalState& state, float desiredLength) + : m_traversalState(state) { + m_traversalState.setDesiredLength(desiredLength); } void SVGPathTraversalStateBuilder::moveTo(const FloatPoint& targetPoint, bool, PathCoordinateMode) { - ASSERT(m_traversalState); - m_traversalState->m_totalLength += m_traversalState->moveTo(targetPoint); + m_traversalState.processPathElement(PathElementMoveToPoint, &targetPoint); } void SVGPathTraversalStateBuilder::lineTo(const FloatPoint& targetPoint, PathCoordinateMode) { - ASSERT(m_traversalState); - m_traversalState->m_totalLength += m_traversalState->lineTo(targetPoint); + m_traversalState.processPathElement(PathElementAddLineToPoint, &targetPoint); } void SVGPathTraversalStateBuilder::curveToCubic(const FloatPoint& point1, const FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode) { - ASSERT(m_traversalState); - m_traversalState->m_totalLength += m_traversalState->cubicBezierTo(point1, point2, targetPoint); -} + FloatPoint points[] = { point1, point2, targetPoint }; -void SVGPathTraversalStateBuilder::closePath() -{ - ASSERT(m_traversalState); - m_traversalState->m_totalLength += m_traversalState->closeSubpath(); + m_traversalState.processPathElement(PathElementAddCurveToPoint, points); } -void SVGPathTraversalStateBuilder::setDesiredLength(float desiredLength) +void SVGPathTraversalStateBuilder::closePath() { - ASSERT(m_traversalState); - m_traversalState->m_desiredLength = desiredLength; + m_traversalState.processPathElement(PathElementCloseSubpath, nullptr); } bool SVGPathTraversalStateBuilder::continueConsuming() { - ASSERT(m_traversalState); - m_traversalState->processSegment(); - return !m_traversalState->m_success; -} - -void SVGPathTraversalStateBuilder::incrementPathSegmentCount() -{ - ASSERT(m_traversalState); - ++m_traversalState->m_segmentIndex; -} - -unsigned SVGPathTraversalStateBuilder::pathSegmentIndex() -{ - ASSERT(m_traversalState); - return m_traversalState->m_segmentIndex; + return !m_traversalState.success(); } -float SVGPathTraversalStateBuilder::totalLength() +float SVGPathTraversalStateBuilder::totalLength() const { - ASSERT(m_traversalState); - return m_traversalState->m_totalLength; + return m_traversalState.totalLength(); } -SVGPoint SVGPathTraversalStateBuilder::currentPoint() +FloatPoint SVGPathTraversalStateBuilder::currentPoint() const { - ASSERT(m_traversalState); - return m_traversalState->m_current; + return m_traversalState.current(); } } - -#endif // ENABLE(SVG) |