1 /* libs/graphics/animator/SkDrawPath.h 2 ** 3 ** Copyright 2006, The Android Open Source Project 4 ** 5 ** Licensed under the Apache License, Version 2.0 (the "License"); 6 ** you may not use this file except in compliance with the License. 7 ** You may obtain a copy of the License at 8 ** 9 ** http://www.apache.org/licenses/LICENSE-2.0 10 ** 11 ** Unless required by applicable law or agreed to in writing, software 12 ** distributed under the License is distributed on an "AS IS" BASIS, 13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 ** See the License for the specific language governing permissions and 15 ** limitations under the License. 16 */ 17 18 #ifndef SkDrawPath_DEFINED 19 #define SkDrawPath_DEFINED 20 21 #include "SkBoundable.h" 22 #include "SkIntArray.h" 23 #include "SkMemberInfo.h" 24 #include "SkPath.h" 25 26 class SkDrawPath : public SkBoundable { 27 DECLARE_DRAW_MEMBER_INFO(Path); 28 SkDrawPath(); 29 virtual ~SkDrawPath(); 30 virtual bool add(SkAnimateMaker& , SkDisplayable* child); childHasID()31 bool childHasID() { return SkToBool(fChildHasID); } 32 virtual bool childrenNeedDisposing() const; 33 virtual void dirty(); 34 virtual bool draw(SkAnimateMaker& ); 35 virtual SkDisplayable* getParent() const; 36 #ifdef SK_DUMP_ENABLED 37 virtual void dump(SkAnimateMaker* ); 38 #endif 39 SkPath& getPath(); 40 virtual bool getProperty(int index, SkScriptValue* value) const; 41 virtual bool setProperty(int index, SkScriptValue& value); 42 virtual void onEndElement(SkAnimateMaker& ); 43 virtual void setChildHasID(); 44 virtual bool setParent(SkDisplayable* parent); isPath()45 virtual bool isPath() const { return true; } 46 public: 47 SkPath fPath; 48 protected: 49 void parseSVG(); 50 SkString d; 51 SkTDPathPartArray fParts; 52 mutable SkScalar fLength; 53 SkDisplayable* fParent; // SkPolyToPoly or SkFromPath, for instance 54 SkBool8 fChildHasID; 55 SkBool8 fDirty; 56 private: 57 typedef SkBoundable INHERITED; 58 }; 59 60 class SkPolyline : public SkDrawPath { 61 DECLARE_MEMBER_INFO(Polyline); 62 virtual bool add(SkAnimateMaker& , SkDisplayable*) const; 63 virtual void onEndElement(SkAnimateMaker& ); 64 protected: 65 SkTDScalarArray points; 66 private: 67 typedef SkDrawPath INHERITED; 68 }; 69 70 class SkPolygon : public SkPolyline { 71 DECLARE_MEMBER_INFO(Polygon); 72 virtual void onEndElement(SkAnimateMaker& ); 73 private: 74 typedef SkPolyline INHERITED; 75 }; 76 77 #endif // SkDrawPath_DEFINED 78