blob: 5af815005613ef2b3d9c35d19024f07917cec9b4 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
10#include "SkPathParts.h"
11#include "SkAnimateMaker.h"
12#include "SkDrawMatrix.h"
13#include "SkDrawRectangle.h"
14#include "SkDrawPath.h"
15
16SkPathPart::SkPathPart() : fPath(NULL) {
17}
18
19void SkPathPart::dirty() {
20 fPath->dirty();
21}
22
23SkDisplayable* SkPathPart::getParent() const {
24 return fPath;
25}
26
27bool SkPathPart::setParent(SkDisplayable* parent) {
28 SkASSERT(parent != NULL);
29 if (parent->isPath() == false)
30 return true;
31 fPath = (SkDrawPath*) parent;
32 return false;
33}
34
35// MoveTo
36#if SK_USE_CONDENSED_INFO == 0
37
38const SkMemberInfo SkMoveTo::fInfo[] = {
39 SK_MEMBER(x, Float),
40 SK_MEMBER(y, Float)
41};
42
43#endif
44
45DEFINE_GET_MEMBER(SkMoveTo);
46
47SkMoveTo::SkMoveTo() : x(0), y(0) {
48}
49
50bool SkMoveTo::add() {
51 fPath->fPath.moveTo(x, y);
52 return false;
53}
54
55
56// RMoveTo
57#if SK_USE_CONDENSED_INFO == 0
58
59const SkMemberInfo SkRMoveTo::fInfo[] = {
60 SK_MEMBER_INHERITED
61};
62
63#endif
64
65DEFINE_GET_MEMBER(SkRMoveTo);
66
67bool SkRMoveTo::add() {
68 fPath->fPath.rMoveTo(x, y);
69 return false;
70}
71
72
73// LineTo
74#if SK_USE_CONDENSED_INFO == 0
75
76const SkMemberInfo SkLineTo::fInfo[] = {
77 SK_MEMBER(x, Float),
78 SK_MEMBER(y, Float)
79};
80
81#endif
82
83DEFINE_GET_MEMBER(SkLineTo);
84
85SkLineTo::SkLineTo() : x(0), y(0) {
86}
87
88bool SkLineTo::add() {
89 fPath->fPath.lineTo(x, y);
90 return false;
91}
92
93
94// RLineTo
95#if SK_USE_CONDENSED_INFO == 0
96
97const SkMemberInfo SkRLineTo::fInfo[] = {
98 SK_MEMBER_INHERITED
99};
100
101#endif
102
103DEFINE_GET_MEMBER(SkRLineTo);
104
105bool SkRLineTo::add() {
106 fPath->fPath.rLineTo(x, y);
107 return false;
108}
109
110
111// QuadTo
112#if SK_USE_CONDENSED_INFO == 0
113
114const SkMemberInfo SkQuadTo::fInfo[] = {
115 SK_MEMBER(x1, Float),
116 SK_MEMBER(x2, Float),
117 SK_MEMBER(y1, Float),
118 SK_MEMBER(y2, Float)
119};
120
121#endif
122
123DEFINE_GET_MEMBER(SkQuadTo);
124
125SkQuadTo::SkQuadTo() : x1(0), y1(0), x2(0), y2(0) {
126}
127
128bool SkQuadTo::add() {
129 fPath->fPath.quadTo(x1, y1, x2, y2);
130 return false;
131}
132
133
134// RQuadTo
135#if SK_USE_CONDENSED_INFO == 0
136
137const SkMemberInfo SkRQuadTo::fInfo[] = {
138 SK_MEMBER_INHERITED
139};
140
141#endif
142
143DEFINE_GET_MEMBER(SkRQuadTo);
144
145bool SkRQuadTo::add() {
146 fPath->fPath.rQuadTo(x1, y1, x2, y2);
147 return false;
148}
149
150
151// CubicTo
152#if SK_USE_CONDENSED_INFO == 0
153
154const SkMemberInfo SkCubicTo::fInfo[] = {
155 SK_MEMBER(x1, Float),
156 SK_MEMBER(x2, Float),
157 SK_MEMBER(x3, Float),
158 SK_MEMBER(y1, Float),
159 SK_MEMBER(y2, Float),
160 SK_MEMBER(y3, Float)
161};
162
163#endif
164
165DEFINE_GET_MEMBER(SkCubicTo);
166
167SkCubicTo::SkCubicTo() : x1(0), y1(0), x2(0), y2(0), x3(0), y3(0) {
168}
169
170bool SkCubicTo::add() {
171 fPath->fPath.cubicTo(x1, y1, x2, y2, x3, y3);
172 return false;
173}
174
175
176// RCubicTo
177#if SK_USE_CONDENSED_INFO == 0
178
179const SkMemberInfo SkRCubicTo::fInfo[] = {
180 SK_MEMBER_INHERITED
181};
182
183#endif
184
185DEFINE_GET_MEMBER(SkRCubicTo);
186
187bool SkRCubicTo::add() {
188 fPath->fPath.rCubicTo(x1, y1, x2, y2, x3, y3);
189 return false;
190}
191
192
193// SkClose
194bool SkClose::add() {
195 fPath->fPath.close();
196 return false;
197}
198
199
200// SkAddGeom
201#if SK_USE_CONDENSED_INFO == 0
202
203const SkMemberInfo SkAddGeom::fInfo[] = {
204 SK_MEMBER(direction, PathDirection)
205};
206
207#endif
208
209DEFINE_GET_MEMBER(SkAddGeom);
210
211SkAddGeom::SkAddGeom() : direction(SkPath::kCCW_Direction) {
212}
213
214#if SK_USE_CONDENSED_INFO == 0
215
216const SkMemberInfo SkAddRect::fInfo[] = {
217 SK_MEMBER_INHERITED,
218 SK_MEMBER_ALIAS(bottom, fRect.fBottom, Float),
219 SK_MEMBER_ALIAS(left, fRect.fLeft, Float),
220 SK_MEMBER_ALIAS(right, fRect.fRight, Float),
221 SK_MEMBER_ALIAS(top, fRect.fTop, Float)
222};
223
224#endif
225
226DEFINE_GET_MEMBER(SkAddRect);
227
228SkAddRect::SkAddRect() {
229 fRect.setEmpty();
230}
231
232bool SkAddRect::add() {
233 fPath->fPath.addRect(fRect, (SkPath::Direction) direction);
234 return false;
235}
236
237
238#if SK_USE_CONDENSED_INFO == 0
239
240const SkMemberInfo SkAddOval::fInfo[] = {
241 SK_MEMBER_INHERITED
242};
243
244#endif
245
246DEFINE_GET_MEMBER(SkAddOval);
247
248bool SkAddOval::add() {
249 fPath->fPath.addOval(fRect, (SkPath::Direction) direction);
250 return false;
251}
252
253
254#if SK_USE_CONDENSED_INFO == 0
255
256const SkMemberInfo SkAddCircle::fInfo[] = {
257 SK_MEMBER_INHERITED,
258 SK_MEMBER(radius, Float),
259 SK_MEMBER(x, Float),
260 SK_MEMBER(y, Float)
261};
262
263#endif
264
265DEFINE_GET_MEMBER(SkAddCircle);
266
267SkAddCircle::SkAddCircle() : radius(0), x(0), y(0) {
268}
269
270bool SkAddCircle::add() {
271 fPath->fPath.addCircle(x, y, radius, (SkPath::Direction) direction);
272 return false;
273}
274
275
276#if SK_USE_CONDENSED_INFO == 0
277
278const SkMemberInfo SkAddRoundRect::fInfo[] = {
279 SK_MEMBER_INHERITED,
280 SK_MEMBER(rx, Float),
281 SK_MEMBER(ry, Float)
282};
283
284#endif
285
286DEFINE_GET_MEMBER(SkAddRoundRect);
287
288SkAddRoundRect::SkAddRoundRect() : rx(0), ry(0) {
289}
290
291bool SkAddRoundRect::add() {
292 fPath->fPath.addRoundRect(fRect, rx, ry, (SkPath::Direction) direction);
293 return false;
294}
295
296
297#if SK_USE_CONDENSED_INFO == 0
298
299const SkMemberInfo SkAddPath::fInfo[] = {
300 SK_MEMBER(matrix, Matrix),
301 SK_MEMBER(path, Path)
302};
303
304#endif
305
306DEFINE_GET_MEMBER(SkAddPath);
307
308SkAddPath::SkAddPath() : matrix(NULL), path(NULL) {
309}
310
311bool SkAddPath::add() {
312 SkASSERT (path != NULL);
313 if (matrix)
314 fPath->fPath.addPath(path->fPath, matrix->getMatrix());
315 else
316 fPath->fPath.addPath(path->fPath);
317 return false;
318}
319
320