Home | History | Annotate | Download | only in animator
      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);
     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);
     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