OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2002, 2003 The Karbon Developers | 2 * Copyright (C) 2002, 2003 The Karbon Developers |
3 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org> | 3 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org> |
4 * Copyright (C) 2006, 2007 Rob Buis <buis@kde.org> | 4 * Copyright (C) 2006, 2007 Rob Buis <buis@kde.org> |
5 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. | 5 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. |
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
11 * version 2 of the License, or (at your option) any later version. | 11 * version 2 of the License, or (at your option) any later version. |
12 * | 12 * |
13 * This library is distributed in the hope that it will be useful, | 13 * This library is distributed in the hope that it will be useful, |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 * Library General Public License for more details. | 16 * Library General Public License for more details. |
17 * | 17 * |
18 * You should have received a copy of the GNU Library General Public License | 18 * You should have received a copy of the GNU Library General Public License |
19 * along with this library; see the file COPYING.LIB. If not, write to | 19 * along with this library; see the file COPYING.LIB. If not, write to |
20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
21 * Boston, MA 02110-1301, USA. | 21 * Boston, MA 02110-1301, USA. |
22 */ | 22 */ |
23 | 23 |
24 #include "config.h" | 24 #include "config.h" |
25 #include "core/svg/SVGPathBuilder.h" | 25 #include "core/svg/SVGPathBuilder.h" |
26 | 26 |
| 27 #include "core/svg/SVGPathSeg.h" |
27 #include "platform/graphics/Path.h" | 28 #include "platform/graphics/Path.h" |
28 | 29 |
29 namespace blink { | 30 namespace blink { |
30 | 31 |
31 void SVGPathBuilder::moveTo(const FloatPoint& targetPoint, PathCoordinateMode mo
de) | 32 void SVGPathBuilder::emitSegment(const PathSegmentData& segment) |
32 { | 33 { |
33 ASSERT(mode == AbsoluteCoordinates); | 34 switch (segment.command) { |
34 if (m_closed && !m_path.isEmpty()) | 35 case PathSegMoveToAbs: |
35 closePath(); | 36 if (m_closed && !m_path.isEmpty()) |
36 m_path.moveTo(targetPoint); | 37 m_path.closeSubpath(); |
37 m_closed = false; | 38 m_path.moveTo(segment.targetPoint); |
38 } | 39 m_closed = false; |
39 | 40 break; |
40 void SVGPathBuilder::lineTo(const FloatPoint& targetPoint, PathCoordinateMode mo
de) | 41 case PathSegLineToAbs: |
41 { | 42 m_path.addLineTo(segment.targetPoint); |
42 ASSERT(mode == AbsoluteCoordinates); | 43 break; |
43 m_path.addLineTo(targetPoint); | 44 case PathSegClosePath: |
44 } | 45 m_path.closeSubpath(); |
45 | 46 m_closed = true; |
46 void SVGPathBuilder::curveToCubic(const FloatPoint& point1, const FloatPoint& po
int2, const FloatPoint& targetPoint, PathCoordinateMode mode) | 47 break; |
47 { | 48 case PathSegCurveToCubicAbs: |
48 ASSERT(mode == AbsoluteCoordinates); | 49 m_path.addBezierCurveTo(segment.point1, segment.point2, segment.targetPo
int); |
49 m_path.addBezierCurveTo(point1, point2, targetPoint); | 50 break; |
50 } | 51 default: |
51 | 52 ASSERT_NOT_REACHED(); |
52 void SVGPathBuilder::closePath() | 53 } |
53 { | |
54 m_path.closeSubpath(); | |
55 m_closed = true; | |
56 } | 54 } |
57 | 55 |
58 } | 56 } |
OLD | NEW |