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 SkMatrixParts_DEFINED 11 #define SkMatrixParts_DEFINED 12 13 #include "SkDisplayable.h" 14 #include "SkMemberInfo.h" 15 #include "SkPathMeasure.h" 16 17 class SkDrawPath; 18 class SkDrawRect; 19 class SkPolygon; 20 21 class SkDrawMatrix; 22 // class SkMatrix; 23 24 class SkMatrixPart : public SkDisplayable { 25 public: 26 SkMatrixPart(); 27 virtual bool add() = 0; 28 virtual void dirty(); 29 virtual SkDisplayable* getParent() const; 30 virtual bool setParent(SkDisplayable* parent); 31 #ifdef SK_DEBUG isMatrixPart()32 virtual bool isMatrixPart() const { return true; } 33 #endif 34 protected: 35 SkDrawMatrix* fMatrix; 36 }; 37 38 class SkRotate : public SkMatrixPart { 39 DECLARE_MEMBER_INFO(Rotate); 40 SkRotate(); 41 protected: 42 virtual bool add(); 43 SkScalar degrees; 44 SkPoint center; 45 }; 46 47 class SkScale : public SkMatrixPart { 48 DECLARE_MEMBER_INFO(Scale); 49 SkScale(); 50 protected: 51 virtual bool add(); 52 SkScalar x; 53 SkScalar y; 54 SkPoint center; 55 }; 56 57 class SkSkew : public SkMatrixPart { 58 DECLARE_MEMBER_INFO(Skew); 59 SkSkew(); 60 protected: 61 virtual bool add(); 62 SkScalar x; 63 SkScalar y; 64 SkPoint center; 65 }; 66 67 class SkTranslate : public SkMatrixPart { 68 DECLARE_MEMBER_INFO(Translate); 69 SkTranslate(); 70 protected: 71 virtual bool add(); 72 SkScalar x; 73 SkScalar y; 74 }; 75 76 class SkFromPath : public SkMatrixPart { 77 DECLARE_MEMBER_INFO(FromPath); 78 SkFromPath(); 79 virtual ~SkFromPath(); 80 protected: 81 virtual bool add(); 82 int32_t mode; 83 SkScalar offset; 84 SkDrawPath* path; 85 SkPathMeasure fPathMeasure; 86 }; 87 88 class SkRectToRect : public SkMatrixPart { 89 DECLARE_MEMBER_INFO(RectToRect); 90 SkRectToRect(); 91 virtual ~SkRectToRect(); 92 #ifdef SK_DUMP_ENABLED 93 virtual void dump(SkAnimateMaker* ); 94 #endif 95 virtual const SkMemberInfo* preferredChild(SkDisplayTypes type); 96 protected: 97 virtual bool add(); 98 SkDrawRect* source; 99 SkDrawRect* destination; 100 }; 101 102 class SkPolyToPoly : public SkMatrixPart { 103 DECLARE_MEMBER_INFO(PolyToPoly); 104 SkPolyToPoly(); 105 virtual ~SkPolyToPoly(); 106 #ifdef SK_DUMP_ENABLED 107 virtual void dump(SkAnimateMaker* ); 108 #endif 109 virtual void onEndElement(SkAnimateMaker& ); 110 virtual const SkMemberInfo* preferredChild(SkDisplayTypes type); 111 protected: 112 virtual bool add(); 113 SkPolygon* source; 114 SkPolygon* destination; 115 }; 116 117 // !!! add concat matrix ? 118 119 #endif // SkMatrixParts_DEFINED 120