diff options
author | Herb Derby <herb@google.com> | 2018-06-06 17:45:53 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-06-06 17:46:05 +0000 |
commit | 41f4f31cd7dadd1123600c38faa8fef6bd7fb29c (patch) | |
tree | 1e2d604cd95be419d363e9b56aa5beaf3eb8818e /src/core/SkCanvas.cpp | |
parent | 2d7678d61fb68a2c9060a9fad8ebabf4e0053576 (diff) |
Reland "Have draw(Text|PosText|PosTextH) use a single entry on the device"
This reverts commit 74b390d6b136a60f1df15ac5ecd19bd8ad5a394b.
Reason for revert: reverting to add patch for valgrind
Original change's description:
> Revert "Have draw(Text|PosText|PosTextH) use a single entry on the device"
>
> This reverts commit 4225b3220ef4bf50f0d9403f812ea94d50c4ee59.
>
> Reason for revert: made valgrind unhappy.
>
> Original change's description:
> > Have draw(Text|PosText|PosTextH) use a single entry on the device
> >
> > Handle the positioning of drawText at the canvas layer. Simplify
> > the code by removing similar implementations.
> >
> > Change-Id: I8b711783435072f560e29fca1dd934fa2e345ed2
> > Reviewed-on: https://skia-review.googlesource.com/127131
> > Reviewed-by: Ben Wagner <bungeman@google.com>
> > Commit-Queue: Herb Derby <herb@google.com>
>
> TBR=jvanverth@google.com,bungeman@google.com,herb@google.com
>
> Change-Id: I65c9d30ae6ecb1f87e8660e56d8f8ce5daab7551
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/132403
> Reviewed-by: Hal Canary <halcanary@google.com>
> Commit-Queue: Hal Canary <halcanary@google.com>
TBR=jvanverth@google.com,halcanary@google.com,bungeman@google.com,herb@google.com
Change-Id: I9bbb73aac447b51eb8215ac42331759fa4c9fa45
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/132580
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r-- | src/core/SkCanvas.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 8230fb3928..dcff1b0cc3 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -15,6 +15,8 @@ #include "SkDrawable.h" #include "SkDrawFilter.h" #include "SkDrawLooper.h" +#include "SkGlyphCache.h" +#include "SkGlyphRun.h" #include "SkImage.h" #include "SkImage_Base.h" #include "SkImageFilter.h" @@ -34,6 +36,7 @@ #include "SkRasterHandleAllocator.h" #include "SkRRect.h" #include "SkSpecialImage.h" +#include "SkStrikeCache.h" #include "SkString.h" #include "SkSurface_Base.h" #include "SkTextBlob.h" @@ -1075,7 +1078,8 @@ void SkCanvas::internalSaveLayer(const SaveLayerRec& rec, SaveLayerStrategy stra const bool preserveLCDText = kOpaque_SkAlphaType == info.alphaType() || (saveLayerFlags & kPreserveLCDText_SaveLayerFlag); const SkBaseDevice::TileUsage usage = SkBaseDevice::kNever_TileUsage; - const bool trackCoverage = SkToBool(saveLayerFlags & kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag); + const bool trackCoverage = + SkToBool(saveLayerFlags & kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag); const SkBaseDevice::CreateInfo createInfo = SkBaseDevice::CreateInfo(info, usage, geo, preserveLCDText, trackCoverage, @@ -2439,10 +2443,13 @@ void SkCanvas::onDrawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattic void SkCanvas::onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, const SkPaint& paint) { + LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, nullptr) while (iter.next()) { - iter.fDevice->drawText(text, byteLength, x, y, looper.paint()); + auto glyphRun = SkGlyphRun::MakeFromDrawText( + looper.paint(), text, byteLength, SkPoint::Make(x, y)); + iter.fDevice->drawGlyphRun(looper.paint(), &glyphRun); } LOOPER_END @@ -2450,12 +2457,12 @@ void SkCanvas::onDrawText(const void* text, size_t byteLength, SkScalar x, SkSca void SkCanvas::onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint& paint) { - SkPoint textOffset = SkPoint::Make(0, 0); LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, nullptr) while (iter.next()) { - iter.fDevice->drawPosText(text, byteLength, &pos->fX, 2, textOffset, looper.paint()); + auto glyphRun = SkGlyphRun::MakeFromDrawPosText(looper.paint(), text, byteLength, pos); + iter.fDevice->drawGlyphRun(looper.paint(), &glyphRun); } LOOPER_END @@ -2464,12 +2471,12 @@ void SkCanvas::onDrawPosText(const void* text, size_t byteLength, const SkPoint void SkCanvas::onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, const SkPaint& paint) { - SkPoint textOffset = SkPoint::Make(0, constY); - LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, nullptr) while (iter.next()) { - iter.fDevice->drawPosText(text, byteLength, xpos, 1, textOffset, looper.paint()); + auto glyphRun = + SkGlyphRun::MakeFromDrawPosTextH(looper.paint(), text, byteLength, xpos, constY); + iter.fDevice->drawGlyphRun(looper.paint(), &glyphRun); } LOOPER_END |