1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkDrawMatrix_DEFINED 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkDrawMatrix_DEFINED 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawable.h" 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMatrix.h" 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMemberInfo.h" 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkIntArray.h" 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkMatrixPart; 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkDrawMatrix : public SkDrawable { 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com DECLARE_DRAW_MEMBER_INFO(Matrix); 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDrawMatrix(); 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual ~SkDrawMatrix(); 241d3c411f5e4d2ad31bc92b3a85957004329ac00dtfarina@chromium.org virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE; 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool childrenNeedDisposing() const; 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void dirty(); 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool draw(SkAnimateMaker& ); 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void dump(SkAnimateMaker* ); 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkMatrix& getMatrix(); 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool getProperty(int index, SkScriptValue* value) const; 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void initialize(); 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void onEndElement(SkAnimateMaker& ); 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void setChildHasID(); 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool setProperty(int index, SkScriptValue& ); 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void concat(SkMatrix& inMatrix) { 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fConcat.preConcat(inMatrix); 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void rotate(SkScalar degrees, SkPoint& center) { 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMatrix.preRotate(degrees, center.fX, center.fY); 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void set(SkMatrix& src) { 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMatrix.preConcat(src); 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void scale(SkScalar scaleX, SkScalar scaleY, SkPoint& center) { 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMatrix.preScale(scaleX, scaleY, center.fX, center.fY); 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void skew(SkScalar skewX, SkScalar skewY, SkPoint& center) { 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMatrix.preSkew(skewX, skewY, center.fX, center.fY); 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void translate(SkScalar x, SkScalar y) { 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMatrix.preTranslate(x, y); 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkTDScalarArray matrix; 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkMatrix fConcat; 678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkMatrix fMatrix; 688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkTDMatrixPartArray fParts; 698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkBool8 fChildHasID; 708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkBool8 fDirty; 718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef SkDrawable INHERITED; 728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // SkDrawMatrix_DEFINED 75