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) {