Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: third_party/WebKit/Source/core/svg/SVGPathBuilder.h

Issue 1623073003: [SVG] Paint unnormalized paths (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: missed review comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef SVGPathBuilder_h 24 #ifndef SVGPathBuilder_h
25 #define SVGPathBuilder_h 25 #define SVGPathBuilder_h
26 26
27 #include "core/svg/SVGPathConsumer.h" 27 #include "core/svg/SVGPathConsumer.h"
28 #include "core/svg/SVGPathData.h"
29 #include "platform/geometry/FloatPoint.h"
28 30
29 namespace blink { 31 namespace blink {
30 32
33 class FloatSize;
31 class Path; 34 class Path;
32 35
33 class SVGPathBuilder final : public SVGPathConsumer { 36 class SVGPathBuilder final : public SVGPathConsumer {
34 public: 37 public:
35 SVGPathBuilder(Path& path) : m_path(path) { } 38 SVGPathBuilder(Path& path)
39 : m_path(path)
40 // Starting in ClosePath state ensures correct handling of the first mov eTo.
41 , m_lastCommand(PathSegClosePath)
42 { }
36 43
37 private: 44 private:
38 void emitSegment(const PathSegmentData&) override; 45 void emitSegment(const PathSegmentData&) override;
39 46
47 void emitClose();
48 void emitMoveTo(const FloatPoint&);
49 void emitLineTo(const FloatPoint&);
50 void emitQuadTo(const FloatPoint&, const FloatPoint&);
51 void emitSmoothQuadTo(const FloatPoint&);
52 void emitCubicTo(const FloatPoint&, const FloatPoint&, const FloatPoint&);
53 void emitSmoothCubicTo(const FloatPoint&, const FloatPoint&);
54 void emitArcTo(const FloatPoint&, const FloatSize&, float, bool largeArc, bo ol sweep);
55
56 FloatPoint smoothControl(bool isSmooth) const;
57
40 Path& m_path; 58 Path& m_path;
59
60 SVGPathSegType m_lastCommand;
61 FloatPoint m_subpathPoint;
62 FloatPoint m_currentPoint;
63 FloatPoint m_lastControlPoint;
41 }; 64 };
42 65
43 } // namespace blink 66 } // namespace blink
44 67
45 #endif // SVGPathBuilder_h 68 #endif // SVGPathBuilder_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/svg/SVGMarkerData.h ('k') | third_party/WebKit/Source/core/svg/SVGPathBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698