diff options
author | Hal Canary <halcanary@google.com> | 2017-06-27 09:58:56 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-27 15:33:35 +0000 |
commit | b964238f0bded00bae59c26c5f366a7780a0ef5f (patch) | |
tree | ce1869a71baf1bd518b8edafe00507af0deafb67 | |
parent | ca0b43803b45d6e24c13edb118cc3862bb00f7ae (diff) |
SkDevice::drawBitmap takes x,y, not matrix
Motivation: a simpler call should make it easier for SkPDF to learn how
to do drawBitmap with A8 bitmap and a maskfilter.
Change-Id: I1a5d190b40b0e9e08fa8876d265a9835a3e9987d
Reviewed-on: https://skia-review.googlesource.com/20961
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
-rw-r--r-- | src/core/SkBitmapDevice.cpp | 5 | ||||
-rw-r--r-- | src/core/SkBitmapDevice.h | 2 | ||||
-rw-r--r-- | src/core/SkCanvas.cpp | 6 | ||||
-rw-r--r-- | src/core/SkDevice.cpp | 2 | ||||
-rw-r--r-- | src/core/SkDevice.h | 4 | ||||
-rw-r--r-- | src/core/SkThreadedBMPDevice.cpp | 3 | ||||
-rw-r--r-- | src/core/SkThreadedBMPDevice.h | 2 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 8 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.h | 2 | ||||
-rw-r--r-- | src/pdf/SkPDFDevice.cpp | 5 | ||||
-rw-r--r-- | src/pdf/SkPDFDevice.h | 3 | ||||
-rw-r--r-- | src/svg/SkSVGDevice.cpp | 6 | ||||
-rw-r--r-- | src/svg/SkSVGDevice.h | 3 | ||||
-rw-r--r-- | src/xps/SkXPSDevice.cpp | 6 | ||||
-rw-r--r-- | src/xps/SkXPSDevice.h | 4 |
15 files changed, 34 insertions, 27 deletions
diff --git a/src/core/SkBitmapDevice.cpp b/src/core/SkBitmapDevice.cpp index 981273ad9d..28278a918d 100644 --- a/src/core/SkBitmapDevice.cpp +++ b/src/core/SkBitmapDevice.cpp @@ -233,8 +233,9 @@ void SkBitmapDevice::drawPath(const SkPath& path, BDDraw(this).drawPath(path, paint, prePathMatrix, pathIsMutable); } -void SkBitmapDevice::drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint& paint) { +void SkBitmapDevice::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, + const SkPaint& paint) { + SkMatrix matrix = SkMatrix::MakeTrans(x, y); LogDrawScaleFactor(SkMatrix::Concat(this->ctm(), matrix), paint.getFilterQuality()); BDDraw(this).drawBitmap(bitmap, matrix, nullptr, paint); } diff --git a/src/core/SkBitmapDevice.h b/src/core/SkBitmapDevice.h index 3e9473d4ee..7b08017f18 100644 --- a/src/core/SkBitmapDevice.h +++ b/src/core/SkBitmapDevice.h @@ -89,7 +89,7 @@ protected: */ void drawPath(const SkPath&, const SkPaint&, const SkMatrix* prePathMatrix, bool pathIsMutable) override; - void drawBitmap(const SkBitmap&, const SkMatrix&, const SkPaint&) override; + void drawBitmap(const SkBitmap&, SkScalar x, SkScalar y, const SkPaint&) override; void drawSprite(const SkBitmap&, int x, int y, const SkPaint&) override; /** diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 0f9a4cffce..05b3f1a54b 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -89,7 +89,7 @@ protected: void drawOval(const SkRect&, const SkPaint&) override {} void drawRRect(const SkRRect&, const SkPaint&) override {} void drawPath(const SkPath&, const SkPaint&, const SkMatrix*, bool) override {} - void drawBitmap(const SkBitmap&, const SkMatrix&, const SkPaint&) override {} + void drawBitmap(const SkBitmap&, SkScalar x, SkScalar y, const SkPaint&) override {} void drawSprite(const SkBitmap&, int, int, const SkPaint&) override {} void drawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const SkPaint&, SkCanvas::SrcRectConstraint) override {} @@ -2284,8 +2284,6 @@ void SkCanvas::onDrawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, cons } } - const SkMatrix matrix = SkMatrix::MakeTrans(x, y); - LOOPER_BEGIN_DRAWBITMAP(*paint, drawAsSprite, &bounds) while (iter.next()) { @@ -2298,7 +2296,7 @@ void SkCanvas::onDrawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, cons SkScalarRoundToInt(pt.fY), pnt, nullptr, SkMatrix::I()); } else { - iter.fDevice->drawBitmap(bitmap, matrix, looper.paint()); + iter.fDevice->drawBitmap(bitmap, x, y, looper.paint()); } } diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp index e210e3695e..ddc3d33aef 100644 --- a/src/core/SkDevice.cpp +++ b/src/core/SkDevice.cpp @@ -183,7 +183,7 @@ void SkBaseDevice::drawImage(const SkImage* image, SkScalar x, SkScalar y, const SkPaint& paint) { SkBitmap bm; if (as_IB(image)->getROPixels(&bm, this->imageInfo().colorSpace())) { - this->drawBitmap(bm, SkMatrix::MakeTrans(x, y), paint); + this->drawBitmap(bm, x, y, paint); } } diff --git a/src/core/SkDevice.h b/src/core/SkDevice.h index 82c1897452..2f6bff53d9 100644 --- a/src/core/SkDevice.h +++ b/src/core/SkDevice.h @@ -200,7 +200,9 @@ protected: const SkMatrix* prePathMatrix = NULL, bool pathIsMutable = false) = 0; virtual void drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint& paint) = 0; + SkScalar x, + SkScalar y, + const SkPaint& paint) = 0; virtual void drawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint& paint) = 0; diff --git a/src/core/SkThreadedBMPDevice.cpp b/src/core/SkThreadedBMPDevice.cpp index f5060b9556..63b8ee0d2a 100644 --- a/src/core/SkThreadedBMPDevice.cpp +++ b/src/core/SkThreadedBMPDevice.cpp @@ -329,8 +329,9 @@ void SkThreadedBMPDevice::drawPath(const SkPath& path, const SkPaint& paint, THREADED_DRAW(drawBounds, drawPath(path, paint, prePathMatrix, false)); } -void SkThreadedBMPDevice::drawBitmap(const SkBitmap& bitmap, const SkMatrix& matrix, +void SkThreadedBMPDevice::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, const SkPaint& paint) { + SkMatrix matrix = SkMatrix::MakeTrans(x, y); LogDrawScaleFactor(SkMatrix::Concat(this->ctm(), matrix), paint.getFilterQuality()); SkRect drawBounds = SkRect::MakeWH(bitmap.width(), bitmap.height()); matrix.mapRect(&drawBounds); diff --git a/src/core/SkThreadedBMPDevice.h b/src/core/SkThreadedBMPDevice.h index 372379acca..d7f3d6b3b7 100644 --- a/src/core/SkThreadedBMPDevice.h +++ b/src/core/SkThreadedBMPDevice.h @@ -52,7 +52,7 @@ protected: void drawPath(const SkPath&, const SkPaint&, const SkMatrix* prePathMatrix, bool pathIsMutable) override; - void drawBitmap(const SkBitmap&, const SkMatrix&, const SkPaint&) override; + void drawBitmap(const SkBitmap&, SkScalar x, SkScalar y, const SkPaint&) override; void drawSprite(const SkBitmap&, int x, int y, const SkPaint&) override; void drawText(const void* text, size_t len, SkScalar x, SkScalar y, diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 301adc12e4..08a3daea59 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -819,8 +819,10 @@ bool SkGpuDevice::shouldTileImage(const SkImage* image, const SkRect* srcRectPtr } void SkGpuDevice::drawBitmap(const SkBitmap& bitmap, - const SkMatrix& m, + SkScalar x, + SkScalar y, const SkPaint& paint) { + SkMatrix m = SkMatrix::MakeTrans(x, y); ASSERT_SINGLE_OWNER CHECK_SHOULD_DRAW(); SkMatrix viewMatrix; @@ -1346,14 +1348,14 @@ void SkGpuDevice::drawImage(const SkImage* image, SkScalar x, SkScalar y, if (!as_IB(image)->getROPixels(&bm, fRenderTargetContext->getColorSpace())) { return; } - this->drawBitmap(bm, SkMatrix::MakeTrans(x, y), paint); + this->drawBitmap(bm, x, y, paint); } else if (image->isLazyGenerated()) { CHECK_SHOULD_DRAW(); GrImageTextureMaker maker(fContext.get(), image, SkImage::kAllow_CachingHint); this->drawTextureProducer(&maker, nullptr, nullptr, SkCanvas::kFast_SrcRectConstraint, viewMatrix, this->clip(), paint); } else if (as_IB(image)->getROPixels(&bm, fRenderTargetContext->getColorSpace())) { - this->drawBitmap(bm, SkMatrix::MakeTrans(x, y), paint); + this->drawBitmap(bm, x, y, paint); } } } diff --git a/src/gpu/SkGpuDevice.h b/src/gpu/SkGpuDevice.h index b5133f4859..3f69153355 100644 --- a/src/gpu/SkGpuDevice.h +++ b/src/gpu/SkGpuDevice.h @@ -79,7 +79,7 @@ public: bool useCenter, const SkPaint& paint) override; void drawPath(const SkPath& path, const SkPaint& paint, const SkMatrix* prePathMatrix, bool pathIsMutable) override; - void drawBitmap(const SkBitmap& bitmap, const SkMatrix&, + void drawBitmap(const SkBitmap&, SkScalar x, SkScalar y, const SkPaint&) override; void drawBitmapRect(const SkBitmap&, const SkRect* srcOrNull, const SkRect& dst, const SkPaint& paint, SkCanvas::SrcRectConstraint) override; diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp index 56bb616d40..c3ff976132 100644 --- a/src/pdf/SkPDFDevice.cpp +++ b/src/pdf/SkPDFDevice.cpp @@ -1045,7 +1045,8 @@ void SkPDFDevice::drawBitmapRect(const SkBitmap& bitmap, } void SkPDFDevice::drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, + SkScalar x, + SkScalar y, const SkPaint& srcPaint) { if (bitmap.drawsNothing() || this->cs().isEmpty(size(*this))) { return; @@ -1058,7 +1059,7 @@ void SkPDFDevice::drawBitmap(const SkBitmap& bitmap, if (!imageSubset.isValid()) { return; } - SkMatrix transform = matrix; + SkMatrix transform = SkMatrix::MakeTrans(x, y); transform.postConcat(this->ctm()); this->internalDrawImage(transform, this->cs(), std::move(imageSubset), paint); } diff --git a/src/pdf/SkPDFDevice.h b/src/pdf/SkPDFDevice.h index 61c08c397d..e409ed9bb2 100644 --- a/src/pdf/SkPDFDevice.h +++ b/src/pdf/SkPDFDevice.h @@ -91,8 +91,7 @@ public: bool pathIsMutable) override; void drawBitmapRect(const SkBitmap& bitmap, const SkRect* src, const SkRect& dst, const SkPaint&, SkCanvas::SrcRectConstraint) override; - void drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint&) override; + void drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, const SkPaint&) override; void drawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint& paint) override; void drawImage(const SkImage*, diff --git a/src/svg/SkSVGDevice.cpp b/src/svg/SkSVGDevice.cpp index 4c08986893..a1cb38ec29 100644 --- a/src/svg/SkSVGDevice.cpp +++ b/src/svg/SkSVGDevice.cpp @@ -704,11 +704,11 @@ void SkSVGDevice::drawBitmapCommon(const MxCp& mc, const SkBitmap& bm, const SkP } } -void SkSVGDevice::drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint& paint) { +void SkSVGDevice::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, + const SkPaint& paint) { MxCp mc(this); SkMatrix adjustedMatrix = *mc.fMatrix; - adjustedMatrix.preConcat(matrix); + adjustedMatrix.preTranslate(x, y); mc.fMatrix = &adjustedMatrix; drawBitmapCommon(mc, bitmap, paint); diff --git a/src/svg/SkSVGDevice.h b/src/svg/SkSVGDevice.h index e05dc9283e..0e22910412 100644 --- a/src/svg/SkSVGDevice.h +++ b/src/svg/SkSVGDevice.h @@ -29,8 +29,7 @@ protected: const SkMatrix* prePathMatrix = nullptr, bool pathIsMutable = false) override; - void drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint& paint) override; + void drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, const SkPaint& paint) override; void drawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint& paint) override; void drawBitmapRect(const SkBitmap&, diff --git a/src/xps/SkXPSDevice.cpp b/src/xps/SkXPSDevice.cpp index 202259090e..801b80c0b0 100644 --- a/src/xps/SkXPSDevice.cpp +++ b/src/xps/SkXPSDevice.cpp @@ -1780,7 +1780,9 @@ HRESULT SkXPSDevice::clipToPath(IXpsOMVisual* xpsVisual, } void SkXPSDevice::drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint& paint) { + SkScalar x, + SkScalar y, + const SkPaint& paint) { if (this->cs().isEmpty(size(*this))) { return; } @@ -1807,7 +1809,7 @@ void SkXPSDevice::drawBitmap(const SkBitmap& bitmap, HRVM(shadedGeometry->GetFigures(&shadedFigures), "Could not get the figures for bitmap."); - SkMatrix transform = matrix; + SkMatrix transform = SkMatrix::MakeTrans(x, y); transform.postConcat(this->ctm()); SkTScopedComPtr<IXpsOMMatrixTransform> xpsTransform; diff --git a/src/xps/SkXPSDevice.h b/src/xps/SkXPSDevice.h index a0b4257071..7aa60a0830 100644 --- a/src/xps/SkXPSDevice.h +++ b/src/xps/SkXPSDevice.h @@ -88,7 +88,9 @@ protected: const SkMatrix* prePathMatrix = NULL, bool pathIsMutable = false) override; void drawBitmap(const SkBitmap& bitmap, - const SkMatrix& matrix, const SkPaint& paint) override; + SkScalar x, + SkScalar y, + const SkPaint& paint) override; void drawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint& paint) override; void drawBitmapRect(const SkBitmap&, |