aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-06-27 09:58:56 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-27 15:33:35 +0000
commitb964238f0bded00bae59c26c5f366a7780a0ef5f (patch)
treece1869a71baf1bd518b8edafe00507af0deafb67 /src
parentca0b43803b45d6e24c13edb118cc3862bb00f7ae (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>
Diffstat (limited to 'src')
-rw-r--r--src/core/SkBitmapDevice.cpp5
-rw-r--r--src/core/SkBitmapDevice.h2
-rw-r--r--src/core/SkCanvas.cpp6
-rw-r--r--src/core/SkDevice.cpp2
-rw-r--r--src/core/SkDevice.h4
-rw-r--r--src/core/SkThreadedBMPDevice.cpp3
-rw-r--r--src/core/SkThreadedBMPDevice.h2
-rw-r--r--src/gpu/SkGpuDevice.cpp8
-rw-r--r--src/gpu/SkGpuDevice.h2
-rw-r--r--src/pdf/SkPDFDevice.cpp5
-rw-r--r--src/pdf/SkPDFDevice.h3
-rw-r--r--src/svg/SkSVGDevice.cpp6
-rw-r--r--src/svg/SkSVGDevice.h3
-rw-r--r--src/xps/SkXPSDevice.cpp6
-rw-r--r--src/xps/SkXPSDevice.h4
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&,