• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) Research In Motion Limited 2010. All rights reserved.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19 
20 #include "config.h"
21 
22 #if ENABLE(SVG)
23 #include "SVGPathByteStreamSource.h"
24 
25 namespace WebCore {
26 
SVGPathByteStreamSource(SVGPathByteStream * stream)27 SVGPathByteStreamSource::SVGPathByteStreamSource(SVGPathByteStream* stream)
28     : m_stream(stream)
29 {
30     ASSERT(stream);
31     m_streamCurrent = stream->begin();
32     m_streamEnd = stream->end();
33 }
34 
hasMoreData() const35 bool SVGPathByteStreamSource::hasMoreData() const
36 {
37     return m_streamCurrent < m_streamEnd;
38 }
39 
parseSVGSegmentType(SVGPathSegType & pathSegType)40 bool SVGPathByteStreamSource::parseSVGSegmentType(SVGPathSegType& pathSegType)
41 {
42     pathSegType = static_cast<SVGPathSegType>(readSVGSegmentType());
43     return true;
44 }
45 
nextCommand(SVGPathSegType)46 SVGPathSegType SVGPathByteStreamSource::nextCommand(SVGPathSegType)
47 {
48     return static_cast<SVGPathSegType>(readSVGSegmentType());
49 }
50 
parseMoveToSegment(FloatPoint & targetPoint)51 bool SVGPathByteStreamSource::parseMoveToSegment(FloatPoint& targetPoint)
52 {
53     targetPoint = readFloatPoint();
54     return true;
55 }
56 
parseLineToSegment(FloatPoint & targetPoint)57 bool SVGPathByteStreamSource::parseLineToSegment(FloatPoint& targetPoint)
58 {
59     targetPoint = readFloatPoint();
60     return true;
61 }
62 
parseLineToHorizontalSegment(float & x)63 bool SVGPathByteStreamSource::parseLineToHorizontalSegment(float& x)
64 {
65     x = readFloat();
66     return true;
67 }
68 
parseLineToVerticalSegment(float & y)69 bool SVGPathByteStreamSource::parseLineToVerticalSegment(float& y)
70 {
71     y = readFloat();
72     return true;
73 }
74 
parseCurveToCubicSegment(FloatPoint & point1,FloatPoint & point2,FloatPoint & targetPoint)75 bool SVGPathByteStreamSource::parseCurveToCubicSegment(FloatPoint& point1, FloatPoint& point2, FloatPoint& targetPoint)
76 {
77     point1 = readFloatPoint();
78     point2 = readFloatPoint();
79     targetPoint = readFloatPoint();
80     return true;
81 }
82 
parseCurveToCubicSmoothSegment(FloatPoint & point2,FloatPoint & targetPoint)83 bool SVGPathByteStreamSource::parseCurveToCubicSmoothSegment(FloatPoint& point2, FloatPoint& targetPoint)
84 {
85     point2 = readFloatPoint();
86     targetPoint = readFloatPoint();
87     return true;
88 }
89 
parseCurveToQuadraticSegment(FloatPoint & point1,FloatPoint & targetPoint)90 bool SVGPathByteStreamSource::parseCurveToQuadraticSegment(FloatPoint& point1, FloatPoint& targetPoint)
91 {
92     point1 = readFloatPoint();
93     targetPoint = readFloatPoint();
94     return true;
95 }
96 
parseCurveToQuadraticSmoothSegment(FloatPoint & targetPoint)97 bool SVGPathByteStreamSource::parseCurveToQuadraticSmoothSegment(FloatPoint& targetPoint)
98 {
99     targetPoint = readFloatPoint();
100     return true;
101 }
102 
parseArcToSegment(float & rx,float & ry,float & angle,bool & largeArc,bool & sweep,FloatPoint & targetPoint)103 bool SVGPathByteStreamSource::parseArcToSegment(float& rx, float& ry, float& angle, bool& largeArc, bool& sweep, FloatPoint& targetPoint)
104 {
105     rx = readFloat();
106     ry = readFloat();
107     angle = readFloat();
108     largeArc = readFlag();
109     sweep = readFlag();
110     targetPoint = readFloatPoint();
111     return true;
112 }
113 
114 }
115 
116 #endif // ENABLE(SVG)
117