aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Herb Derby <herb@google.com>2018-07-19 13:41:15 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-20 18:17:56 +0000
commit1a9971ed47843c606c47793e0f29fc42bbe9971f (patch)
tree10d5986d28c1c91d5d29e22841438a8bb432caaa /src
parentcc10d790df6596c21a9e01ed6dadb680d7fe19e5 (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.cpp3
-rw-r--r--src/core/SkRemoteGlyphCache.cpp34
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");