KHtml

PathTraversalState.h
1 /*
2  * Copyright (C) 2006, 2007 Eric Seidel <[email protected]>
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef PathTraversalState_h
27 #define PathTraversalState_h
28 
29 #include "FloatPoint.h"
30 #include <wtf/Vector.h>
31 
32 namespace khtml
33 {
34 class Path;
35 }
36 
37 namespace WebCore
38 {
39 typedef khtml::Path Path;
40 
41 class PathTraversalState
42 {
43 public:
44  enum PathTraversalAction {
45  TraversalTotalLength,
46  TraversalPointAtLength,
47  TraversalSegmentAtLength,
48  TraversalNormalAngleAtLength
49  };
50 
51  PathTraversalState(PathTraversalAction);
52 
53  float closeSubpath();
54  float moveTo(const FloatPoint &);
55  float lineTo(const FloatPoint &);
56  float quadraticBezierTo(const FloatPoint &newControl, const FloatPoint &newEnd);
57  float cubicBezierTo(const FloatPoint &newControl1, const FloatPoint &newControl2, const FloatPoint &newEnd);
58 
59 public:
60  PathTraversalAction m_action;
61  bool m_success;
62 
63  FloatPoint m_current;
64  FloatPoint m_start;
65  FloatPoint m_control1;
66  FloatPoint m_control2;
67 
68  float m_totalLength;
69  unsigned m_segmentIndex;
70  float m_desiredLength;
71 
72  // For normal calculations
73  FloatPoint m_previous;
74  float m_normalAngle; // degrees
75 };
76 }
77 
78 #endif
This file is part of the HTML rendering engine for KDE.
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Tue Oct 26 2021 22:48:06 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.