OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> |
3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> | 4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> |
5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
11 * | 11 * |
12 * This library is distributed in the hope that it will be useful, | 12 * This library is distributed in the hope that it will be useful, |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 * Library General Public License for more details. | 15 * Library General Public License for more details. |
16 * | 16 * |
17 * You should have received a copy of the GNU Library General Public License | 17 * You should have received a copy of the GNU Library General Public License |
18 * along with this library; see the file COPYING.LIB. If not, write to | 18 * along with this library; see the file COPYING.LIB. If not, write to |
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 * Boston, MA 02110-1301, USA. | 20 * Boston, MA 02110-1301, USA. |
21 */ | 21 */ |
22 | 22 |
23 #include "config.h" | 23 #include "config.h" |
24 #include "platform/graphics/PathTraversalState.h" | 24 #include "platform/graphics/PathTraversalState.h" |
25 | 25 |
26 #include "core/svg/SVGPathTraversalStateBuilder.h" | 26 #include "core/svg/SVGPathTraversalStateBuilder.h" |
27 | 27 |
28 namespace blink { | 28 namespace blink { |
29 | 29 |
30 SVGPathTraversalStateBuilder::SVGPathTraversalStateBuilder() | 30 SVGPathTraversalStateBuilder::SVGPathTraversalStateBuilder(PathTraversalState& t
raversalState, float desiredLength) |
31 : m_traversalState(0) | 31 : m_traversalState(traversalState) |
32 { | 32 { |
| 33 m_traversalState.m_desiredLength = desiredLength; |
33 } | 34 } |
34 | 35 |
35 void SVGPathTraversalStateBuilder::moveTo(const FloatPoint& targetPoint, bool, P
athCoordinateMode) | 36 void SVGPathTraversalStateBuilder::moveTo(const FloatPoint& targetPoint, bool, P
athCoordinateMode) |
36 { | 37 { |
37 ASSERT(m_traversalState); | 38 m_traversalState.m_totalLength += m_traversalState.moveTo(targetPoint); |
38 m_traversalState->m_totalLength += m_traversalState->moveTo(targetPoint); | |
39 } | 39 } |
40 | 40 |
41 void SVGPathTraversalStateBuilder::lineTo(const FloatPoint& targetPoint, PathCoo
rdinateMode) | 41 void SVGPathTraversalStateBuilder::lineTo(const FloatPoint& targetPoint, PathCoo
rdinateMode) |
42 { | 42 { |
43 ASSERT(m_traversalState); | 43 m_traversalState.m_totalLength += m_traversalState.lineTo(targetPoint); |
44 m_traversalState->m_totalLength += m_traversalState->lineTo(targetPoint); | |
45 } | 44 } |
46 | 45 |
47 void SVGPathTraversalStateBuilder::curveToCubic(const FloatPoint& point1, const
FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode) | 46 void SVGPathTraversalStateBuilder::curveToCubic(const FloatPoint& point1, const
FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode) |
48 { | 47 { |
49 ASSERT(m_traversalState); | 48 m_traversalState.m_totalLength += m_traversalState.cubicBezierTo(point1, poi
nt2, targetPoint); |
50 m_traversalState->m_totalLength += m_traversalState->cubicBezierTo(point1, p
oint2, targetPoint); | |
51 } | 49 } |
52 | 50 |
53 void SVGPathTraversalStateBuilder::closePath() | 51 void SVGPathTraversalStateBuilder::closePath() |
54 { | 52 { |
55 ASSERT(m_traversalState); | 53 m_traversalState.m_totalLength += m_traversalState.closeSubpath(); |
56 m_traversalState->m_totalLength += m_traversalState->closeSubpath(); | |
57 } | |
58 | |
59 void SVGPathTraversalStateBuilder::setDesiredLength(float desiredLength) | |
60 { | |
61 ASSERT(m_traversalState); | |
62 m_traversalState->m_desiredLength = desiredLength; | |
63 } | 54 } |
64 | 55 |
65 bool SVGPathTraversalStateBuilder::continueConsuming() | 56 bool SVGPathTraversalStateBuilder::continueConsuming() |
66 { | 57 { |
67 ASSERT(m_traversalState); | 58 m_traversalState.processSegment(); |
68 m_traversalState->processSegment(); | 59 return !m_traversalState.m_success; |
69 return !m_traversalState->m_success; | |
70 } | 60 } |
71 | 61 |
72 void SVGPathTraversalStateBuilder::incrementPathSegmentCount() | 62 void SVGPathTraversalStateBuilder::incrementPathSegmentCount() |
73 { | 63 { |
74 ASSERT(m_traversalState); | 64 ++m_traversalState.m_segmentIndex; |
75 ++m_traversalState->m_segmentIndex; | |
76 } | 65 } |
77 | 66 |
78 unsigned SVGPathTraversalStateBuilder::pathSegmentIndex() | 67 unsigned SVGPathTraversalStateBuilder::pathSegmentIndex() |
79 { | 68 { |
80 ASSERT(m_traversalState); | 69 return m_traversalState.m_segmentIndex; |
81 return m_traversalState->m_segmentIndex; | |
82 } | 70 } |
83 | 71 |
84 float SVGPathTraversalStateBuilder::totalLength() | 72 float SVGPathTraversalStateBuilder::totalLength() |
85 { | 73 { |
86 ASSERT(m_traversalState); | 74 return m_traversalState.m_totalLength; |
87 return m_traversalState->m_totalLength; | |
88 } | 75 } |
89 | 76 |
90 FloatPoint SVGPathTraversalStateBuilder::currentPoint() | 77 FloatPoint SVGPathTraversalStateBuilder::currentPoint() |
91 { | 78 { |
92 ASSERT(m_traversalState); | 79 return m_traversalState.m_current; |
93 return m_traversalState->m_current; | |
94 } | 80 } |
95 | 81 |
96 } | 82 } |
OLD | NEW |