blob: 72e41855de0841fa89dbfbe0b52fea1b8475ccc4 [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001/* libs/graphics/animator/SkPathParts.h
2**
3** Copyright 2006, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9** http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18#ifndef SkPathParts_DEFINED
19#define SkPathParts_DEFINED
20
21#include "SkDisplayable.h"
22#include "SkMemberInfo.h"
23#include "SkPath.h"
24
25class SkDrawPath;
26class SkDrawMatrix;
27
28class SkPathPart : public SkDisplayable {
29public:
30 SkPathPart();
31 virtual bool add() = 0;
32 virtual void dirty();
33 virtual SkDisplayable* getParent() const;
34 virtual bool setParent(SkDisplayable* parent);
35#ifdef SK_DEBUG
36 virtual bool isPathPart() const { return true; }
37#endif
38protected:
39 SkDrawPath* fPath;
40};
41
42class SkMoveTo : public SkPathPart {
43 DECLARE_MEMBER_INFO(MoveTo);
44 SkMoveTo();
45 virtual bool add();
46protected:
47 SkScalar x;
48 SkScalar y;
49};
50
51class SkRMoveTo : public SkMoveTo {
52 DECLARE_MEMBER_INFO(RMoveTo);
53 virtual bool add();
54private:
55 typedef SkMoveTo INHERITED;
56};
57
58class SkLineTo : public SkPathPart {
59 DECLARE_MEMBER_INFO(LineTo);
60 SkLineTo();
61 virtual bool add();
62protected:
63 SkScalar x;
64 SkScalar y;
65};
66
67class SkRLineTo : public SkLineTo {
68 DECLARE_MEMBER_INFO(RLineTo);
69 virtual bool add();
70private:
71 typedef SkLineTo INHERITED;
72};
73
74class SkQuadTo : public SkPathPart {
75 DECLARE_MEMBER_INFO(QuadTo);
76 SkQuadTo();
77 virtual bool add();
78protected:
79 SkScalar x1;
80 SkScalar y1;
81 SkScalar x2;
82 SkScalar y2;
83};
84
85class SkRQuadTo : public SkQuadTo {
86 DECLARE_MEMBER_INFO(RQuadTo);
87 virtual bool add();
88private:
89 typedef SkQuadTo INHERITED;
90};
91
92class SkCubicTo : public SkPathPart {
93 DECLARE_MEMBER_INFO(CubicTo);
94 SkCubicTo();
95 virtual bool add();
96protected:
97 SkScalar x1;
98 SkScalar y1;
99 SkScalar x2;
100 SkScalar y2;
101 SkScalar x3;
102 SkScalar y3;
103};
104
105class SkRCubicTo : public SkCubicTo {
106 DECLARE_MEMBER_INFO(RCubicTo);
107 virtual bool add();
108private:
109 typedef SkCubicTo INHERITED;
110};
111
112class SkClose : public SkPathPart {
113 DECLARE_EMPTY_MEMBER_INFO(Close);
114 virtual bool add();
115};
116
117class SkAddGeom : public SkPathPart {
118 DECLARE_PRIVATE_MEMBER_INFO(AddGeom);
119 SkAddGeom();
120protected:
121 int /*SkPath::Direction*/ direction;
122};
123
124class SkAddRect : public SkAddGeom {
125 DECLARE_MEMBER_INFO(AddRect);
126 SkAddRect();
127 virtual bool add();
128protected:
129 SkRect fRect;
130private:
131 typedef SkAddGeom INHERITED;
132};
133
134class SkAddOval : public SkAddRect {
135 DECLARE_MEMBER_INFO(AddOval);
136 virtual bool add();
137private:
138 typedef SkAddRect INHERITED;
139};
140
141class SkAddCircle : public SkAddGeom {
142 DECLARE_MEMBER_INFO(AddCircle);
143 SkAddCircle();
144 virtual bool add();
145private:
146 SkScalar radius;
147 SkScalar x;
148 SkScalar y;
149 typedef SkAddGeom INHERITED;
150};
151
152class SkAddRoundRect : public SkAddRect {
153 DECLARE_MEMBER_INFO(AddRoundRect);
154 SkAddRoundRect();
155 virtual bool add();
156private:
157 SkScalar rx;
158 SkScalar ry;
159 typedef SkAddRect INHERITED;
160};
161
162class SkAddPath : public SkPathPart {
163 DECLARE_MEMBER_INFO(AddPath);
164 SkAddPath();
165 virtual bool add();
166private:
167 typedef SkPathPart INHERITED;
168 SkDrawMatrix* matrix;
169 SkDrawPath* path;
170};
171
172#endif // SkPathParts_DEFINED
173