SkPathParts.h revision 03202c9c3dfbf8c4feb0a1ee9b3680817e633f58
1/* 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
174