blob: 673051a32c3d7029e8ef199ea66932f29be0bad8 [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001/* libs/graphics/animator/SkDrawPath.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 SkDrawPath_DEFINED
19#define SkDrawPath_DEFINED
20
21#include "SkBoundable.h"
22#include "SkIntArray.h"
23#include "SkMemberInfo.h"
24#include "SkPath.h"
25
26class SkDrawPath : public SkBoundable {
27 DECLARE_DRAW_MEMBER_INFO(Path);
28 SkDrawPath();
29 virtual ~SkDrawPath();
30 virtual bool add(SkAnimateMaker& , SkDisplayable* child);
31 bool childHasID() { return SkToBool(fChildHasID); }
32 virtual bool childrenNeedDisposing() const;
33 virtual void dirty();
34 virtual bool draw(SkAnimateMaker& );
35 virtual SkDisplayable* getParent() const;
36#ifdef SK_DUMP_ENABLED
37 virtual void dump(SkAnimateMaker* );
38#endif
39 SkPath& getPath();
40 virtual bool getProperty(int index, SkScriptValue* value) const;
41 virtual bool setProperty(int index, SkScriptValue& value);
42 virtual void onEndElement(SkAnimateMaker& );
43 virtual void setChildHasID();
44 virtual bool setParent(SkDisplayable* parent);
45 virtual bool isPath() const { return true; }
46public:
47 SkPath fPath;
48protected:
49 void parseSVG();
50 SkString d;
51 SkTDPathPartArray fParts;
52 mutable SkScalar fLength;
53 SkDisplayable* fParent; // SkPolyToPoly or SkFromPath, for instance
54 SkBool8 fChildHasID;
55 SkBool8 fDirty;
56private:
57 typedef SkBoundable INHERITED;
58};
59
60class SkPolyline : public SkDrawPath {
61 DECLARE_MEMBER_INFO(Polyline);
62 virtual bool add(SkAnimateMaker& , SkDisplayable*) const;
63 virtual void onEndElement(SkAnimateMaker& );
64protected:
65 SkTDScalarArray points;
66private:
67 typedef SkDrawPath INHERITED;
68};
69
70class SkPolygon : public SkPolyline {
71 DECLARE_MEMBER_INFO(Polygon);
72 virtual void onEndElement(SkAnimateMaker& );
73private:
74 typedef SkPolyline INHERITED;
75};
76
77#endif // SkDrawPath_DEFINED