diff options
author | Herb Derby <herb@google.com> | 2018-07-19 13:41:15 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-20 18:17:56 +0000 |
commit | 1a9971ed47843c606c47793e0f29fc42bbe9971f (patch) | |
tree | 10d5986d28c1c91d5d29e22841438a8bb432caaa /src | |
parent | cc10d790df6596c21a9e01ed6dadb680d7fe19e5 (diff) |
Convert remote glyph cache to use glyp runs
Change-Id: I763a3570ff6b970cfcbf172d786370c77a0db0d7
Reviewed-on: https://skia-review.googlesource.com/142507
Reviewed-by: Khusal Sagar <khushalsagar@chromium.org>
Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkGlyphRun.cpp | 3 | ||||
-rw-r--r-- | src/core/SkRemoteGlyphCache.cpp | 34 |
2 files changed, 11 insertions, 26 deletions
diff --git a/src/core/SkGlyphRun.cpp b/src/core/SkGlyphRun.cpp index b0bc59e760..82dae689f9 100644 --- a/src/core/SkGlyphRun.cpp +++ b/src/core/SkGlyphRun.cpp @@ -135,6 +135,9 @@ void SkGlyphRunList::temporaryShuntBlobNotifyAddedToCache(uint32_t cacheID) cons fOriginalTextBlob->notifyAddedToCache(cacheID); } +// -- SkGlyphRunListIterator ----------------------------------------------------------------------- +constexpr SkPoint SkGlyphRunListIterator::fZero; + // -- SkGlyphIDSet --------------------------------------------------------------------------------- // A faster set implementation that does not need any initialization, and reading the set items // is order the number of items, and not the size of the universe. diff --git a/src/core/SkRemoteGlyphCache.cpp b/src/core/SkRemoteGlyphCache.cpp index 4ed9cf287a..18e47f3f4c 100644 --- a/src/core/SkRemoteGlyphCache.cpp +++ b/src/core/SkRemoteGlyphCache.cpp @@ -16,9 +16,9 @@ #include "SkDevice.h" #include "SkDraw.h" #include "SkFindAndPlaceGlyph.h" +#include "SkGlyphRun.h" #include "SkPathEffect.h" #include "SkStrikeCache.h" -#include "SkTextBlobRunIterator.h" #include "SkTraceEvent.h" #include "SkTypeface_remote.h" @@ -240,38 +240,20 @@ public: } protected: - void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, - const SkPaint& paint) override { - // The looper should be applied by the SkCanvas. - SkASSERT(paint.getDrawLooper() == nullptr); - - SkPoint position{x, y}; - SkPaint runPaint{paint}; - SkTextBlobRunIterator it(blob); + void drawGlyphRunList(SkGlyphRunList* glyphRunList) override { + SkPaint runPaint; + SkGlyphRunListIterator it(glyphRunList); for (; !it.done(); it.next()) { // applyFontToPaint() always overwrites the exact same attributes, // so it is safe to not re-seed the paint for this reason. it.applyFontToPaint(&runPaint); - this->processGlyphRun(position, it, runPaint); - } - } - - void drawGlyphRunList(SkGlyphRunList* glyphRunList) override { - auto blob = glyphRunList->blob(); - - SkASSERT(blob != nullptr); - - if (blob != nullptr) { - auto origin = glyphRunList->origin(); - auto paint = glyphRunList->paint(); - this->drawTextBlob(blob, origin.x(), origin.y(), paint); + this->processGlyphRun(glyphRunList->origin(), it, runPaint); } } - private: void processGlyphRun(const SkPoint& position, - const SkTextBlobRunIterator& it, + const SkGlyphRunListIterator& it, const SkPaint& runPaint) { TRACE_EVENT0("skia", "SkTextBlobCacheDiffCanvas::processGlyphRun"); @@ -355,7 +337,7 @@ private: } } - void processGlyphRunForPaths(const SkTextBlobRunIterator& it, + void processGlyphRunForPaths(const SkGlyphRunListIterator& it, const SkPaint& runPaint, const SkMatrix& runMatrix) { TRACE_EVENT0("skia", "SkTextBlobCacheDiffCanvas::processGlyphRunForPaths"); @@ -405,7 +387,7 @@ private: } #if SK_SUPPORT_GPU - bool processGlyphRunForDFT(const SkTextBlobRunIterator& it, + bool processGlyphRunForDFT(const SkGlyphRunListIterator& it, const SkPaint& runPaint, const SkMatrix& runMatrix) { TRACE_EVENT0("skia", "SkTextBlobCacheDiffCanvas::processGlyphRunForDFT"); |