diff options
author | Herb Derby <herb@google.com> | 2018-07-28 18:07:54 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-31 13:52:20 +0000 |
commit | 74c6ed3d1f179209ec90025532310d9c8151999f (patch) | |
tree | 2d20cc433c2136b8a1832698e9c14118615696dc /src/core/SkGlyphRun.h | |
parent | 0bf5408286ea3dacb197c220e1033dea3eeef2a8 (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.h | 19 |
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( |