bool SVGPathByteStreamSource::parseCurveToCubicSegment(FloatPoint& point1, FloatPoint& point2, FloatPoint& targetPoint) { point1 = readFloatPoint(); point2 = readFloatPoint(); targetPoint = readFloatPoint(); return true; }
bool SVGPathByteStreamSource::parseArcToSegment(float& rx, float& ry, float& angle, bool& largeArc, bool& sweep, FloatPoint& targetPoint) { rx = readFloat(); ry = readFloat(); angle = readFloat(); largeArc = readFlag(); sweep = readFlag(); targetPoint = readFloatPoint(); return true; }
PathSegmentData SVGPathByteStreamSource::parseSegment() { ASSERT(hasMoreData()); PathSegmentData segment; segment.command = static_cast<SVGPathSegType>(readSVGSegmentType()); switch (segment.command) { case PathSegCurveToCubicRel: case PathSegCurveToCubicAbs: segment.point1 = readFloatPoint(); /* fall through */ case PathSegCurveToCubicSmoothRel: case PathSegCurveToCubicSmoothAbs: segment.point2 = readFloatPoint(); /* fall through */ case PathSegMoveToRel: case PathSegMoveToAbs: case PathSegLineToRel: case PathSegLineToAbs: case PathSegCurveToQuadraticSmoothRel: case PathSegCurveToQuadraticSmoothAbs: segment.targetPoint = readFloatPoint(); break; case PathSegLineToHorizontalRel: case PathSegLineToHorizontalAbs: segment.targetPoint.setX(readFloat()); break; case PathSegLineToVerticalRel: case PathSegLineToVerticalAbs: segment.targetPoint.setY(readFloat()); break; case PathSegClosePath: break; case PathSegCurveToQuadraticRel: case PathSegCurveToQuadraticAbs: segment.point1 = readFloatPoint(); segment.targetPoint = readFloatPoint(); break; case PathSegArcRel: case PathSegArcAbs: { segment.arcRadii() = readFloatPoint(); segment.setArcAngle(readFloat()); segment.arcLarge = readFlag(); segment.arcSweep = readFlag(); segment.targetPoint = readFloatPoint(); break; } default: ASSERT_NOT_REACHED(); } return segment; }
bool SVGPathByteStreamSource::parseLineToSegment(FloatPoint& targetPoint) { targetPoint = readFloatPoint(); return true; }
bool SVGPathByteStreamSource::parseCurveToQuadraticSmoothSegment(FloatPoint& targetPoint) { targetPoint = readFloatPoint(); return true; }