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     bool addChild(SkAnimateMaker& , SkDisplayable* child) override;
     23     bool childHasID() { return SkToBool(fChildHasID); }
     24     bool childrenNeedDisposing() const override;
     25     void dirty() override;
     26     bool draw(SkAnimateMaker& ) override;
     27     SkDisplayable* getParent() const override;
     28 #ifdef SK_DUMP_ENABLED
     29     void dump(SkAnimateMaker* ) override;
     30 #endif
     31     SkPath& getPath();
     32     bool getProperty(int index, SkScriptValue* value) const override;
     33     bool setProperty(int index, SkScriptValue& value) override;
     34     void onEndElement(SkAnimateMaker& ) override;
     35     void setChildHasID() override;
     36     bool setParent(SkDisplayable* parent) override;
     37     bool isPath() const override { 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     bool addChild(SkAnimateMaker& , SkDisplayable*) override;
     55     void onEndElement(SkAnimateMaker& ) override;
     56 protected:
     57     SkTDScalarArray points;
     58 private:
     59     typedef SkDrawPath INHERITED;
     60 };
     61 
     62 class SkPolygon : public SkPolyline {
     63     DECLARE_MEMBER_INFO(Polygon);
     64     void onEndElement(SkAnimateMaker& ) override;
     65 private:
     66     typedef SkPolyline INHERITED;
     67 };
     68 
     69 #endif // SkDrawPath_DEFINED
     70