• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* libs/graphics/animator/SkDrawMatrix.h
2 **
3 ** Copyright 2006, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 #ifndef SkDrawMatrix_DEFINED
19 #define SkDrawMatrix_DEFINED
20 
21 #include "SkDrawable.h"
22 #include "SkMatrix.h"
23 #include "SkMemberInfo.h"
24 #include "SkIntArray.h"
25 
26 class SkMatrixPart;
27 
28 class SkDrawMatrix : public SkDrawable {
29     DECLARE_DRAW_MEMBER_INFO(Matrix);
30     SkDrawMatrix();
31     virtual ~SkDrawMatrix();
32     virtual bool add(SkAnimateMaker& , SkDisplayable* child);
33     virtual bool childrenNeedDisposing() const;
34     virtual void dirty();
35     virtual bool draw(SkAnimateMaker& );
36 #ifdef SK_DUMP_ENABLED
37     virtual void dump(SkAnimateMaker* );
38 #endif
39     SkMatrix& getMatrix();
40     virtual bool getProperty(int index, SkScriptValue* value) const;
41     virtual void initialize();
42     virtual void onEndElement(SkAnimateMaker& );
43     virtual void setChildHasID();
44     virtual bool setProperty(int index, SkScriptValue& );
45 
concat(SkMatrix & inMatrix)46     void concat(SkMatrix& inMatrix) {
47         fConcat.preConcat(inMatrix);
48     }
49 
50     virtual SkDisplayable* deepCopy(SkAnimateMaker* );
51 
52 
rotate(SkScalar degrees,SkPoint & center)53     void rotate(SkScalar degrees, SkPoint& center) {
54         fMatrix.preRotate(degrees, center.fX, center.fY);
55     }
56 
set(SkMatrix & src)57     void set(SkMatrix& src) {
58         fMatrix.preConcat(src);
59     }
60 
scale(SkScalar scaleX,SkScalar scaleY,SkPoint & center)61     void scale(SkScalar scaleX, SkScalar scaleY, SkPoint& center) {
62         fMatrix.preScale(scaleX, scaleY, center.fX, center.fY);
63     }
64 
skew(SkScalar skewX,SkScalar skewY,SkPoint & center)65     void skew(SkScalar skewX, SkScalar skewY, SkPoint& center) {
66         fMatrix.preSkew(skewX, skewY, center.fX, center.fY);
67     }
68 
translate(SkScalar x,SkScalar y)69     void translate(SkScalar x, SkScalar y) {
70         fMatrix.preTranslate(x, y);
71     }
72 private:
73     SkTDScalarArray matrix;
74     SkMatrix fConcat;
75     SkMatrix fMatrix;
76     SkTDMatrixPartArray fParts;
77     SkBool8 fChildHasID;
78     SkBool8 fDirty;
79     typedef SkDrawable INHERITED;
80 };
81 
82 #endif // SkDrawMatrix_DEFINED
83