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