• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
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 
9 
10 #ifndef SkDrawPath_DEFINED
11 #define SkDrawPath_DEFINED
12 
13 #include "SkBoundable.h"
14 #include "SkIntArray.h"
15 #include "SkMemberInfo.h"
16 #include "SkPath.h"
17 
18 class SkDrawPath : public SkBoundable {
19     DECLARE_DRAW_MEMBER_INFO(Path);
20     SkDrawPath();
21     virtual ~SkDrawPath();
22     virtual bool add(SkAnimateMaker& , SkDisplayable* child);
childHasID()23     bool childHasID() { return SkToBool(fChildHasID); }
24     virtual bool childrenNeedDisposing() const;
25     virtual void dirty();
26     virtual bool draw(SkAnimateMaker& );
27     virtual SkDisplayable* getParent() const;
28 #ifdef SK_DUMP_ENABLED
29     virtual void dump(SkAnimateMaker* );
30 #endif
31     SkPath& getPath();
32     virtual bool getProperty(int index, SkScriptValue* value) const;
33     virtual bool setProperty(int index, SkScriptValue& value);
34     virtual void onEndElement(SkAnimateMaker& );
35     virtual void setChildHasID();
36     virtual bool setParent(SkDisplayable* parent);
isPath()37     virtual bool isPath() const { return true; }
38 public:
39     SkPath fPath;
40 protected:
41     void parseSVG();
42     SkString d;
43     SkTDPathPartArray fParts;
44     mutable SkScalar fLength;
45     SkDisplayable* fParent; // SkPolyToPoly or SkFromPath, for instance
46     SkBool8 fChildHasID;
47     SkBool8 fDirty;
48 private:
49     typedef SkBoundable INHERITED;
50 };
51 
52 class SkPolyline : public SkDrawPath {
53     DECLARE_MEMBER_INFO(Polyline);
54     virtual bool add(SkAnimateMaker& , SkDisplayable*) const;
55     virtual void onEndElement(SkAnimateMaker& );
56 protected:
57     SkTDScalarArray points;
58 private:
59     typedef SkDrawPath INHERITED;
60 };
61 
62 class SkPolygon : public SkPolyline {
63     DECLARE_MEMBER_INFO(Polygon);
64     virtual void onEndElement(SkAnimateMaker& );
65 private:
66     typedef SkPolyline INHERITED;
67 };
68 
69 #endif // SkDrawPath_DEFINED
70