diff options
author | reed <reed@google.com> | 2015-12-10 13:44:45 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-10 13:44:45 -0800 |
commit | 70ee31b2fa127eee6c0cea61cf05508e9d3ca7b1 (patch) | |
tree | 37f8350cd24bc973ebaf1d1499d9801966142e7e /src/core/SkCanvas.cpp | |
parent | 96f16e835e32665ea5af605e52715dbf43367291 (diff) |
try adding flag to allow lcd text even in a layer
BUG=skia:
Review URL: https://codereview.chromium.org/1513513002
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r-- | src/core/SkCanvas.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 0c9c20d1ee..1d37e58419 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1140,6 +1140,12 @@ int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags fl return this->getSaveCount() - 1; } +int SkCanvas::saveLayerPreserveLCDTextRequests(const SkRect* bounds, const SkPaint* paint) { + unsigned flags = kARGB_ClipLayer_SaveFlag | kPreserveLCDText_PrivateSaveFlag; + return this->saveLayer(bounds, paint, (SaveFlags)flags); +} + + void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags flags, SaveLayerStrategy strategy) { #ifndef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG @@ -1183,8 +1189,11 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav bool forceSpriteOnRestore = false; { + const bool preserveLCDText = kOpaque_SkAlphaType == info.alphaType() || + SkToBool(flags & kPreserveLCDText_PrivateSaveFlag); const SkBaseDevice::TileUsage usage = SkBaseDevice::kNever_TileUsage; - const SkBaseDevice::CreateInfo createInfo = SkBaseDevice::CreateInfo(info, usage, geo); + const SkBaseDevice::CreateInfo createInfo = SkBaseDevice::CreateInfo(info, usage, geo, + preserveLCDText, false); SkBaseDevice* newDev = device->onCreateDevice(createInfo, paint); if (nullptr == newDev) { // If onCreateDevice didn't succeed, try raster (e.g. PDF couldn't handle the paint) |