| Index: src/pipe/SkGPipeRead.cpp
|
| diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp
|
| index e76ec1240aa005990223f51857da6d45b6ab2350..ea811afca9ef44daa96cbe2d54113369c6ee0f08 100644
|
| --- a/src/pipe/SkGPipeRead.cpp
|
| +++ b/src/pipe/SkGPipeRead.cpp
|
| @@ -28,22 +28,6 @@
|
| #include "SkTypeface.h"
|
| #include "SkXfermode.h"
|
|
|
| -static SkEffectType paintflat_to_effecttype(PaintFlats pf) {
|
| - static const uint8_t gEffectTypesInPaintFlatsOrder[] = {
|
| - kColorFilter_SkEffectType,
|
| - kDrawLooper_SkEffectType,
|
| - kImageFilter_SkEffectType,
|
| - kMaskFilter_SkEffectType,
|
| - kPathEffect_SkEffectType,
|
| - kRasterizer_SkEffectType,
|
| - kShader_SkEffectType,
|
| - kXfermode_SkEffectType,
|
| - };
|
| -
|
| - SkASSERT((size_t)pf < SK_ARRAY_COUNT(gEffectTypesInPaintFlatsOrder));
|
| - return (SkEffectType)gEffectTypesInPaintFlatsOrder[pf];
|
| -}
|
| -
|
| static void set_paintflat(SkPaint* paint, SkFlattenable* obj, unsigned paintFlat) {
|
| SkASSERT(paintFlat < kCount_PaintFlats);
|
| switch (paintFlat) {
|
| @@ -53,6 +37,9 @@ static void set_paintflat(SkPaint* paint, SkFlattenable* obj, unsigned paintFlat
|
| case kDrawLooper_PaintFlat:
|
| paint->setLooper((SkDrawLooper*)obj);
|
| break;
|
| + case kImageFilter_PaintFlat:
|
| + paint->setImageFilter((SkImageFilter*)obj);
|
| + break;
|
| case kMaskFilter_PaintFlat:
|
| paint->setMaskFilter((SkMaskFilter*)obj);
|
| break;
|
| @@ -65,9 +52,6 @@ static void set_paintflat(SkPaint* paint, SkFlattenable* obj, unsigned paintFlat
|
| case kShader_PaintFlat:
|
| paint->setShader((SkShader*)obj);
|
| break;
|
| - case kImageFilter_PaintFlat:
|
| - paint->setImageFilter((SkImageFilter*)obj);
|
| - break;
|
| case kXfermode_PaintFlat:
|
| paint->setXfermode((SkXfermode*)obj);
|
| break;
|
| @@ -76,6 +60,31 @@ static void set_paintflat(SkPaint* paint, SkFlattenable* obj, unsigned paintFlat
|
| }
|
| }
|
|
|
| +static SkFlattenable* read_paintflat(SkFlattenableReadBuffer* reader, unsigned paintFlat) {
|
| + SkASSERT(paintFlat < kCount_PaintFlats);
|
| + switch (paintFlat) {
|
| + case kColorFilter_PaintFlat:
|
| + return reader->readColorFilter();
|
| + case kDrawLooper_PaintFlat:
|
| + return reader->readDrawLooper();
|
| + case kImageFilter_PaintFlat:
|
| + return reader->readImageFilter();
|
| + case kMaskFilter_PaintFlat:
|
| + return reader->readMaskFilter();
|
| + case kPathEffect_PaintFlat:
|
| + return reader->readPathEffect();
|
| + case kRasterizer_PaintFlat:
|
| + return reader->readRasterizer();
|
| + case kShader_PaintFlat:
|
| + return reader->readShader();
|
| + case kXfermode_PaintFlat:
|
| + return reader->readXfermode();
|
| + default:
|
| + SkDEBUGFAIL("never gets here");
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| template <typename T> class SkRefCntTDArray : public SkTDArray<T> {
|
| public:
|
| ~SkRefCntTDArray() { this->unrefAll(); }
|
| @@ -122,7 +131,7 @@ public:
|
|
|
| void defFlattenable(PaintFlats pf, int index) {
|
| index--;
|
| - SkFlattenable* obj = fReader->readFlattenable(paintflat_to_effecttype(pf));
|
| + SkFlattenable* obj = read_paintflat(fReader, pf);
|
| if (fFlatArray.count() == index) {
|
| *fFlatArray.append() = obj;
|
| } else {
|
|
|