| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index 09c50c69b0248cf2dc83e95c87f07d662c80252c..881c19bf326bb2f06a5ac1b12354fafdeaabc7f5 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -318,22 +318,19 @@ public:
|
|
|
| class SkDrawIter : public SkDraw {
|
| public:
|
| - SkDrawIter(SkCanvas* canvas, bool skipEmptyClips = true) {
|
| + SkDrawIter(SkCanvas* canvas) {
|
| canvas = canvas->canvasForDrawIter();
|
| fCanvas = canvas;
|
| canvas->updateDeviceCMCache();
|
|
|
| fClipStack = canvas->fClipStack;
|
| fCurrLayer = canvas->fMCRec->fTopLayer;
|
| - fSkipEmptyClips = skipEmptyClips;
|
| }
|
|
|
| bool next() {
|
| // skip over recs with empty clips
|
| - if (fSkipEmptyClips) {
|
| - while (fCurrLayer && fCurrLayer->fClip.isEmpty()) {
|
| - fCurrLayer = fCurrLayer->fNext;
|
| - }
|
| + while (fCurrLayer && fCurrLayer->fClip.isEmpty()) {
|
| + fCurrLayer = fCurrLayer->fNext;
|
| }
|
|
|
| const DeviceCM* rec = fCurrLayer;
|
| @@ -367,7 +364,6 @@ private:
|
| SkCanvas* fCanvas;
|
| const DeviceCM* fCurrLayer;
|
| const SkPaint* fPaint; // May be null.
|
| - SkBool8 fSkipEmptyClips;
|
|
|
| typedef SkDraw INHERITED;
|
| };
|
| @@ -432,8 +428,7 @@ public:
|
| // "rawBounds" is the original bounds of the primitive about to be drawn, unmodified by the
|
| // paint. It's used to determine the size of the offscreen layer for filters.
|
| // If null, the clip will be used instead.
|
| - AutoDrawLooper(SkCanvas* canvas, const SkSurfaceProps& props, const SkPaint& paint,
|
| - bool skipLayerForImageFilter = false,
|
| + AutoDrawLooper(SkCanvas* canvas, const SkPaint& paint, bool skipLayerForImageFilter = false,
|
| const SkRect* rawBounds = nullptr) : fOrigPaint(paint) {
|
| fCanvas = canvas;
|
| #ifdef SK_SUPPORT_LEGACY_DRAWFILTER
|
| @@ -580,28 +575,28 @@ bool AutoDrawLooper::doNext(SkDrawFilter::Type drawType) {
|
|
|
| ////////// macros to place around the internal draw calls //////////////////
|
|
|
| -#define LOOPER_BEGIN_DRAWBITMAP(paint, skipLayerForFilter, bounds) \
|
| - this->predrawNotify(); \
|
| - AutoDrawLooper looper(this, fProps, paint, skipLayerForFilter, bounds); \
|
| - while (looper.next(SkDrawFilter::kBitmap_Type)) { \
|
| +#define LOOPER_BEGIN_DRAWBITMAP(paint, skipLayerForFilter, bounds) \
|
| + this->predrawNotify(); \
|
| + AutoDrawLooper looper(this, paint, skipLayerForFilter, bounds); \
|
| + while (looper.next(SkDrawFilter::kBitmap_Type)) { \
|
| SkDrawIter iter(this);
|
|
|
|
|
| #define LOOPER_BEGIN_DRAWDEVICE(paint, type) \
|
| this->predrawNotify(); \
|
| - AutoDrawLooper looper(this, fProps, paint, true); \
|
| + AutoDrawLooper looper(this, paint, true); \
|
| while (looper.next(type)) { \
|
| SkDrawIter iter(this);
|
|
|
| #define LOOPER_BEGIN(paint, type, bounds) \
|
| this->predrawNotify(); \
|
| - AutoDrawLooper looper(this, fProps, paint, false, bounds); \
|
| + AutoDrawLooper looper(this, paint, false, bounds); \
|
| while (looper.next(type)) { \
|
| SkDrawIter iter(this);
|
|
|
| #define LOOPER_BEGIN_CHECK_COMPLETE_OVERWRITE(paint, type, bounds, auxOpaque) \
|
| this->predrawNotify(bounds, &paint, auxOpaque); \
|
| - AutoDrawLooper looper(this, fProps, paint, false, bounds); \
|
| + AutoDrawLooper looper(this, paint, false, bounds); \
|
| while (looper.next(type)) { \
|
| SkDrawIter iter(this);
|
|
|
| @@ -3263,12 +3258,12 @@ void SkCanvas::onDrawShadowedPicture(const SkPicture* picture,
|
| ///////////////////////////////////////////////////////////////////////////////
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -SkCanvas::LayerIter::LayerIter(SkCanvas* canvas, bool skipEmptyClips) {
|
| +SkCanvas::LayerIter::LayerIter(SkCanvas* canvas) {
|
| static_assert(sizeof(fStorage) >= sizeof(SkDrawIter), "fStorage_too_small");
|
|
|
| SkASSERT(canvas);
|
|
|
| - fImpl = new (fStorage) SkDrawIter(canvas, skipEmptyClips);
|
| + fImpl = new (fStorage) SkDrawIter(canvas);
|
| fDone = !fImpl->next();
|
| }
|
|
|
|
|