remove some dead code in pipes
inherit from SampleView for more samples
add L key to toggle using SkGPipe



git-svn-id: http://skia.googlecode.com/svn/trunk@1296 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pipe/SkGPipePriv.h b/src/pipe/SkGPipePriv.h
index 30d8b93..c3b4e4c 100644
--- a/src/pipe/SkGPipePriv.h
+++ b/src/pipe/SkGPipePriv.h
@@ -25,6 +25,7 @@
 // these must be contiguous, 0...N-1
 enum PaintFlats {
     kColorFilter_PaintFlat,
+    kDrawLooper_PaintFlat,
     kMaskFilter_PaintFlat,
     kPathEffect_PaintFlat,
     kRasterizer_PaintFlat,
@@ -71,16 +72,8 @@
 
     kPaintOp_DrawOp,
 
-    kDef_PaintFlat_DrawOp,
-
-    kDef_ColorFilter_DrawOp,
-    kDef_DrawLooper_DrawOp,
-    kDef_MaskFilter_DrawOp,
-    kDef_PathEffect_DrawOp,
-    kDef_Rasterizer_DrawOp,
-    kDef_Shader_DrawOp,
     kDef_Typeface_DrawOp,
-    kDef_Xfermode_DrawOp,
+    kDef_Flattenable_DrawOp,
 
     // these are signals to playback, not drawing verbs
     kDone_DrawOp,
@@ -170,14 +163,6 @@
     kTypeface_PaintOp,  // arg inline (index) - text
 
     kFlatIndex_PaintOp, // flags=paintflat, data=index
-
-    kPathEffect_PaintOp,
-    kShader_PaintOp,
-    kXfermode_PaintOp,
-    kMaskFilter_PaintOp,
-    kColorFilter_PaintOp,
-    kRasterizer_PaintOp,
-    kDrawLooper_PaintOp,
 };
 
 #define PAINTOPS_OP_BITS     8
diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp
index d33258c..ee20d80 100644
--- a/src/pipe/SkGPipeRead.cpp
+++ b/src/pipe/SkGPipeRead.cpp
@@ -37,6 +37,9 @@
         case kColorFilter_PaintFlat:
             paint->setColorFilter((SkColorFilter*)obj);
             break;
+        case kDrawLooper_PaintFlat:
+            paint->setLooper((SkDrawLooper*)obj);
+            break;
         case kMaskFilter_PaintFlat:
             paint->setMaskFilter((SkMaskFilter*)obj);
             break;
@@ -94,53 +97,10 @@
         const void* data = fReader->skip(SkAlign4(size));
         SkMemoryStream stream(data, size, false);
         *fTypefaces.append() = SkTypeface::Deserialize(&stream);
-    }
-    void addColorFilter() {
-        *fColorFilters.append() = (SkColorFilter*)fReader->readFlattenable();
-    }
-    void addDrawLooper() {
-        *fDrawLoopers.append() = (SkDrawLooper*)fReader->readFlattenable();
-    }
-    void addMaskFilter() {
-        *fMaskFilters.append() = (SkMaskFilter*)fReader->readFlattenable();
-    }
-    void addPathEffect() {
-        *fPathEffects.append() = (SkPathEffect*)fReader->readFlattenable();
-    }
-    void addRasterizer() {
-        *fRasterizers.append() = (SkRasterizer*)fReader->readFlattenable();
-    }
-    void addShader() {
-        *fShaders.append() = (SkShader*)fReader->readFlattenable();
-    }
-    void addXfermode() {
-        *fXfermodes.append() = (SkXfermode*)fReader->readFlattenable();
-    }
-    
-    void setColorFilter(SkPaint* paint, unsigned id) {
-        paint->setColorFilter(id ? fColorFilters[id - 1] : NULL);
-    }
-    void setLooper(SkPaint* paint, unsigned id) {
-        paint->setLooper(id ? fDrawLoopers[id - 1] : NULL);
-    }
-    void setMaskFilter(SkPaint* paint, unsigned id) {
-        paint->setMaskFilter(id ? fMaskFilters[id - 1] : NULL);
-    }
-    void setPathEffect(SkPaint* paint, unsigned id) {
-        paint->setPathEffect(id ? fPathEffects[id - 1] : NULL);
-    }
-    void setRasterizer(SkPaint* paint, unsigned id) {
-        paint->setRasterizer(id ? fRasterizers[id - 1] : NULL);
-    }
-    void setShader(SkPaint* paint, unsigned id) {
-        paint->setShader(id ? fShaders[id - 1] : NULL);
-    }
+    }    
     void setTypeface(SkPaint* paint, unsigned id) {
         paint->setTypeface(id ? fTypefaces[id - 1] : NULL);
     }
-    void setXfermode(SkPaint* paint, unsigned id) {
-        paint->setXfermode(id ? fXfermodes[id - 1] : NULL);
-    }
     
     SkFlattenableReadBuffer* fReader;
     SkTDArray<SkFlattenable*> fFlatArray;
@@ -489,13 +449,6 @@
             }
 
             case kTypeface_PaintOp: state->setTypeface(p, data); break;
-            case kPathEffect_PaintOp: state->setPathEffect(p, data); break;
-            case kShader_PaintOp: state->setShader(p, data); break;
-            case kXfermode_PaintOp: state->setXfermode(p, data); break;
-            case kMaskFilter_PaintOp: state->setMaskFilter(p, data); break;
-            case kColorFilter_PaintOp: state->setColorFilter(p, data); break;
-            case kRasterizer_PaintOp: state->setRasterizer(p, data); break;
-            case kDrawLooper_PaintOp: state->setLooper(p, data); break;
             default: SkASSERT(!"bad paintop"); return;
         }
         SkASSERT(reader->offset() <= stop);
@@ -505,6 +458,10 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
+static void def_Typeface_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
+    state->addTypeface();
+}
+
 static void def_PaintFlat_rp(SkCanvas*, SkReader32*, uint32_t op32,
                              SkGPipeState* state) {
     PaintFlats pf = (PaintFlats)DrawOp_unpackFlags(op32);
@@ -512,38 +469,6 @@
     state->defFlattenable(pf, index);
 }
 
-static void def_ColorFilter_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addColorFilter();
-}
-
-static void def_DrawLooper_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addDrawLooper();
-}
-
-static void def_MaskFilter_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addMaskFilter();
-}
-
-static void def_PathEffect_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addPathEffect();
-}
-
-static void def_Rasterizer_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addRasterizer();
-}
-
-static void def_Shader_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addShader();
-}
-
-static void def_Typeface_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addTypeface();
-}
-
-static void def_Xfermode_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
-    state->addXfermode();
-}
-
 ///////////////////////////////////////////////////////////////////////////////
 
 static void skip_rp(SkCanvas*, SkReader32* reader, uint32_t op32, SkGPipeState*) {
@@ -586,16 +511,11 @@
     setMatrix_rp,
     skew_rp,
     translate_rp,
+
     paintOp_rp,
-    def_PaintFlat_rp,
-    def_ColorFilter_rp,
-    def_DrawLooper_rp,
-    def_MaskFilter_rp,
-    def_PathEffect_rp,
-    def_Rasterizer_rp,
-    def_Shader_rp,
     def_Typeface_rp,
-    def_Xfermode_rp,
+    def_PaintFlat_rp,
+
     done_rp
 };
 
@@ -635,6 +555,8 @@
         fState = new SkGPipeState;
     }
 
+    SkASSERT(SK_ARRAY_COUNT(gReadTable) == (kDone_DrawOp + 1));
+
     const ReadProc* table = gReadTable;
     SkFlattenableReadBuffer reader(data, length);
     SkCanvas* canvas = fCanvas;
diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp
index 04625b7..0a56be6 100644
--- a/src/pipe/SkGPipeWrite.cpp
+++ b/src/pipe/SkGPipeWrite.cpp
@@ -25,6 +25,7 @@
 #include "SkTypeface.h"
 #include "SkWriter32.h"
 #include "SkColorFilter.h"
+#include "SkDrawLooper.h"
 #include "SkMaskFilter.h"
 #include "SkRasterizer.h"
 #include "SkShader.h"
@@ -33,6 +34,7 @@
     SkASSERT(paintFlat < kCount_PaintFlats);
     switch (paintFlat) {
         case kColorFilter_PaintFlat:    return paint.getColorFilter();
+        case kDrawLooper_PaintFlat:     return paint.getLooper();
         case kMaskFilter_PaintFlat:     return paint.getMaskFilter();
         case kPathEffect_PaintFlat:     return paint.getPathEffect();
         case kRasterizer_PaintFlat:     return paint.getRasterizer();
@@ -222,7 +224,7 @@
 //        SkDebugf("--- add flattenable[%d] size=%d index=%d\n", paintflat, len, copy->fIndex);
 
         if (this->needOpBytes(len)) {
-            this->writeOp(kDef_PaintFlat_DrawOp, paintflat, copy->fIndex);
+            this->writeOp(kDef_Flattenable_DrawOp, paintflat, copy->fIndex);
             fWriter.write(copy->data(), len);
         }
     }
@@ -590,7 +592,8 @@
 }
 
 void SkGPipeCanvas::drawPicture(SkPicture& picture) {
-    UNIMPLEMENTED
+    // we want to playback the picture into individual draw calls
+    this->INHERITED::drawPicture(picture);
 }
 
 void SkGPipeCanvas::drawShape(SkShape* shape) {