| /* | |
| * Copyright 2006 The Android Open Source Project | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef SkDrawMatrix_DEFINED | |
| #define SkDrawMatrix_DEFINED | |
| #include "SkDrawable.h" | |
| #include "SkMatrix.h" | |
| #include "SkMemberInfo.h" | |
| #include "SkIntArray.h" | |
| class SkMatrixPart; | |
| class SkDrawMatrix : public SkDrawable { | |
| DECLARE_DRAW_MEMBER_INFO(Matrix); | |
| SkDrawMatrix(); | |
| virtual ~SkDrawMatrix(); | |
| virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE; | |
| virtual bool childrenNeedDisposing() const; | |
| virtual void dirty(); | |
| virtual bool draw(SkAnimateMaker& ); | |
| #ifdef SK_DUMP_ENABLED | |
| virtual void dump(SkAnimateMaker* ); | |
| #endif | |
| SkMatrix& getMatrix(); | |
| virtual bool getProperty(int index, SkScriptValue* value) const; | |
| virtual void initialize(); | |
| virtual void onEndElement(SkAnimateMaker& ); | |
| virtual void setChildHasID(); | |
| virtual bool setProperty(int index, SkScriptValue& ); | |
| void concat(SkMatrix& inMatrix) { | |
| fConcat.preConcat(inMatrix); | |
| } | |
| virtual SkDisplayable* deepCopy(SkAnimateMaker* ); | |
| void rotate(SkScalar degrees, SkPoint& center) { | |
| fMatrix.preRotate(degrees, center.fX, center.fY); | |
| } | |
| void set(SkMatrix& src) { | |
| fMatrix.preConcat(src); | |
| } | |
| void scale(SkScalar scaleX, SkScalar scaleY, SkPoint& center) { | |
| fMatrix.preScale(scaleX, scaleY, center.fX, center.fY); | |
| } | |
| void skew(SkScalar skewX, SkScalar skewY, SkPoint& center) { | |
| fMatrix.preSkew(skewX, skewY, center.fX, center.fY); | |
| } | |
| void translate(SkScalar x, SkScalar y) { | |
| fMatrix.preTranslate(x, y); | |
| } | |
| private: | |
| SkTDScalarArray matrix; | |
| SkMatrix fConcat; | |
| SkMatrix fMatrix; | |
| SkTDMatrixPartArray fParts; | |
| SkBool8 fChildHasID; | |
| SkBool8 fDirty; | |
| typedef SkDrawable INHERITED; | |
| }; | |
| #endif // SkDrawMatrix_DEFINED |