animate matrixref in sample shapes



git-svn-id: http://skia.googlecode.com/svn/trunk@189 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleShapes.cpp b/samplecode/SampleShapes.cpp
index 77283fe..bee3884 100644
--- a/samplecode/SampleShapes.cpp
+++ b/samplecode/SampleShapes.cpp
@@ -42,6 +42,7 @@
 
 class ShapesView : public SkView {
     SkGroupShape fGroup;
+    SkMatrixRef*    fMatrixRefs[4];
 public:
 	ShapesView() {
         SkMatrix m;
@@ -54,6 +55,18 @@
         fGroup.appendShape(make_shape1(), m)->unref();
         m.postTranslate(0, SkIntToScalar(120));
         fGroup.appendShape(make_shape2(), m)->unref();
+        
+        for (size_t i = 0; i < SK_ARRAY_COUNT(fMatrixRefs); i++) {
+            SkSafeRef(fMatrixRefs[i] = fGroup.getShapeMatrixRef(i));
+        }
+        
+        fAngle = 0;
+    }
+    
+    virtual ~ShapesView() {
+        for (size_t i = 0; i < SK_ARRAY_COUNT(fMatrixRefs); i++) {
+            SkSafeUnref(fMatrixRefs[i]);
+        }
     }
     
 protected:
@@ -70,14 +83,22 @@
         canvas->drawColor(0xFFDDDDDD);
     }
     
+    int fAngle;
+    
     virtual void onDraw(SkCanvas* canvas) {
         this->drawBG(canvas);
         
+        SkMatrix saveM = *fMatrixRefs[3];
+        fAngle = (fAngle + 5) % 360;
+        SkScalar c = SkIntToScalar(50);
+        fMatrixRefs[3]->preRotate(SkIntToScalar(fAngle), c, c);
+        
         SkMatrix matrix;
 #if 1        
         SkGroupShape gs;
         gs.appendShape(&fGroup);
-        matrix.setTranslate(0, SkIntToScalar(240));
+        matrix.setScale(-SK_Scalar1, SK_Scalar1);
+        matrix.postTranslate(SkIntToScalar(220), SkIntToScalar(240));
         gs.appendShape(&fGroup, matrix);
         matrix.setTranslate(SkIntToScalar(240), 0);
         matrix.preScale(SK_Scalar1*2, SK_Scalar1*2);
@@ -88,7 +109,10 @@
         fGroup.drawXY(canvas, 0, SkIntToScalar(240));
         fGroup.drawMatrix(canvas, matrix);
 #endif
-    }
+
+        *fMatrixRefs[3] = saveM;
+        this->inval(NULL);
+}
     
 private:
     typedef SkView INHERITED;