aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2015-02-02 05:25:04 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-02-02 05:25:04 -0800
commit3d91aad293b0f68886ed48ecfa6aa75826a27da8 (patch)
tree8a1e2a5c7d1ca55ae0bff03ae949695d28c42405
parentc927918cd65cd409a265eaf789fbe5f4c3f98284 (diff)
Disable LCD text when rasterizing SkPictureShader tiles.
BUG=chromium:453299 R=reed@google.com Review URL: https://codereview.chromium.org/884163003
-rw-r--r--include/core/SkCanvas.h9
-rw-r--r--src/core/SkPictureShader.cpp4
2 files changed, 11 insertions, 2 deletions
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index 3eecaf760a..d929439083 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -100,6 +100,14 @@ public:
structure are copied to the canvas.
*/
explicit SkCanvas(const SkBitmap& bitmap);
+
+ /** Construct a canvas with the specified bitmap to draw into.
+ @param bitmap Specifies a bitmap for the canvas to draw into. Its
+ structure are copied to the canvas.
+ @param props New canvas surface properties.
+ */
+ SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props);
+
virtual ~SkCanvas();
SkMetaData& getMetaData();
@@ -1278,7 +1286,6 @@ private:
};
SkCanvas(const SkIRect& bounds, InitFlags);
SkCanvas(SkBaseDevice*, const SkSurfaceProps*, InitFlags);
- SkCanvas(const SkBitmap&, const SkSurfaceProps&);
// needs gettotalclip()
friend class SkCanvasStateUtils;
diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp
index 36b55cae66..adf2bb63a8 100644
--- a/src/core/SkPictureShader.cpp
+++ b/src/core/SkPictureShader.cpp
@@ -194,7 +194,9 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& matrix, const SkMatri
}
bm.eraseColor(SK_ColorTRANSPARENT);
- SkCanvas canvas(bm);
+ // Always disable LCD text, since we can't assume our image will be opaque.
+ SkCanvas canvas(bm, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
+
canvas.scale(tileScale.width(), tileScale.height());
canvas.translate(-fTile.x(), -fTile.y());
canvas.drawPicture(fPicture);