From c54d8db4d169ea5f2af2a9a2349df007bd428475 Mon Sep 17 00:00:00 2001 From: Florin Malita Date: Wed, 10 Dec 2014 12:02:16 -0500 Subject: [PATCH] Remove SkCanvas::drawBitmapMatrix() R=mtklein@google.com, reed@google.com, robertphillips@google.com Review URL: https://codereview.chromium.org/789033002 --- bench/BitmapScaleBench.cpp | 3 +- experimental/PdfViewer/SkNulCanvas.h | 2 - gm/bitmapmatrix.cpp | 135 --------------------------- gm/downsamplebitmap.cpp | 3 +- gm/filterbitmap.cpp | 24 +++-- gm/filterindiabox.cpp | 23 +++-- gm/xfermodes.cpp | 17 +++- gyp/gmslides.gypi | 1 - include/core/SkCanvas.h | 3 - include/utils/SkDeferredCanvas.h | 2 - include/utils/SkDumpCanvas.h | 2 - include/utils/SkLuaCanvas.h | 2 - include/utils/SkNWayCanvas.h | 2 - include/utils/SkProxyCanvas.h | 2 - src/core/SkCanvas.cpp | 7 -- src/core/SkPictureFlat.h | 2 +- src/core/SkPicturePlayback.cpp | 5 +- src/core/SkPictureRecord.cpp | 14 +-- src/core/SkPictureRecord.h | 2 - src/core/SkRecordDraw.cpp | 6 -- src/core/SkRecorder.cpp | 6 -- src/core/SkRecorder.h | 3 - src/core/SkRecords.h | 2 - src/pdf/SkPDFShader.cpp | 28 +++--- src/pipe/SkGPipePriv.h | 1 - src/pipe/SkGPipeRead.cpp | 14 --- src/pipe/SkGPipeWrite.cpp | 12 --- src/utils/SkDeferredCanvas.cpp | 11 --- src/utils/SkDumpCanvas.cpp | 9 -- src/utils/SkLuaCanvas.cpp | 8 -- src/utils/SkNWayCanvas.cpp | 8 -- src/utils/SkProxyCanvas.cpp | 5 - src/utils/debugger/SkDebugCanvas.cpp | 5 - src/utils/debugger/SkDebugCanvas.h | 3 - src/utils/debugger/SkDrawCommand.cpp | 29 ------ src/utils/debugger/SkDrawCommand.h | 15 --- tests/PictureTest.cpp | 1 - tests/SurfaceTest.cpp | 5 - 38 files changed, 61 insertions(+), 361 deletions(-) delete mode 100644 gm/bitmapmatrix.cpp diff --git a/bench/BitmapScaleBench.cpp b/bench/BitmapScaleBench.cpp index fad741aebc..665e294ece 100644 --- a/bench/BitmapScaleBench.cpp +++ b/bench/BitmapScaleBench.cpp @@ -94,7 +94,8 @@ protected: paint.setFilterLevel(SkPaint::kHigh_FilterLevel); fInputBitmap.notifyPixelsChanged(); - canvas.drawBitmapMatrix( fInputBitmap, fMatrix, &paint ); + canvas.concat(fMatrix); + canvas.drawBitmap(fInputBitmap, 0, 0, &paint ); } private: typedef BitmapScaleBench INHERITED; diff --git a/experimental/PdfViewer/SkNulCanvas.h b/experimental/PdfViewer/SkNulCanvas.h index c09e9eb6b2..c895863e5c 100644 --- a/experimental/PdfViewer/SkNulCanvas.h +++ b/experimental/PdfViewer/SkNulCanvas.h @@ -40,8 +40,6 @@ public: const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE {} - virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint = NULL) SK_OVERRIDE {} virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint = NULL) SK_OVERRIDE {} virtual void drawSprite(const SkBitmap& bitmap, int left, int top, diff --git a/gm/bitmapmatrix.cpp b/gm/bitmapmatrix.cpp deleted file mode 100644 index 052d153316..0000000000 --- a/gm/bitmapmatrix.cpp +++ /dev/null @@ -1,135 +0,0 @@ - -/* - * Copyright 2012 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#include "gm.h" -#include "SkBitmap.h" -#include "SkBlurMask.h" -#include "SkBlurMaskFilter.h" -#include "SkCanvas.h" -#include "SkColor.h" -#include "SkMatrix.h" -#include "SkPath.h" -#include "SkRect.h" -#include "SkSize.h" -#include "SkString.h" - -namespace skiagm { - -class DrawBitmapMatrixGM : public GM { -public: - DrawBitmapMatrixGM() {} - -protected: - virtual uint32_t onGetFlags() const SK_OVERRIDE { - return kSkipTiled_Flag; - } - - virtual SkString onShortName() SK_OVERRIDE { - return SkString("drawbitmapmatrix"); - } - - virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(1024, 256); } - - virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { - SkBitmap bm; - this->setupBitmap(&bm); - - // Draw normally. - SkMatrix matrix; - matrix.reset(); - SkPaint paint; - paint.setAntiAlias(true); - paint.setDither(true); - canvas->drawBitmapMatrix(bm, matrix, &paint); - - // Draw stretched horizontally and squished vertically. - canvas->translate(SkIntToScalar(bm.width() + 5), 0); - matrix.setScale(SkIntToScalar(2), SK_ScalarHalf); - canvas->drawBitmapMatrix(bm, matrix, &paint); - - // Draw rotated - canvas->translate(SkIntToScalar(bm.width()*2 + 5), 0); - matrix.reset(); - matrix.setRotate(SkIntToScalar(45), SkIntToScalar(bm.width() / 2), - SkIntToScalar(bm.height() / 2)); - canvas->save(); - canvas->translate(0, SkIntToScalar(10)); - canvas->drawBitmapMatrix(bm, matrix, &paint); - canvas->restore(); - - // Draw with perspective - canvas->translate(SkIntToScalar(bm.width() + 15), 0); - matrix.reset(); - matrix.setPerspX(SkScalarDiv(SK_Scalar1, SkIntToScalar(1000))); - matrix.setPerspY(SkScalarDiv(SK_Scalar1, SkIntToScalar(1000))); - canvas->drawBitmapMatrix(bm, matrix, &paint); - - // Draw with skew - canvas->translate(SkIntToScalar(bm.width() + 5), 0); - matrix.reset(); - matrix.setSkew(SkIntToScalar(2), SkIntToScalar(2)); - canvas->drawBitmapMatrix(bm, matrix, &paint); - - // Draw with sin/cos - canvas->translate(SkIntToScalar(bm.width() * 4), 0); - matrix.reset(); - matrix.setSinCos(SK_ScalarHalf, SkIntToScalar(2)); - canvas->drawBitmapMatrix(bm, matrix, &paint); - - { - // test the following code path: - // SkGpuDevice::drawPath() -> SkGpuDevice::drawWithMaskFilter() - SkPaint paint; - - paint.setFilterLevel(SkPaint::kLow_FilterLevel); - - SkMaskFilter* mf = SkBlurMaskFilter::Create( - kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(5), - SkBlurMaskFilter::kHighQuality_BlurFlag | - SkBlurMaskFilter::kIgnoreTransform_BlurFlag); - paint.setMaskFilter(mf)->unref(); - - canvas->translate(SkIntToScalar(bm.width()*2 + 20), 0); - - matrix.reset(); - matrix.setRotate(SkIntToScalar(45), SkIntToScalar(bm.width() / 2), - SkIntToScalar(bm.height() / 2)); - - canvas->save(); - canvas->translate(0, SkIntToScalar(20)); - canvas->drawBitmapMatrix(bm, matrix, &paint); - canvas->restore(); - } - - } -private: - void setupBitmap(SkBitmap* bm) { - SkASSERT(bm); - static const int SIZE = 64; - bm->allocN32Pixels(SIZE, SIZE); - SkCanvas canvas(*bm); - - SkPaint paint; - paint.setColor(SK_ColorGREEN); - canvas.drawPaint(paint); - - paint.setColor(SK_ColorBLUE); - paint.setAntiAlias(true); - SkRect rect = SkRect::MakeWH(SkIntToScalar(SIZE), SkIntToScalar(SIZE)); - SkPath path; - path.addOval(rect); - canvas.drawPath(path, paint); - } -}; - -//////////////////////////////////////////////////////////////////////////////// - -static GM* MyFactory(void*) { return new DrawBitmapMatrixGM; } -static GMRegistry reg(MyFactory); - -} diff --git a/gm/downsamplebitmap.cpp b/gm/downsamplebitmap.cpp index 1d204fc71a..994ab9412b 100644 --- a/gm/downsamplebitmap.cpp +++ b/gm/downsamplebitmap.cpp @@ -78,7 +78,8 @@ protected: canvas->save(); canvas->translate(0, (SkScalar)curY); - canvas->drawBitmapMatrix( fBM, matrix, &paint ); + canvas->concat(matrix); + canvas->drawBitmap(fBM, 0, 0, &paint); canvas->restore(); curHeight = (int) (fBM.height() * curScale + 2); diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp index 81aa3e19e0..d40f8bcd7c 100644 --- a/gm/filterbitmap.cpp +++ b/gm/filterbitmap.cpp @@ -24,24 +24,22 @@ static SkSize computeSize(const SkBitmap& bm, const SkMatrix& mat) { return SkSize::Make(bounds.width(), bounds.height()); } -static void draw_row(SkCanvas* canvas, const SkBitmap& bm, const SkMatrix& mat, SkScalar dx) { +static void draw_cell(SkCanvas* canvas, const SkBitmap& bm, const SkMatrix& mat, SkScalar dx, + SkPaint::FilterLevel lvl) { SkPaint paint; + paint.setFilterLevel(lvl); SkAutoCanvasRestore acr(canvas, true); - - canvas->drawBitmapMatrix(bm, mat, &paint); - - paint.setFilterLevel(SkPaint::kLow_FilterLevel); canvas->translate(dx, 0); - canvas->drawBitmapMatrix(bm, mat, &paint); + canvas->concat(mat); + canvas->drawBitmap(bm, 0, 0, &paint); +} - paint.setFilterLevel(SkPaint::kMedium_FilterLevel); - canvas->translate(dx, 0); - canvas->drawBitmapMatrix(bm, mat, &paint); - - paint.setFilterLevel(SkPaint::kHigh_FilterLevel); - canvas->translate(dx, 0); - canvas->drawBitmapMatrix(bm, mat, &paint); +static void draw_row(SkCanvas* canvas, const SkBitmap& bm, const SkMatrix& mat, SkScalar dx) { + draw_cell(canvas, bm, mat, 0 * dx, SkPaint::kNone_FilterLevel); + draw_cell(canvas, bm, mat, 1 * dx, SkPaint::kLow_FilterLevel); + draw_cell(canvas, bm, mat, 2 * dx, SkPaint::kMedium_FilterLevel); + draw_cell(canvas, bm, mat, 3 * dx, SkPaint::kHigh_FilterLevel); } class FilterBitmapGM : public skiagm::GM { diff --git a/gm/filterindiabox.cpp b/gm/filterindiabox.cpp index a29f08b8b6..6b662f064f 100644 --- a/gm/filterindiabox.cpp +++ b/gm/filterindiabox.cpp @@ -23,24 +23,23 @@ static SkSize computeSize(const SkBitmap& bm, const SkMatrix& mat) { return SkSize::Make(bounds.width(), bounds.height()); } -static void draw_row(SkCanvas* canvas, const SkBitmap& bm, const SkMatrix& mat, SkScalar dx) { +static void draw_cell(SkCanvas* canvas, const SkBitmap& bm, const SkMatrix& mat, SkScalar dx, + SkPaint::FilterLevel lvl) { SkPaint paint; + paint.setFilterLevel(lvl); SkAutoCanvasRestore acr(canvas, true); - canvas->drawBitmapMatrix(bm, mat, &paint); - - paint.setFilterLevel(SkPaint::kLow_FilterLevel); canvas->translate(dx, 0); - canvas->drawBitmapMatrix(bm, mat, &paint); + canvas->concat(mat); + canvas->drawBitmap(bm, 0, 0, &paint); +} - paint.setFilterLevel(SkPaint::kMedium_FilterLevel); - canvas->translate(dx, 0); - canvas->drawBitmapMatrix(bm, mat, &paint); - - paint.setFilterLevel(SkPaint::kHigh_FilterLevel); - canvas->translate(dx, 0); - canvas->drawBitmapMatrix(bm, mat, &paint); +static void draw_row(SkCanvas* canvas, const SkBitmap& bm, const SkMatrix& mat, SkScalar dx) { + draw_cell(canvas, bm, mat, 0 * dx, SkPaint::kNone_FilterLevel); + draw_cell(canvas, bm, mat, 1 * dx, SkPaint::kLow_FilterLevel); + draw_cell(canvas, bm, mat, 2 * dx, SkPaint::kMedium_FilterLevel); + draw_cell(canvas, bm, mat, 3 * dx, SkPaint::kHigh_FilterLevel); } class FilterIndiaBoxGM : public skiagm::GM { diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp index 721a76e695..d881ae1e6d 100644 --- a/gm/xfermodes.cpp +++ b/gm/xfermodes.cpp @@ -84,13 +84,17 @@ class XfermodesGM : public GM { bool restoreNeeded = false; m.setTranslate(x, y); - canvas->drawBitmapMatrix(fSrcB, m, &p); + canvas->drawBitmap(fSrcB, x, y, &p); p.setXfermode(mode); switch (srcType) { - case kSmallTransparentImage_SrcType: + case kSmallTransparentImage_SrcType: { m.postScale(SK_ScalarHalf, SK_ScalarHalf, x, y); - canvas->drawBitmapMatrix(fTransparent, m, &p); + + SkAutoCanvasRestore acr(canvas, true); + canvas->concat(m); + canvas->drawBitmap(fTransparent, 0, 0, &p); break; + } case kQuarterClearInLayer_SrcType: { SkRect bounds = SkRect::MakeXYWH(x, y, SkIntToScalar(W), SkIntToScalar(H)); @@ -135,9 +139,12 @@ class XfermodesGM : public GM { case kRectangleImageWithAlpha_SrcType: p.setAlpha(0x88); // Fall through. - case kRectangleImage_SrcType: - canvas->drawBitmapMatrix(fDstB, m, &p); + case kRectangleImage_SrcType: { + SkAutoCanvasRestore acr(canvas, true); + canvas->concat(m); + canvas->drawBitmap(fDstB, 0, 0, &p); break; + } default: break; } diff --git a/gyp/gmslides.gypi b/gyp/gmslides.gypi index 61575d3ecd..61ba3acbc0 100644 --- a/gyp/gmslides.gypi +++ b/gyp/gmslides.gypi @@ -25,7 +25,6 @@ '../gm/bigmatrix.cpp', '../gm/bigtext.cpp', '../gm/bitmapcopy.cpp', - '../gm/bitmapmatrix.cpp', '../gm/bitmapfilters.cpp', '../gm/bitmappremul.cpp', '../gm/bitmaprect.cpp', diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h index 46dc3774f0..c4ec76aee4 100644 --- a/include/core/SkCanvas.h +++ b/include/core/SkCanvas.h @@ -853,9 +853,6 @@ public: this->drawBitmapRectToRect(bitmap, realSrcPtr, dst, paint, flags); } - virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint = NULL); - /** * Draw the bitmap stretched differentially to fit into dst. * center is a rect within the bitmap, and logically divides the bitmap diff --git a/include/utils/SkDeferredCanvas.h b/include/utils/SkDeferredCanvas.h index ec5ea13b59..fca4dcd946 100644 --- a/include/utils/SkDeferredCanvas.h +++ b/include/utils/SkDeferredCanvas.h @@ -160,8 +160,6 @@ public: const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint) SK_OVERRIDE; virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) SK_OVERRIDE; diff --git a/include/utils/SkDumpCanvas.h b/include/utils/SkDumpCanvas.h index c0a105e85d..4ee4c04e9e 100644 --- a/include/utils/SkDumpCanvas.h +++ b/include/utils/SkDumpCanvas.h @@ -87,8 +87,6 @@ public: virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint) SK_OVERRIDE; virtual void drawSprite(const SkBitmap& bitmap, int left, int top, const SkPaint* paint) SK_OVERRIDE; virtual void drawVertices(VertexMode vmode, int vertexCount, diff --git a/include/utils/SkLuaCanvas.h b/include/utils/SkLuaCanvas.h index ea0e692663..7eede85b71 100644 --- a/include/utils/SkLuaCanvas.h +++ b/include/utils/SkLuaCanvas.h @@ -32,8 +32,6 @@ public: virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint) SK_OVERRIDE; virtual void drawSprite(const SkBitmap& bitmap, int left, int top, const SkPaint* paint) SK_OVERRIDE; virtual void drawVertices(VertexMode vmode, int vertexCount, diff --git a/include/utils/SkNWayCanvas.h b/include/utils/SkNWayCanvas.h index ec5d49afea..ee780104c1 100644 --- a/include/utils/SkNWayCanvas.h +++ b/include/utils/SkNWayCanvas.h @@ -40,8 +40,6 @@ public: virtual void drawImageRect(const SkImage* image, const SkRect* src, const SkRect& dst, const SkPaint* paint) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint*) SK_OVERRIDE; virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint = NULL) SK_OVERRIDE; diff --git a/include/utils/SkProxyCanvas.h b/include/utils/SkProxyCanvas.h index 862296cedb..49fcf5fa3f 100644 --- a/include/utils/SkProxyCanvas.h +++ b/include/utils/SkProxyCanvas.h @@ -38,8 +38,6 @@ public: virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint = NULL) SK_OVERRIDE; virtual void drawImage(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint = NULL) SK_OVERRIDE; virtual void drawImageRect(const SkImage* image, const SkRect* src, diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 8351a52bf7..bf86005315 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1961,13 +1961,6 @@ void SkCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, this->internalDrawBitmapRect(bitmap, src, dst, paint, flags); } -void SkCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, - const SkPaint* paint) { - TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawBitmapMatrix()"); - SkDEBUGCODE(bitmap.validate();) - this->internalDrawBitmap(bitmap, matrix, paint); -} - void SkCanvas::internalDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { diff --git a/src/core/SkPictureFlat.h b/src/core/SkPictureFlat.h index 61c4813597..73248051eb 100644 --- a/src/core/SkPictureFlat.h +++ b/src/core/SkPictureFlat.h @@ -27,7 +27,7 @@ enum DrawType { CLIP_RRECT, CONCAT, DRAW_BITMAP, - DRAW_BITMAP_MATRIX, + DRAW_BITMAP_MATRIX, // deprecated, M41 was last Chromium version to write this to an .skp DRAW_BITMAP_NINE, DRAW_BITMAP_RECT_TO_RECT, DRAW_CLEAR, diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index 661115e41a..b4cac52dd4 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -186,7 +186,10 @@ void SkPicturePlayback::handleOp(SkReader32* reader, const SkBitmap bitmap = shallow_copy(fPictureData->getBitmap(reader)); SkMatrix matrix; reader->readMatrix(&matrix); - canvas->drawBitmapMatrix(bitmap, matrix, paint); + + SkAutoCanvasRestore acr(canvas, true); + canvas->concat(matrix); + canvas->drawBitmap(bitmap, 0, 0, paint); } break; case DRAW_BITMAP_NINE: { const SkPaint* paint = fPictureData->getPaint(reader); diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp index ac05e841d7..778abb5f97 100644 --- a/src/core/SkPictureRecord.cpp +++ b/src/core/SkPictureRecord.cpp @@ -57,7 +57,7 @@ static inline size_t get_paint_offset(DrawType op, size_t opSize) { 0, // CLIP_RRECT - no paint 0, // CONCAT - no paint 1, // DRAW_BITMAP - right after op code - 1, // DRAW_BITMAP_MATRIX - right after op code + 1, // DRAW_BITMAP_MATRIX - right after op code, deprecated 1, // DRAW_BITMAP_NINE - right after op code 1, // DRAW_BITMAP_RECT_TO_RECT - right after op code 0, // DRAW_CLEAR - no paint @@ -573,18 +573,6 @@ void SkPictureRecord::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* this->validate(initialOffset, size); } -void SkPictureRecord::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, - const SkPaint* paint) { - // id + paint index + bitmap index + matrix - size_t size = 3 * kUInt32Size + matrix.writeToMemory(NULL); - size_t initialOffset = this->addDraw(DRAW_BITMAP_MATRIX, &size); - SkASSERT(initialOffset+get_paint_offset(DRAW_BITMAP_MATRIX, size) == fWriter.bytesWritten()); - this->addPaintPtr(paint); - this->addBitmap(bitmap); - this->addMatrix(matrix); - this->validate(initialOffset, size); -} - void SkPictureRecord::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { // op + paint index + bitmap id + center + dst rect diff --git a/src/core/SkPictureRecord.h b/src/core/SkPictureRecord.h index 2a3e4e1070..e8ce4bde56 100644 --- a/src/core/SkPictureRecord.h +++ b/src/core/SkPictureRecord.h @@ -41,8 +41,6 @@ public: virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, - const SkPaint*) SK_OVERRIDE; virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint*) SK_OVERRIDE; virtual void drawSprite(const SkBitmap&, int left, int top, diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp index 4443071f22..7f575d1ac2 100644 --- a/src/core/SkRecordDraw.cpp +++ b/src/core/SkRecordDraw.cpp @@ -101,7 +101,6 @@ DRAW(AddComment, addComment(r.key, r.value)); DRAW(EndCommentGroup, endCommentGroup()); DRAW(DrawBitmap, drawBitmap(shallow_copy(r.bitmap), r.left, r.top, r.paint)); -DRAW(DrawBitmapMatrix, drawBitmapMatrix(shallow_copy(r.bitmap), r.matrix, r.paint)); DRAW(DrawBitmapNine, drawBitmapNine(shallow_copy(r.bitmap), r.center, r.dst, r.paint)); DRAW(DrawBitmapRectToRect, drawBitmapRectToRect(shallow_copy(r.bitmap), r.src, r.dst, r.paint, @@ -436,11 +435,6 @@ private: SkRect::MakeXYWH(op.left, op.top, op.bitmap.width(), op.bitmap.height()), op.paint); } - Bounds bounds(const DrawBitmapMatrix& op) const { - SkRect dst = SkRect::MakeWH(op.bitmap.width(), op.bitmap.height()); - op.matrix.mapRect(&dst); - return this->adjustAndMap(dst, op.paint); - } Bounds bounds(const DrawPath& op) const { return op.path.isInverseFillType() ? fCurrentClipBounds diff --git a/src/core/SkRecorder.cpp b/src/core/SkRecorder.cpp index 04da7c440c..e29d43d7d8 100644 --- a/src/core/SkRecorder.cpp +++ b/src/core/SkRecorder.cpp @@ -179,12 +179,6 @@ void SkRecorder::drawBitmapRectToRect(const SkBitmap& bitmap, this->copy(paint), delay_copy(bitmap), this->copy(src), dst); } -void SkRecorder::drawBitmapMatrix(const SkBitmap& bitmap, - const SkMatrix& matrix, - const SkPaint* paint) { - APPEND(DrawBitmapMatrix, this->copy(paint), delay_copy(bitmap), matrix); -} - void SkRecorder::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, diff --git a/src/core/SkRecorder.h b/src/core/SkRecorder.h index ff5c9ed96c..102aac5a1d 100644 --- a/src/core/SkRecorder.h +++ b/src/core/SkRecorder.h @@ -63,9 +63,6 @@ public: const SkRect& dst, const SkPaint* paint = NULL, DrawBitmapRectFlags flags = kNone_DrawBitmapRectFlag) SK_OVERRIDE; - void drawBitmapMatrix(const SkBitmap& bitmap, - const SkMatrix& m, - const SkPaint* paint = NULL) SK_OVERRIDE; void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, diff --git a/src/core/SkRecords.h b/src/core/SkRecords.h index 046626af4b..d6fc723b39 100644 --- a/src/core/SkRecords.h +++ b/src/core/SkRecords.h @@ -42,7 +42,6 @@ namespace SkRecords { M(AddComment) \ M(EndCommentGroup) \ M(DrawBitmap) \ - M(DrawBitmapMatrix) \ M(DrawBitmapNine) \ M(DrawBitmapRectToRect) \ M(DrawBitmapRectToRectBleed) \ @@ -246,7 +245,6 @@ RECORD4(DrawBitmap, Optional, paint, ImmutableBitmap, bitmap, SkScalar, left, SkScalar, top); -RECORD3(DrawBitmapMatrix, Optional, paint, ImmutableBitmap, bitmap, TypedMatrix, matrix); RECORD4(DrawBitmapNine, Optional, paint, ImmutableBitmap, bitmap, SkIRect, center, diff --git a/src/pdf/SkPDFShader.cpp b/src/pdf/SkPDFShader.cpp index d9b701c081..85ebe9e145 100644 --- a/src/pdf/SkPDFShader.cpp +++ b/src/pdf/SkPDFShader.cpp @@ -469,6 +469,12 @@ static SkString sweepCode(const SkShader::GradientInfo& info, return function; } +static void drawBitmapMatrix(SkCanvas* canvas, const SkBitmap& bm, const SkMatrix& matrix) { + SkAutoCanvasRestore acr(canvas, true); + canvas->concat(matrix); + canvas->drawBitmap(bm, 0, 0); +} + class SkPDFShader::State { public: SkShader::GradientType fType; @@ -1015,14 +1021,14 @@ SkPDFImageShader::SkPDFImageShader(SkPDFShader::State* state) : fState(state) { SkMatrix xMirror; xMirror.setScale(-1, 1); xMirror.postTranslate(2 * width, 0); - canvas.drawBitmapMatrix(*image, xMirror); + drawBitmapMatrix(&canvas, *image, xMirror); patternBBox.fRight += width; } if (tileModes[1] == SkShader::kMirror_TileMode) { SkMatrix yMirror; yMirror.setScale(SK_Scalar1, -SK_Scalar1); yMirror.postTranslate(0, 2 * height); - canvas.drawBitmapMatrix(*image, yMirror); + drawBitmapMatrix(&canvas, *image, yMirror); patternBBox.fBottom += height; } if (tileModes[0] == SkShader::kMirror_TileMode && @@ -1030,7 +1036,7 @@ SkPDFImageShader::SkPDFImageShader(SkPDFShader::State* state) : fState(state) { SkMatrix mirror; mirror.setScale(-1, -1); mirror.postTranslate(2 * width, 2 * height); - canvas.drawBitmapMatrix(*image, mirror); + drawBitmapMatrix(&canvas, *image, mirror); } // Then handle Clamping, which requires expanding the pattern canvas to @@ -1081,12 +1087,12 @@ SkPDFImageShader::SkPDFImageShader(SkPDFShader::State* state) : fState(state) { SkMatrix leftMatrix; leftMatrix.setScale(-deviceBounds.left(), 1); leftMatrix.postTranslate(deviceBounds.left(), 0); - canvas.drawBitmapMatrix(left, leftMatrix); + drawBitmapMatrix(&canvas, left, leftMatrix); if (tileModes[1] == SkShader::kMirror_TileMode) { leftMatrix.postScale(SK_Scalar1, -SK_Scalar1); leftMatrix.postTranslate(0, 2 * height); - canvas.drawBitmapMatrix(left, leftMatrix); + drawBitmapMatrix(&canvas, left, leftMatrix); } patternBBox.fLeft = 0; } @@ -1099,12 +1105,12 @@ SkPDFImageShader::SkPDFImageShader(SkPDFShader::State* state) : fState(state) { SkMatrix rightMatrix; rightMatrix.setScale(deviceBounds.right() - width, 1); rightMatrix.postTranslate(width, 0); - canvas.drawBitmapMatrix(right, rightMatrix); + drawBitmapMatrix(&canvas, right, rightMatrix); if (tileModes[1] == SkShader::kMirror_TileMode) { rightMatrix.postScale(SK_Scalar1, -SK_Scalar1); rightMatrix.postTranslate(0, 2 * height); - canvas.drawBitmapMatrix(right, rightMatrix); + drawBitmapMatrix(&canvas, right, rightMatrix); } patternBBox.fRight = deviceBounds.width(); } @@ -1119,12 +1125,12 @@ SkPDFImageShader::SkPDFImageShader(SkPDFShader::State* state) : fState(state) { SkMatrix topMatrix; topMatrix.setScale(SK_Scalar1, -deviceBounds.top()); topMatrix.postTranslate(0, deviceBounds.top()); - canvas.drawBitmapMatrix(top, topMatrix); + drawBitmapMatrix(&canvas, top, topMatrix); if (tileModes[0] == SkShader::kMirror_TileMode) { topMatrix.postScale(-1, 1); topMatrix.postTranslate(2 * width, 0); - canvas.drawBitmapMatrix(top, topMatrix); + drawBitmapMatrix(&canvas, top, topMatrix); } patternBBox.fTop = 0; } @@ -1137,12 +1143,12 @@ SkPDFImageShader::SkPDFImageShader(SkPDFShader::State* state) : fState(state) { SkMatrix bottomMatrix; bottomMatrix.setScale(SK_Scalar1, deviceBounds.bottom() - height); bottomMatrix.postTranslate(0, height); - canvas.drawBitmapMatrix(bottom, bottomMatrix); + drawBitmapMatrix(&canvas, bottom, bottomMatrix); if (tileModes[0] == SkShader::kMirror_TileMode) { bottomMatrix.postScale(-1, 1); bottomMatrix.postTranslate(2 * width, 0); - canvas.drawBitmapMatrix(bottom, bottomMatrix); + drawBitmapMatrix(&canvas, bottom, bottomMatrix); } patternBBox.fBottom = deviceBounds.height(); } diff --git a/src/pipe/SkGPipePriv.h b/src/pipe/SkGPipePriv.h index 121512d42a..2ea6ba5d55 100644 --- a/src/pipe/SkGPipePriv.h +++ b/src/pipe/SkGPipePriv.h @@ -40,7 +40,6 @@ enum DrawOps { kClipRRect_DrawOp, kConcat_DrawOp, kDrawBitmap_DrawOp, - kDrawBitmapMatrix_DrawOp, kDrawBitmapNine_DrawOp, kDrawBitmapRectToRect_DrawOp, kDrawClear_DrawOp, diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp index 8cb0e34d0a..bdd925e3c5 100644 --- a/src/pipe/SkGPipeRead.cpp +++ b/src/pipe/SkGPipeRead.cpp @@ -590,19 +590,6 @@ static void drawBitmap_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, } } -static void drawBitmapMatrix_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, - SkGPipeState* state) { - BitmapHolder holder(reader, op32, state); - bool hasPaint = SkToBool(DrawOp_unpackFlags(op32) & kDrawBitmap_HasPaint_DrawOpFlag); - SkMatrix matrix; - reader->readMatrix(&matrix); - const SkBitmap* bitmap = holder.getBitmap(); - if (state->shouldDraw()) { - canvas->drawBitmapMatrix(*bitmap, matrix, - hasPaint ? &state->paint() : NULL); - } -} - static void drawBitmapNine_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, SkGPipeState* state) { BitmapHolder holder(reader, op32, state); @@ -825,7 +812,6 @@ static const ReadProc gReadTable[] = { clipRRect_rp, concat_rp, drawBitmap_rp, - drawBitmapMatrix_rp, drawBitmapNine_rp, drawBitmapRect_rp, drawClear_rp, diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp index a5af6c7111..9b73c6340e 100644 --- a/src/pipe/SkGPipeWrite.cpp +++ b/src/pipe/SkGPipeWrite.cpp @@ -245,8 +245,6 @@ public: virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, - const SkPaint*) SK_OVERRIDE; virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint = NULL) SK_OVERRIDE; virtual void drawSprite(const SkBitmap&, int left, int top, @@ -820,16 +818,6 @@ void SkGPipeCanvas::drawBitmapRectToRect(const SkBitmap& bm, const SkRect* src, } } -void SkGPipeCanvas::drawBitmapMatrix(const SkBitmap& bm, const SkMatrix& matrix, - const SkPaint* paint) { - NOTIFY_SETUP(this); - size_t opBytesNeeded = matrix.writeToMemory(NULL); - - if (this->commonDrawBitmap(bm, kDrawBitmapMatrix_DrawOp, 0, opBytesNeeded, paint)) { - fWriter.writeMatrix(matrix); - } -} - void SkGPipeCanvas::drawBitmapNine(const SkBitmap& bm, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { NOTIFY_SETUP(this); diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp index 34b9146996..94b3694708 100644 --- a/src/utils/SkDeferredCanvas.cpp +++ b/src/utils/SkDeferredCanvas.cpp @@ -829,17 +829,6 @@ void SkDeferredCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, this->recordedDrawCommand(); } - -void SkDeferredCanvas::drawBitmapMatrix(const SkBitmap& bitmap, - const SkMatrix& m, - const SkPaint* paint) { - // TODO: reset recording canvas if paint+bitmap is opaque and clip rect - // covers canvas entirely and transformed bitmap covers canvas entirely - AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); - this->drawingCanvas()->drawBitmapMatrix(bitmap, m, paint); - this->recordedDrawCommand(); -} - void SkDeferredCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { diff --git a/src/utils/SkDumpCanvas.cpp b/src/utils/SkDumpCanvas.cpp index e7b64a4d2f..b7867a69db 100644 --- a/src/utils/SkDumpCanvas.cpp +++ b/src/utils/SkDumpCanvas.cpp @@ -373,15 +373,6 @@ void SkDumpCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* sr bs.c_str(), rs.c_str()); } -void SkDumpCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint) { - SkString bs, ms; - bitmap.toString(&bs); - m.toString(&ms); - this->dump(kDrawBitmap_Verb, paint, "drawBitmapMatrix(%s %s)", - bs.c_str(), ms.c_str()); -} - void SkDumpCanvas::drawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint* paint) { SkString str; diff --git a/src/utils/SkLuaCanvas.cpp b/src/utils/SkLuaCanvas.cpp index 8fe1aa2bbf..baa9a90ffd 100644 --- a/src/utils/SkLuaCanvas.cpp +++ b/src/utils/SkLuaCanvas.cpp @@ -223,14 +223,6 @@ void SkLuaCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src } } -void SkLuaCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint) { - AUTO_LUA("drawBitmapMatrix"); - if (paint) { - lua.pushPaint(*paint, "paint"); - } -} - void SkLuaCanvas::drawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint* paint) { AUTO_LUA("drawSprite"); diff --git a/src/utils/SkNWayCanvas.cpp b/src/utils/SkNWayCanvas.cpp index ddd9b927fd..c2a90a6331 100644 --- a/src/utils/SkNWayCanvas.cpp +++ b/src/utils/SkNWayCanvas.cpp @@ -202,14 +202,6 @@ void SkNWayCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* sr } } -void SkNWayCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint) { - Iter iter(fList); - while (iter.next()) { - iter->drawBitmapMatrix(bitmap, m, paint); - } -} - void SkNWayCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { Iter iter(fList); diff --git a/src/utils/SkProxyCanvas.cpp b/src/utils/SkProxyCanvas.cpp index 61c62eff81..9adc81c722 100644 --- a/src/utils/SkProxyCanvas.cpp +++ b/src/utils/SkProxyCanvas.cpp @@ -117,11 +117,6 @@ void SkProxyCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* s fProxy->drawBitmapRectToRect(bitmap, src, dst, paint, flags); } -void SkProxyCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, - const SkPaint* paint) { - fProxy->drawBitmapMatrix(bitmap, m, paint); -} - void SkProxyCanvas::drawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint* paint) { fProxy->drawSprite(bitmap, x, y, paint); diff --git a/src/utils/debugger/SkDebugCanvas.cpp b/src/utils/debugger/SkDebugCanvas.cpp index 787cf89299..40277b047e 100644 --- a/src/utils/debugger/SkDebugCanvas.cpp +++ b/src/utils/debugger/SkDebugCanvas.cpp @@ -472,11 +472,6 @@ void SkDebugCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, this->addDrawCommand(new SkDrawBitmapRectCommand(bitmap, src, dst, paint, flags)); } -void SkDebugCanvas::drawBitmapMatrix(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint* paint) { - this->addDrawCommand(new SkDrawBitmapMatrixCommand(bitmap, matrix, paint)); -} - void SkDebugCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { this->addDrawCommand(new SkDrawBitmapNineCommand(bitmap, center, dst, paint)); diff --git a/src/utils/debugger/SkDebugCanvas.h b/src/utils/debugger/SkDebugCanvas.h index 2c079bd4c3..6ec26e2581 100644 --- a/src/utils/debugger/SkDebugCanvas.h +++ b/src/utils/debugger/SkDebugCanvas.h @@ -165,9 +165,6 @@ public: const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) SK_OVERRIDE; - virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, - const SkPaint*) SK_OVERRIDE; - virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint*) SK_OVERRIDE; diff --git a/src/utils/debugger/SkDrawCommand.cpp b/src/utils/debugger/SkDrawCommand.cpp index 08a97188c1..02beee7ced 100644 --- a/src/utils/debugger/SkDrawCommand.cpp +++ b/src/utils/debugger/SkDrawCommand.cpp @@ -300,35 +300,6 @@ bool SkDrawBitmapCommand::render(SkCanvas* canvas) const { return true; } -SkDrawBitmapMatrixCommand::SkDrawBitmapMatrixCommand(const SkBitmap& bitmap, - const SkMatrix& matrix, - const SkPaint* paint) - : INHERITED(DRAW_BITMAP_MATRIX) { - fBitmap = bitmap; - fMatrix = matrix; - if (paint) { - fPaint = *paint; - fPaintPtr = &fPaint; - } else { - fPaintPtr = NULL; - } - - fInfo.push(SkObjectParser::BitmapToString(bitmap)); - fInfo.push(SkObjectParser::MatrixToString(matrix)); - if (paint) { - fInfo.push(SkObjectParser::PaintToString(*paint)); - } -} - -void SkDrawBitmapMatrixCommand::execute(SkCanvas* canvas) const { - canvas->drawBitmapMatrix(fBitmap, fMatrix, fPaintPtr); -} - -bool SkDrawBitmapMatrixCommand::render(SkCanvas* canvas) const { - render_bitmap(canvas, fBitmap); - return true; -} - SkDrawBitmapNineCommand::SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) : INHERITED(DRAW_BITMAP_NINE) { diff --git a/src/utils/debugger/SkDrawCommand.h b/src/utils/debugger/SkDrawCommand.h index cae0e145f2..6da419e23a 100644 --- a/src/utils/debugger/SkDrawCommand.h +++ b/src/utils/debugger/SkDrawCommand.h @@ -189,21 +189,6 @@ private: typedef SkDrawCommand INHERITED; }; -class SkDrawBitmapMatrixCommand : public SkDrawCommand { -public: - SkDrawBitmapMatrixCommand(const SkBitmap& bitmap, const SkMatrix& matrix, - const SkPaint* paint); - virtual void execute(SkCanvas* canvas) const SK_OVERRIDE; - virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; -private: - SkBitmap fBitmap; - SkMatrix fMatrix; - SkPaint fPaint; - SkPaint* fPaintPtr; - - typedef SkDrawCommand INHERITED; -}; - class SkDrawBitmapNineCommand : public SkDrawCommand { public: SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp index 7a8c8fa9e3..b4c2a74469 100644 --- a/tests/PictureTest.cpp +++ b/tests/PictureTest.cpp @@ -1779,7 +1779,6 @@ static void draw_bitmaps(const SkBitmap bitmap, SkCanvas* canvas) { // Don't care what these record, as long as they're legal. canvas->drawBitmap(bitmap, 0.0f, 0.0f, &paint); canvas->drawBitmapRectToRect(bitmap, &rect, rect, &paint, SkCanvas::kNone_DrawBitmapRectFlag); - canvas->drawBitmapMatrix(bitmap, SkMatrix::I(), &paint); canvas->drawBitmapNine(bitmap, irect, rect, &paint); canvas->drawSprite(bitmap, 1, 1); } diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp index c77c25186c..1f0db67c5c 100644 --- a/tests/SurfaceTest.cpp +++ b/tests/SurfaceTest.cpp @@ -240,10 +240,6 @@ static void TestSurfaceCopyOnWrite(skiatest::Reporter* reporter, SurfaceType sur const SkRect testRect = SkRect::MakeXYWH(SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(4), SkIntToScalar(5)); - SkMatrix testMatrix; - testMatrix.reset(); - testMatrix.setScale(SkIntToScalar(2), SkIntToScalar(3)); - SkPath testPath; testPath.addRect(SkRect::MakeXYWH(SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(2), SkIntToScalar(1))); @@ -305,7 +301,6 @@ static void TestSurfaceCopyOnWrite(skiatest::Reporter* reporter, SurfaceType sur EXPECT_COPY_ON_WRITE(drawPath(testPath, testPaint)) EXPECT_COPY_ON_WRITE(drawBitmap(testBitmap, 0, 0)) EXPECT_COPY_ON_WRITE(drawBitmapRect(testBitmap, NULL, testRect)) - EXPECT_COPY_ON_WRITE(drawBitmapMatrix(testBitmap, testMatrix, NULL)) EXPECT_COPY_ON_WRITE(drawBitmapNine(testBitmap, testIRect, testRect, NULL)) EXPECT_COPY_ON_WRITE(drawSprite(testBitmap, 0, 0, NULL)) EXPECT_COPY_ON_WRITE(drawText(testText.c_str(), testText.size(), 0, 1, testPaint))