OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxgraphics/cfx_path.h" | 7 #include "xfa/fxgraphics/cfx_path.h" |
8 | 8 |
9 #include "xfa/fxgraphics/cfx_path_generator.h" | 9 #include "xfa/fxgraphics/cfx_path_generator.h" |
10 | 10 |
11 CFX_Path::CFX_Path() { | 11 CFX_Path::CFX_Path() { |
12 m_generator = nullptr; | 12 m_generator = nullptr; |
13 } | 13 } |
14 | 14 |
15 FX_ERR CFX_Path::Create() { | 15 FWL_Error CFX_Path::Create() { |
16 if (m_generator) | 16 if (m_generator) |
17 return FX_ERR_Property_Invalid; | 17 return FWL_Error::PropertyInvalid; |
18 | 18 |
19 m_generator = new CFX_PathGenerator; | 19 m_generator = new CFX_PathGenerator; |
20 m_generator->Create(); | 20 m_generator->Create(); |
21 return FX_ERR_Succeeded; | 21 return FWL_Error::Succeeded; |
22 } | 22 } |
23 | 23 |
24 CFX_Path::~CFX_Path() { | 24 CFX_Path::~CFX_Path() { |
25 delete m_generator; | 25 delete m_generator; |
26 } | 26 } |
27 | 27 |
28 FX_ERR CFX_Path::MoveTo(FX_FLOAT x, FX_FLOAT y) { | 28 FWL_Error CFX_Path::MoveTo(FX_FLOAT x, FX_FLOAT y) { |
29 if (!m_generator) | 29 if (!m_generator) |
30 return FX_ERR_Property_Invalid; | 30 return FWL_Error::PropertyInvalid; |
31 m_generator->MoveTo(x, y); | 31 m_generator->MoveTo(x, y); |
32 return FX_ERR_Succeeded; | 32 return FWL_Error::Succeeded; |
33 } | 33 } |
34 | 34 |
35 FX_ERR CFX_Path::LineTo(FX_FLOAT x, FX_FLOAT y) { | 35 FWL_Error CFX_Path::LineTo(FX_FLOAT x, FX_FLOAT y) { |
36 if (!m_generator) | 36 if (!m_generator) |
37 return FX_ERR_Property_Invalid; | 37 return FWL_Error::PropertyInvalid; |
38 m_generator->LineTo(x, y); | 38 m_generator->LineTo(x, y); |
39 return FX_ERR_Succeeded; | 39 return FWL_Error::Succeeded; |
40 } | 40 } |
41 | 41 |
42 FX_ERR CFX_Path::BezierTo(FX_FLOAT ctrlX1, | 42 FWL_Error CFX_Path::BezierTo(FX_FLOAT ctrlX1, |
43 FX_FLOAT ctrlY1, | 43 FX_FLOAT ctrlY1, |
44 FX_FLOAT ctrlX2, | 44 FX_FLOAT ctrlX2, |
45 FX_FLOAT ctrlY2, | 45 FX_FLOAT ctrlY2, |
46 FX_FLOAT toX, | 46 FX_FLOAT toX, |
47 FX_FLOAT toY) { | 47 FX_FLOAT toY) { |
48 if (!m_generator) | 48 if (!m_generator) |
49 return FX_ERR_Property_Invalid; | 49 return FWL_Error::PropertyInvalid; |
50 m_generator->BezierTo(ctrlX1, ctrlY1, ctrlX2, ctrlY2, toX, toY); | 50 m_generator->BezierTo(ctrlX1, ctrlY1, ctrlX2, ctrlY2, toX, toY); |
51 return FX_ERR_Succeeded; | 51 return FWL_Error::Succeeded; |
52 } | 52 } |
53 | 53 |
54 FX_ERR CFX_Path::ArcTo(FX_FLOAT left, | 54 FWL_Error CFX_Path::ArcTo(FX_FLOAT left, |
55 FX_FLOAT top, | 55 FX_FLOAT top, |
56 FX_FLOAT width, | 56 FX_FLOAT width, |
57 FX_FLOAT height, | 57 FX_FLOAT height, |
58 FX_FLOAT startAngle, | 58 FX_FLOAT startAngle, |
59 FX_FLOAT sweepAngle) { | 59 FX_FLOAT sweepAngle) { |
60 if (!m_generator) | 60 if (!m_generator) |
61 return FX_ERR_Property_Invalid; | 61 return FWL_Error::PropertyInvalid; |
62 m_generator->ArcTo(left + width / 2, top + height / 2, width / 2, height / 2, | 62 m_generator->ArcTo(left + width / 2, top + height / 2, width / 2, height / 2, |
63 startAngle, sweepAngle); | 63 startAngle, sweepAngle); |
64 return FX_ERR_Succeeded; | 64 return FWL_Error::Succeeded; |
65 } | 65 } |
66 | 66 |
67 FX_ERR CFX_Path::Close() { | 67 FWL_Error CFX_Path::Close() { |
68 if (!m_generator) | 68 if (!m_generator) |
69 return FX_ERR_Property_Invalid; | 69 return FWL_Error::PropertyInvalid; |
70 m_generator->Close(); | 70 m_generator->Close(); |
71 return FX_ERR_Succeeded; | 71 return FWL_Error::Succeeded; |
72 } | 72 } |
73 | 73 |
74 FX_ERR CFX_Path::AddLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2) { | 74 FWL_Error CFX_Path::AddLine(FX_FLOAT x1, |
| 75 FX_FLOAT y1, |
| 76 FX_FLOAT x2, |
| 77 FX_FLOAT y2) { |
75 if (!m_generator) | 78 if (!m_generator) |
76 return FX_ERR_Property_Invalid; | 79 return FWL_Error::PropertyInvalid; |
77 m_generator->AddLine(x1, y1, x2, y2); | 80 m_generator->AddLine(x1, y1, x2, y2); |
78 return FX_ERR_Succeeded; | 81 return FWL_Error::Succeeded; |
79 } | 82 } |
80 | 83 |
81 FX_ERR CFX_Path::AddBezier(FX_FLOAT startX, | 84 FWL_Error CFX_Path::AddBezier(FX_FLOAT startX, |
82 FX_FLOAT startY, | 85 FX_FLOAT startY, |
83 FX_FLOAT ctrlX1, | 86 FX_FLOAT ctrlX1, |
84 FX_FLOAT ctrlY1, | 87 FX_FLOAT ctrlY1, |
85 FX_FLOAT ctrlX2, | 88 FX_FLOAT ctrlX2, |
86 FX_FLOAT ctrlY2, | 89 FX_FLOAT ctrlY2, |
87 FX_FLOAT endX, | 90 FX_FLOAT endX, |
88 FX_FLOAT endY) { | 91 FX_FLOAT endY) { |
89 if (!m_generator) | 92 if (!m_generator) |
90 return FX_ERR_Property_Invalid; | 93 return FWL_Error::PropertyInvalid; |
91 m_generator->AddBezier(startX, startY, ctrlX1, ctrlY1, ctrlX2, ctrlY2, endX, | 94 m_generator->AddBezier(startX, startY, ctrlX1, ctrlY1, ctrlX2, ctrlY2, endX, |
92 endY); | 95 endY); |
93 return FX_ERR_Succeeded; | 96 return FWL_Error::Succeeded; |
94 } | 97 } |
95 | 98 |
96 FX_ERR CFX_Path::AddRectangle(FX_FLOAT left, | 99 FWL_Error CFX_Path::AddRectangle(FX_FLOAT left, |
97 FX_FLOAT top, | 100 FX_FLOAT top, |
98 FX_FLOAT width, | 101 FX_FLOAT width, |
99 FX_FLOAT height) { | 102 FX_FLOAT height) { |
100 if (!m_generator) | 103 if (!m_generator) |
101 return FX_ERR_Property_Invalid; | 104 return FWL_Error::PropertyInvalid; |
102 m_generator->AddRectangle(left, top, left + width, top + height); | 105 m_generator->AddRectangle(left, top, left + width, top + height); |
103 return FX_ERR_Succeeded; | 106 return FWL_Error::Succeeded; |
104 } | 107 } |
105 | 108 |
106 FX_ERR CFX_Path::AddEllipse(FX_FLOAT left, | 109 FWL_Error CFX_Path::AddEllipse(FX_FLOAT left, |
107 FX_FLOAT top, | 110 FX_FLOAT top, |
108 FX_FLOAT width, | 111 FX_FLOAT width, |
109 FX_FLOAT height) { | 112 FX_FLOAT height) { |
110 if (!m_generator) | 113 if (!m_generator) |
111 return FX_ERR_Property_Invalid; | 114 return FWL_Error::PropertyInvalid; |
112 m_generator->AddEllipse(left + width / 2, top + height / 2, width / 2, | 115 m_generator->AddEllipse(left + width / 2, top + height / 2, width / 2, |
113 height / 2); | 116 height / 2); |
114 return FX_ERR_Succeeded; | 117 return FWL_Error::Succeeded; |
115 } | 118 } |
116 | 119 |
117 FX_ERR CFX_Path::AddEllipse(const CFX_RectF& rect) { | 120 FWL_Error CFX_Path::AddEllipse(const CFX_RectF& rect) { |
118 if (!m_generator) | 121 if (!m_generator) |
119 return FX_ERR_Property_Invalid; | 122 return FWL_Error::PropertyInvalid; |
120 m_generator->AddEllipse(rect.left + rect.Width() / 2, | 123 m_generator->AddEllipse(rect.left + rect.Width() / 2, |
121 rect.top + rect.Height() / 2, rect.Width() / 2, | 124 rect.top + rect.Height() / 2, rect.Width() / 2, |
122 rect.Height() / 2); | 125 rect.Height() / 2); |
123 return FX_ERR_Succeeded; | 126 return FWL_Error::Succeeded; |
124 } | 127 } |
125 | 128 |
126 FX_ERR CFX_Path::AddArc(FX_FLOAT left, | 129 FWL_Error CFX_Path::AddArc(FX_FLOAT left, |
127 FX_FLOAT top, | 130 FX_FLOAT top, |
128 FX_FLOAT width, | 131 FX_FLOAT width, |
129 FX_FLOAT height, | 132 FX_FLOAT height, |
130 FX_FLOAT startAngle, | 133 FX_FLOAT startAngle, |
131 FX_FLOAT sweepAngle) { | 134 FX_FLOAT sweepAngle) { |
132 if (!m_generator) | 135 if (!m_generator) |
133 return FX_ERR_Property_Invalid; | 136 return FWL_Error::PropertyInvalid; |
134 m_generator->AddArc(left + width / 2, top + height / 2, width / 2, height / 2, | 137 m_generator->AddArc(left + width / 2, top + height / 2, width / 2, height / 2, |
135 startAngle, sweepAngle); | 138 startAngle, sweepAngle); |
136 return FX_ERR_Succeeded; | 139 return FWL_Error::Succeeded; |
137 } | 140 } |
138 | 141 |
139 FX_ERR CFX_Path::AddPie(FX_FLOAT left, | 142 FWL_Error CFX_Path::AddPie(FX_FLOAT left, |
140 FX_FLOAT top, | 143 FX_FLOAT top, |
141 FX_FLOAT width, | 144 FX_FLOAT width, |
142 FX_FLOAT height, | 145 FX_FLOAT height, |
143 FX_FLOAT startAngle, | 146 FX_FLOAT startAngle, |
144 FX_FLOAT sweepAngle) { | 147 FX_FLOAT sweepAngle) { |
145 if (!m_generator) | 148 if (!m_generator) |
146 return FX_ERR_Property_Invalid; | 149 return FWL_Error::PropertyInvalid; |
147 m_generator->AddPie(left + width / 2, top + height / 2, width / 2, height / 2, | 150 m_generator->AddPie(left + width / 2, top + height / 2, width / 2, height / 2, |
148 startAngle, sweepAngle); | 151 startAngle, sweepAngle); |
149 return FX_ERR_Succeeded; | 152 return FWL_Error::Succeeded; |
150 } | 153 } |
151 | 154 |
152 FX_ERR CFX_Path::AddSubpath(CFX_Path* path) { | 155 FWL_Error CFX_Path::AddSubpath(CFX_Path* path) { |
153 if (!m_generator) | 156 if (!m_generator) |
154 return FX_ERR_Property_Invalid; | 157 return FWL_Error::PropertyInvalid; |
155 m_generator->AddPathData(path->GetPathData()); | 158 m_generator->AddPathData(path->GetPathData()); |
156 return FX_ERR_Succeeded; | 159 return FWL_Error::Succeeded; |
157 } | 160 } |
158 | 161 |
159 FX_ERR CFX_Path::Clear() { | 162 FWL_Error CFX_Path::Clear() { |
160 if (!m_generator) | 163 if (!m_generator) |
161 return FX_ERR_Property_Invalid; | 164 return FWL_Error::PropertyInvalid; |
162 m_generator->GetPathData()->SetPointCount(0); | 165 m_generator->GetPathData()->SetPointCount(0); |
163 return FX_ERR_Succeeded; | 166 return FWL_Error::Succeeded; |
164 } | 167 } |
165 | 168 |
166 FX_BOOL CFX_Path::IsEmpty() { | 169 FX_BOOL CFX_Path::IsEmpty() { |
167 if (!m_generator) | 170 if (!m_generator) |
168 return FX_ERR_Property_Invalid; | 171 return FALSE; |
169 if (m_generator->GetPathData()->GetPointCount() == 0) { | 172 if (m_generator->GetPathData()->GetPointCount() == 0) |
170 return TRUE; | 173 return TRUE; |
171 } | |
172 return FALSE; | 174 return FALSE; |
173 } | 175 } |
174 | 176 |
175 CFX_PathData* CFX_Path::GetPathData() { | 177 CFX_PathData* CFX_Path::GetPathData() { |
176 if (!m_generator) | 178 if (!m_generator) |
177 return nullptr; | 179 return nullptr; |
178 return m_generator->GetPathData(); | 180 return m_generator->GetPathData(); |
179 } | 181 } |
OLD | NEW |