1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com 2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/* 3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2006 The Android Open Source Project 4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * 5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file. 7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */ 8685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com 9bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 10bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifndef SkDrawMatrix_DEFINED 11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#define SkDrawMatrix_DEFINED 12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkDrawable.h" 14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkMatrix.h" 15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkMemberInfo.h" 16bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkIntArray.h" 17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comclass SkMatrixPart; 19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 20bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comclass SkDrawMatrix : public SkDrawable { 21bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com DECLARE_DRAW_MEMBER_INFO(Matrix); 22bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkDrawMatrix(); 23bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual ~SkDrawMatrix(); 2400fe09947252dbe4ac563ace9313398f21584409tfarina@chromium.org virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE; 25bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual bool childrenNeedDisposing() const; 26bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual void dirty(); 27bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual bool draw(SkAnimateMaker& ); 28bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifdef SK_DUMP_ENABLED 29bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual void dump(SkAnimateMaker* ); 30bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif 31bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkMatrix& getMatrix(); 32bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual bool getProperty(int index, SkScriptValue* value) const; 33bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual void initialize(); 34bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual void onEndElement(SkAnimateMaker& ); 35bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual void setChildHasID(); 36bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual bool setProperty(int index, SkScriptValue& ); 37bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 38bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com void concat(SkMatrix& inMatrix) { 39bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fConcat.preConcat(inMatrix); 40bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 41bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 42bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 43bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 44bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 45bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com void rotate(SkScalar degrees, SkPoint& center) { 46bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMatrix.preRotate(degrees, center.fX, center.fY); 47bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 48bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 49bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com void set(SkMatrix& src) { 50bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMatrix.preConcat(src); 51bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 52bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 53bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com void scale(SkScalar scaleX, SkScalar scaleY, SkPoint& center) { 54bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMatrix.preScale(scaleX, scaleY, center.fX, center.fY); 55bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 56bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 57bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com void skew(SkScalar skewX, SkScalar skewY, SkPoint& center) { 58bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMatrix.preSkew(skewX, skewY, center.fX, center.fY); 59bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 60bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 61bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com void translate(SkScalar x, SkScalar y) { 62bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMatrix.preTranslate(x, y); 63bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 64bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comprivate: 65bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkTDScalarArray matrix; 66bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkMatrix fConcat; 67bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkMatrix fMatrix; 68bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkTDMatrixPartArray fParts; 69bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkBool8 fChildHasID; 70bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkBool8 fDirty; 71bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com typedef SkDrawable INHERITED; 72bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com}; 73bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 74bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif // SkDrawMatrix_DEFINED 75