add shape flatten so they work properly in pictures
add flatten/unflatten to matrix



git-svn-id: http://skia.googlecode.com/svn/trunk@242 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleShapes.cpp b/samplecode/SampleShapes.cpp
index 81f6e4f..95efd0f 100644
--- a/samplecode/SampleShapes.cpp
+++ b/samplecode/SampleShapes.cpp
@@ -2,6 +2,7 @@
 #include "SkCanvas.h"
 #include "SkPaint.h"
 #include "SkPicture.h"
+#include "SkStream.h"
 #include "SkView.h"
 
 #include "SkRectShape.h"
@@ -83,6 +84,20 @@
         canvas->drawColor(0xFFDDDDDD);
     }
     
+    void drawpicture(SkCanvas* canvas, SkPicture& pict) {
+#if 1
+        SkDynamicMemoryWStream ostream;
+        pict.serialize(&ostream);
+
+        SkMemoryStream istream(ostream.getStream(), ostream.getOffset());
+        SkPicture newPict(&istream);
+        
+        canvas->drawPicture(newPict);
+#else
+        canvas->drawPicture(pict);
+#endif
+    }
+    
     int fAngle;
     
     virtual void onDraw(SkCanvas* canvas) {
@@ -105,7 +120,7 @@
         matrix.preScale(SK_Scalar1*2, SK_Scalar1*2);
         gs->appendShape(&fGroup, matrix);
         
-#if 0        
+#if 0
         canvas->drawShape(gs);
 #else
         SkPicture pict;
@@ -116,7 +131,8 @@
         cv->scale(-SK_Scalar1, SK_Scalar1);
         cv->drawShape(gs);
         pict.endRecording();
-        canvas->drawPicture(pict);
+        
+        drawpicture(canvas, pict);
 #endif
 
         *fMatrixRefs[3] = saveM;