| Index: Source/core/svg/SVGPathByteStreamBuilder.cpp
|
| diff --git a/Source/core/svg/SVGPathByteStreamBuilder.cpp b/Source/core/svg/SVGPathByteStreamBuilder.cpp
|
| index fa163fdb4cbb8ee88e3c2e6aac6b22fc29b077d3..bda268b82f0a76a0f08ff5a75d9b94a15e1bf2a8 100644
|
| --- a/Source/core/svg/SVGPathByteStreamBuilder.cpp
|
| +++ b/Source/core/svg/SVGPathByteStreamBuilder.cpp
|
| @@ -18,11 +18,11 @@
|
| */
|
|
|
| #include "config.h"
|
| -
|
| #include "core/svg/SVGPathByteStreamBuilder.h"
|
|
|
| +#include "core/svg/SVGPathByteStream.h"
|
| #include "core/svg/SVGPathSeg.h"
|
| -#include "wtf/OwnPtr.h"
|
| +#include "platform/geometry/FloatPoint.h"
|
|
|
| namespace blink {
|
|
|
| @@ -73,82 +73,57 @@ SVGPathByteStreamBuilder::SVGPathByteStreamBuilder(SVGPathByteStream& byteStream
|
| {
|
| }
|
|
|
| -void SVGPathByteStreamBuilder::moveTo(const FloatPoint& targetPoint, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegMoveToRel : PathSegMoveToAbs);
|
| - buffer.writeFloatPoint(targetPoint);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::lineTo(const FloatPoint& targetPoint, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegLineToRel : PathSegLineToAbs);
|
| - buffer.writeFloatPoint(targetPoint);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::lineToHorizontal(float x, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegLineToHorizontalRel : PathSegLineToHorizontalAbs);
|
| - buffer.writeFloat(x);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::lineToVertical(float y, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegLineToVerticalRel : PathSegLineToVerticalAbs);
|
| - buffer.writeFloat(y);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::curveToCubic(const FloatPoint& point1, const FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegCurveToCubicRel : PathSegCurveToCubicAbs);
|
| - buffer.writeFloatPoint(point1);
|
| - buffer.writeFloatPoint(point2);
|
| - buffer.writeFloatPoint(targetPoint);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::curveToCubicSmooth(const FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegCurveToCubicSmoothRel : PathSegCurveToCubicSmoothAbs);
|
| - buffer.writeFloatPoint(point2);
|
| - buffer.writeFloatPoint(targetPoint);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::curveToQuadratic(const FloatPoint& point1, const FloatPoint& targetPoint, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegCurveToQuadraticRel : PathSegCurveToQuadraticAbs);
|
| - buffer.writeFloatPoint(point1);
|
| - buffer.writeFloatPoint(targetPoint);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::curveToQuadraticSmooth(const FloatPoint& targetPoint, PathCoordinateMode mode)
|
| +void SVGPathByteStreamBuilder::emitSegment(const PathSegmentData& segment)
|
| {
|
| CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegCurveToQuadraticSmoothRel : PathSegCurveToQuadraticSmoothAbs);
|
| - buffer.writeFloatPoint(targetPoint);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::arcTo(float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, const FloatPoint& targetPoint, PathCoordinateMode mode)
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(mode == RelativeCoordinates ? PathSegArcRel : PathSegArcAbs);
|
| - buffer.writeFloat(r1);
|
| - buffer.writeFloat(r2);
|
| - buffer.writeFloat(angle);
|
| - buffer.writeFlag(largeArcFlag);
|
| - buffer.writeFlag(sweepFlag);
|
| - buffer.writeFloatPoint(targetPoint);
|
| -}
|
| -
|
| -void SVGPathByteStreamBuilder::closePath()
|
| -{
|
| - CoalescingBuffer buffer(m_byteStream);
|
| - buffer.writeSegmentType(PathSegClosePath);
|
| + buffer.writeSegmentType(segment.command);
|
| +
|
| + switch (segment.command) {
|
| + case PathSegMoveToRel:
|
| + case PathSegMoveToAbs:
|
| + case PathSegLineToRel:
|
| + case PathSegLineToAbs:
|
| + case PathSegCurveToQuadraticSmoothRel:
|
| + case PathSegCurveToQuadraticSmoothAbs:
|
| + buffer.writeFloatPoint(segment.targetPoint);
|
| + break;
|
| + case PathSegLineToHorizontalRel:
|
| + case PathSegLineToHorizontalAbs:
|
| + buffer.writeFloat(segment.targetPoint.x());
|
| + break;
|
| + case PathSegLineToVerticalRel:
|
| + case PathSegLineToVerticalAbs:
|
| + buffer.writeFloat(segment.targetPoint.y());
|
| + break;
|
| + case PathSegClosePath:
|
| + break;
|
| + case PathSegCurveToCubicRel:
|
| + case PathSegCurveToCubicAbs:
|
| + buffer.writeFloatPoint(segment.point1);
|
| + buffer.writeFloatPoint(segment.point2);
|
| + buffer.writeFloatPoint(segment.targetPoint);
|
| + break;
|
| + case PathSegCurveToCubicSmoothRel:
|
| + case PathSegCurveToCubicSmoothAbs:
|
| + buffer.writeFloatPoint(segment.point2);
|
| + buffer.writeFloatPoint(segment.targetPoint);
|
| + break;
|
| + case PathSegCurveToQuadraticRel:
|
| + case PathSegCurveToQuadraticAbs:
|
| + buffer.writeFloatPoint(segment.point1);
|
| + buffer.writeFloatPoint(segment.targetPoint);
|
| + break;
|
| + case PathSegArcRel:
|
| + case PathSegArcAbs:
|
| + buffer.writeFloatPoint(segment.point1);
|
| + buffer.writeFloat(segment.point2.x());
|
| + buffer.writeFlag(segment.arcLarge);
|
| + buffer.writeFlag(segment.arcSweep);
|
| + buffer.writeFloatPoint(segment.targetPoint);
|
| + break;
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| }
|
|
|
| } // namespace blink
|
|
|