| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index d80ad376f8b8484a62efc61700ed3b3846042731..a47bd89c0507acad23ca7512279813ddd4a8697f 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -8,7 +8,6 @@
|
| #include "SkCanvas.h"
|
| #include "SkCanvasPriv.h"
|
| #include "SkBitmapDevice.h"
|
| -#include "SkColorFilter.h"
|
| #include "SkDeviceImageFilterProxy.h"
|
| #include "SkDraw.h"
|
| #include "SkDrawable.h"
|
| @@ -284,36 +283,6 @@
|
|
|
| /////////////////////////////////////////////////////////////////////////////
|
|
|
| -static SkPaint* set_if_needed(SkLazyPaint* lazy, const SkPaint& orig) {
|
| - return lazy->isValid() ? lazy->get() : lazy->set(orig);
|
| -}
|
| -
|
| -/**
|
| - * If the paint has an imagefilter, but it can be simplified to just a colorfilter, return that
|
| - * colorfilter, else return NULL.
|
| - */
|
| -static SkColorFilter* image_to_color_filter(const SkPaint& paint) {
|
| - SkImageFilter* imgf = paint.getImageFilter();
|
| - if (!imgf) {
|
| - return NULL;
|
| - }
|
| -
|
| - SkColorFilter* imgCF;
|
| - if (!imgf->asAColorFilter(&imgCF)) {
|
| - return NULL;
|
| - }
|
| -
|
| - SkColorFilter* paintCF = paint.getColorFilter();
|
| - if (NULL == paintCF) {
|
| - // there is no existing paint colorfilter, so we can just return the imagefilter's
|
| - return imgCF;
|
| - }
|
| -
|
| - // The paint has both a colorfilter and an imagefilter.
|
| - SkAutoTUnref<SkColorFilter> autoImgCF(imgCF);
|
| - return SkColorFilter::CreateComposeFilter(imgCF, paintCF);
|
| -}
|
| -
|
| class AutoDrawLooper {
|
| public:
|
| AutoDrawLooper(SkCanvas* canvas, const SkSurfaceProps& props, const SkPaint& paint,
|
| @@ -326,17 +295,9 @@
|
| fDoClearImageFilter = false;
|
| fDone = false;
|
|
|
| - SkColorFilter* simplifiedCF = image_to_color_filter(fOrigPaint);
|
| - if (simplifiedCF) {
|
| - SkPaint* paint = set_if_needed(&fLazyPaintInit, fOrigPaint);
|
| - paint->setColorFilter(simplifiedCF)->unref();
|
| - paint->setImageFilter(NULL);
|
| - fPaint = paint;
|
| - }
|
| -
|
| - if (!skipLayerForImageFilter && fPaint->getImageFilter()) {
|
| + if (!skipLayerForImageFilter && fOrigPaint.getImageFilter()) {
|
| SkPaint tmp;
|
| - tmp.setImageFilter(fPaint->getImageFilter());
|
| + tmp.setImageFilter(fOrigPaint.getImageFilter());
|
| (void)canvas->internalSaveLayer(bounds, &tmp, SkCanvas::kARGB_ClipLayer_SaveFlag,
|
| true, SkCanvas::kFullLayer_SaveLayerStrategy);
|
| // we'll clear the imageFilter for the actual draws in next(), so
|
| @@ -358,7 +319,7 @@
|
| uint32_t oldFlags = paint.getFlags();
|
| fNewPaintFlags = filter_paint_flags(props, oldFlags);
|
| if (fIsSimple && (fNewPaintFlags != oldFlags)) {
|
| - SkPaint* paint = set_if_needed(&fLazyPaintInit, fOrigPaint);
|
| + SkPaint* paint = fLazyPaint.set(fOrigPaint);
|
| paint->setFlags(fNewPaintFlags);
|
| fPaint = paint;
|
| // if we're not simple, doNext() will take care of calling setFlags()
|
| @@ -389,7 +350,7 @@
|
| }
|
|
|
| private:
|
| - SkLazyPaint fLazyPaintInit, fLazyPaintPerNext;
|
| + SkLazyPaint fLazyPaint;
|
| SkCanvas* fCanvas;
|
| const SkPaint& fOrigPaint;
|
| SkDrawFilter* fFilter;
|
| @@ -410,8 +371,7 @@
|
| SkASSERT(!fIsSimple);
|
| SkASSERT(fLooperContext || fFilter || fDoClearImageFilter);
|
|
|
| - SkPaint* paint = fLazyPaintPerNext.set(fLazyPaintInit.isValid() ?
|
| - *fLazyPaintInit.get() : fOrigPaint);
|
| + SkPaint* paint = fLazyPaint.set(fOrigPaint);
|
| paint->setFlags(fNewPaintFlags);
|
|
|
| if (fDoClearImageFilter) {
|
|
|