Index: src/gpu/text/GrBatchFontCache.cpp |
diff --git a/src/gpu/text/GrBatchFontCache.cpp b/src/gpu/text/GrBatchFontCache.cpp |
index 2d682a83707582a7ec58482a149a4caf5c8cbcf3..3e212cd1713b69afb150a2dfdf407954caa07e37 100644 |
--- a/src/gpu/text/GrBatchFontCache.cpp |
+++ b/src/gpu/text/GrBatchFontCache.cpp |
@@ -14,7 +14,6 @@ |
#include "SkString.h" |
#include "SkDistanceFieldGen.h" |
-#include "GrDistanceFieldGenFromVector.h" |
bool GrBatchFontCache::initAtlas(GrMaskFormat format) { |
int index = MaskFormatToAtlasIndex(format); |
@@ -270,20 +269,30 @@ |
int width, int height, void* dst) { |
SkASSERT(glyph.fWidth + 2*SK_DistanceFieldPad == width); |
SkASSERT(glyph.fHeight + 2*SK_DistanceFieldPad == height); |
- const SkPath* path = cache->findPath(glyph); |
- if (nullptr == path) { |
+ const void* image = cache->findImage(glyph); |
+ if (nullptr == image) { |
return false; |
} |
- |
// now generate the distance field |
SkASSERT(dst); |
- SkMatrix drawMatrix; |
- drawMatrix.setTranslate((SkScalar)-glyph.fLeft, (SkScalar)-glyph.fTop); |
- |
- // Generate signed distance field directly from SkPath |
- return GrGenerateDistanceFieldFromPath((unsigned char*)dst, |
- *path, drawMatrix, |
- width, height, width * sizeof(unsigned char)); |
+ SkMask::Format maskFormat = static_cast<SkMask::Format>(glyph.fMaskFormat); |
+ if (SkMask::kA8_Format == maskFormat) { |
+ // make the distance field from the image |
+ SkGenerateDistanceFieldFromA8Image((unsigned char*)dst, |
+ (unsigned char*)image, |
+ glyph.fWidth, glyph.fHeight, |
+ glyph.rowBytes()); |
+ } else if (SkMask::kBW_Format == maskFormat) { |
+ // make the distance field from the image |
+ SkGenerateDistanceFieldFromBWImage((unsigned char*)dst, |
+ (unsigned char*)image, |
+ glyph.fWidth, glyph.fHeight, |
+ glyph.rowBytes()); |
+ } else { |
+ return false; |
+ } |
+ |
+ return true; |
} |
/////////////////////////////////////////////////////////////////////////////// |