• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* 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 
26 class SkDrawPath : public SkBoundable {
27     DECLARE_DRAW_MEMBER_INFO(Path);
28     SkDrawPath();
29     virtual ~SkDrawPath();
30     virtual bool add(SkAnimateMaker& , SkDisplayable* child);
childHasID()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);
isPath()45     virtual bool isPath() const { return true; }
46 public:
47     SkPath fPath;
48 protected:
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;
56 private:
57     typedef SkBoundable INHERITED;
58 };
59 
60 class SkPolyline : public SkDrawPath {
61     DECLARE_MEMBER_INFO(Polyline);
62     virtual bool add(SkAnimateMaker& , SkDisplayable*) const;
63     virtual void onEndElement(SkAnimateMaker& );
64 protected:
65     SkTDScalarArray points;
66 private:
67     typedef SkDrawPath INHERITED;
68 };
69 
70 class SkPolygon : public SkPolyline {
71     DECLARE_MEMBER_INFO(Polygon);
72     virtual void onEndElement(SkAnimateMaker& );
73 private:
74     typedef SkPolyline INHERITED;
75 };
76 
77 #endif // SkDrawPath_DEFINED
78