d5e19a59e95574a971c4343ef8d9f70a55b63f34
[platform/upstream/libSkiaSharp.git] / src / animator / SkDrawMatrix.h
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 "SkADrawable.h"
14 #include "SkMatrix.h"
15 #include "SkMemberInfo.h"
16 #include "SkIntArray.h"
17
18 class SkMatrixPart;
19
20 class SkDrawMatrix : public SkADrawable {
21     DECLARE_DRAW_MEMBER_INFO(Matrix);
22     SkDrawMatrix();
23     virtual ~SkDrawMatrix();
24     bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE;
25     bool childrenNeedDisposing() const SK_OVERRIDE;
26     void dirty() SK_OVERRIDE;
27     bool draw(SkAnimateMaker& ) SK_OVERRIDE;
28 #ifdef SK_DUMP_ENABLED
29     void dump(SkAnimateMaker* ) SK_OVERRIDE;
30 #endif
31     SkMatrix& getMatrix();
32     bool getProperty(int index, SkScriptValue* value) const SK_OVERRIDE;
33     void initialize() SK_OVERRIDE;
34     void onEndElement(SkAnimateMaker& ) SK_OVERRIDE;
35     void setChildHasID() SK_OVERRIDE;
36     bool setProperty(int index, SkScriptValue& ) SK_OVERRIDE;
37
38     void concat(SkMatrix& inMatrix) {
39         fConcat.preConcat(inMatrix);
40     }
41
42     SkDisplayable* deepCopy(SkAnimateMaker* ) SK_OVERRIDE;
43
44
45     void rotate(SkScalar degrees, SkPoint& center) {
46         fMatrix.preRotate(degrees, center.fX, center.fY);
47     }
48
49     void set(SkMatrix& src) {
50         fMatrix.preConcat(src);
51     }
52
53     void scale(SkScalar scaleX, SkScalar scaleY, SkPoint& center) {
54         fMatrix.preScale(scaleX, scaleY, center.fX, center.fY);
55     }
56
57     void skew(SkScalar skewX, SkScalar skewY, SkPoint& center) {
58         fMatrix.preSkew(skewX, skewY, center.fX, center.fY);
59     }
60
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 SkADrawable INHERITED;
72 };
73
74 #endif // SkDrawMatrix_DEFINED