1 package com.xtremelabs.robolectric.shadows;
2 
3 import android.graphics.Matrix;
4 import com.xtremelabs.robolectric.internal.Implementation;
5 import com.xtremelabs.robolectric.internal.Implements;
6 
7 import static com.xtremelabs.robolectric.Robolectric.shadowOf;
8 
9 @SuppressWarnings({"UnusedDeclaration"})
10 @Implements(Matrix.class)
11 public class ShadowMatrix {
12     private float scaleX = 1;
13     private float transX;
14 
15     private float scaleY = 1;
16     private float transY;
17 
18     // scaleX=0, skewX=1,  transX=2
19     // skewY=3,  scaleY=4, transY=5
20     // persp0=6, persp1=7, persp2=8
21 
22     // identity: Matrix{[1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}
23 
24     // drag down: Matrix{[1.0, 0.0, -1.3872986][0.0, 1.0, 0.37722778][0.0, 0.0, 1.0]}
25 
26 
__constructor__(Matrix src)27     public void __constructor__(Matrix src) {
28         set(src);
29     }
30 
31     @Implementation
set(Matrix src)32     public void set(Matrix src) {
33         transX = shadowOf(src).transX;
34         scaleX = shadowOf(src).scaleX;
35 
36         transY = shadowOf(src).transY;
37         scaleY = shadowOf(src).scaleY;
38     }
39 
40     @Implementation
setTranslate(float dx, float dy)41     public void setTranslate(float dx, float dy) {
42         transX = dx;
43         transY = dy;
44     }
45 
46     @Implementation
postTranslate(float dx, float dy)47     public void postTranslate(float dx, float dy) {
48         transX += dx;
49         transY += dy;
50     }
51 
getTransX()52     public float getTransX() {
53         return transX;
54     }
55 
getTransY()56     public float getTransY() {
57         return transY;
58     }
59 
60     @Implementation
postScale(float sx, float sy, float px, float py)61     public boolean postScale(float sx, float sy, float px, float py) {
62         scaleX *= sx;
63         scaleY *= sy;
64         return true;
65     }
66 
getScaleX()67     public float getScaleX() {
68         return scaleX;
69     }
70 
getScaleY()71     public float getScaleY() {
72         return scaleY;
73     }
74 }
75