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 18class SkDrawPath : public SkBoundable { 19 DECLARE_DRAW_MEMBER_INFO(Path); 20 SkDrawPath(); 21 virtual ~SkDrawPath(); 22 virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE; 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; } 38public: 39 SkPath fPath; 40protected: 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; 48private: 49 typedef SkBoundable INHERITED; 50}; 51 52class SkPolyline : public SkDrawPath { 53 DECLARE_MEMBER_INFO(Polyline); 54 virtual bool addChild(SkAnimateMaker& , SkDisplayable*) SK_OVERRIDE; 55 virtual void onEndElement(SkAnimateMaker& ); 56protected: 57 SkTDScalarArray points; 58private: 59 typedef SkDrawPath INHERITED; 60}; 61 62class SkPolygon : public SkPolyline { 63 DECLARE_MEMBER_INFO(Polygon); 64 virtual void onEndElement(SkAnimateMaker& ); 65private: 66 typedef SkPolyline INHERITED; 67}; 68 69#endif // SkDrawPath_DEFINED 70