aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkGlyphRun.h
diff options
context:
space:
mode:
authorGravatar Herb Derby <herb@google.com>2018-07-28 18:07:54 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-31 13:52:20 +0000
commit74c6ed3d1f179209ec90025532310d9c8151999f (patch)
tree2d20cc433c2136b8a1832698e9c14118615696dc /src/core/SkGlyphRun.h
parent0bf5408286ea3dacb197c220e1033dea3eeef2a8 (diff)
Move one leaf loop from GPU to glyph drawer
Encapsulate the bitmap inner loop of regenerate in the SkGlyphRunListDrawer. This changed required placing an SkGlyphRunListDrawer in the two TextTargets. Change-Id: I7ef7a2d0074fe898fce4da82d26ea1f47e1f7a98 Reviewed-on: https://skia-review.googlesource.com/144302 Reviewed-by: Jim Van Verth <jvanverth@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src/core/SkGlyphRun.h')
-rw-r--r--src/core/SkGlyphRun.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/core/SkGlyphRun.h b/src/core/SkGlyphRun.h
index 26590c1251..6bdc633091 100644
--- a/src/core/SkGlyphRun.h
+++ b/src/core/SkGlyphRun.h
@@ -21,7 +21,10 @@
#include "SkTemplates.h"
#include "SkTextBlobPriv.h"
#include "SkTypes.h"
-
+#if SK_SUPPORT_GPU
+class GrColorSpaceInfo;
+class GrRenderTargetContext;
+#endif
class SkBaseDevice;
class SkGlyphRunList;
class SkRasterClip;
@@ -109,18 +112,26 @@ public:
SkGlyphRunListDrawer(
const SkSurfaceProps& props, SkColorType colorType, SkScalerContextFlags flags);
- using PerMask = std::function<void(const SkMask&)>;
+ #if SK_SUPPORT_GPU
+ SkGlyphRunListDrawer(const SkSurfaceProps&, const GrColorSpaceInfo&);
+ explicit SkGlyphRunListDrawer(const GrRenderTargetContext& renderTargetContext);
+ #endif
+
+ using PerMask = std::function<void(const SkMask&, const SkGlyph&, SkPoint)>;
using PerMaskCreator = std::function<PerMask(const SkPaint&, SkArenaAlloc* alloc)>;
using PerPath = std::function<void(const SkPath&, const SkMatrix&)>;
using PerPathCreator = std::function<PerPath(const SkPaint&, SkArenaAlloc* alloc)>;
- void drawForBitmap(
+ void drawForBitmapDevice(
const SkGlyphRunList& glyphRunList, const SkMatrix& deviceMatrix,
PerMaskCreator perMaskCreator, PerPathCreator perPathCreator);
+ void drawUsingMasks(
+ SkGlyphCache* cache, const SkGlyphRun& glyphRun, SkPoint origin,
+ const SkMatrix& deviceMatrix, PerMask perMask);
private:
static bool ShouldDrawAsPath(const SkPaint& paint, const SkMatrix& matrix);
bool ensureBitmapBuffers(size_t runSize);
- void drawGlyphRunAsPaths(
+ void drawUsingPaths(
const SkGlyphRun& glyphRun, SkPoint origin,
const SkSurfaceProps& props, PerPath perPath) const;
void drawGlyphRunAsSubpixelMask(