• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 SkDrawMatrix_DEFINED
11 #define SkDrawMatrix_DEFINED
12 
13 #include "SkDrawable.h"
14 #include "SkMatrix.h"
15 #include "SkMemberInfo.h"
16 #include "SkIntArray.h"
17 
18 class SkMatrixPart;
19 
20 class SkDrawMatrix : public SkDrawable {
21     DECLARE_DRAW_MEMBER_INFO(Matrix);
22     SkDrawMatrix();
23     virtual ~SkDrawMatrix();
24     virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE;
25     virtual bool childrenNeedDisposing() const;
26     virtual void dirty();
27     virtual bool draw(SkAnimateMaker& );
28 #ifdef SK_DUMP_ENABLED
29     virtual void dump(SkAnimateMaker* );
30 #endif
31     SkMatrix& getMatrix();
32     virtual bool getProperty(int index, SkScriptValue* value) const;
33     virtual void initialize();
34     virtual void onEndElement(SkAnimateMaker& );
35     virtual void setChildHasID();
36     virtual bool setProperty(int index, SkScriptValue& );
37 
concat(SkMatrix & inMatrix)38     void concat(SkMatrix& inMatrix) {
39         fConcat.preConcat(inMatrix);
40     }
41 
42     virtual SkDisplayable* deepCopy(SkAnimateMaker* );
43 
44 
rotate(SkScalar degrees,SkPoint & center)45     void rotate(SkScalar degrees, SkPoint& center) {
46         fMatrix.preRotate(degrees, center.fX, center.fY);
47     }
48 
set(SkMatrix & src)49     void set(SkMatrix& src) {
50         fMatrix.preConcat(src);
51     }
52 
scale(SkScalar scaleX,SkScalar scaleY,SkPoint & center)53     void scale(SkScalar scaleX, SkScalar scaleY, SkPoint& center) {
54         fMatrix.preScale(scaleX, scaleY, center.fX, center.fY);
55     }
56 
skew(SkScalar skewX,SkScalar skewY,SkPoint & center)57     void skew(SkScalar skewX, SkScalar skewY, SkPoint& center) {
58         fMatrix.preSkew(skewX, skewY, center.fX, center.fY);
59     }
60 
translate(SkScalar x,SkScalar y)61     void translate(SkScalar x, SkScalar y) {
62         fMatrix.preTranslate(x, y);
63     }
64 private:
65     SkTDScalarArray matrix;
66     SkMatrix fConcat;
67     SkMatrix fMatrix;
68     SkTDMatrixPartArray fParts;
69     SkBool8 fChildHasID;
70     SkBool8 fDirty;
71     typedef SkDrawable INHERITED;
72 };
73 
74 #endif // SkDrawMatrix_DEFINED
75