Index: src/gpu/SkGrFontScaler.cpp |
diff --git a/src/gpu/SkGrFontScaler.cpp b/src/gpu/SkGrFontScaler.cpp |
index 8fdae48a2adde48c7f5f1ffd42e7f8299ddf461f..f49fd67035c6bff3e2c0574a4fb856d6b4e85b41 100644 |
--- a/src/gpu/SkGrFontScaler.cpp |
+++ b/src/gpu/SkGrFontScaler.cpp |
@@ -10,6 +10,7 @@ |
#include "GrTemplates.h" |
#include "SkGr.h" |
#include "SkDescriptor.h" |
+#include "SkDistanceFieldGen.h" |
#include "SkGlyphCache.h" |
class SkGrDescKey : public GrKey { |
@@ -108,8 +109,19 @@ bool SkGrFontScaler::getPackedGlyphBounds(GrGlyph::PackedID packed, |
GrGlyph::UnpackFixedX(packed), |
GrGlyph::UnpackFixedY(packed)); |
bounds->setXYWH(glyph.fLeft, glyph.fTop, glyph.fWidth, glyph.fHeight); |
+ |
return true; |
+} |
+ |
+bool SkGrFontScaler::getPackedGlyphDFBounds(GrGlyph::PackedID packed, |
robertphillips
2014/04/11 14:13:00
Align or fit on one line?
jvanverth1
2014/04/11 17:54:14
Done.
|
+ SkIRect* bounds) { |
+ const SkGlyph& glyph = fStrike->getGlyphIDMetrics(GrGlyph::UnpackID(packed), |
robertphillips
2014/04/11 14:13:00
align?
jvanverth1
2014/04/11 17:54:14
Done.
|
+ GrGlyph::UnpackFixedX(packed), |
+ GrGlyph::UnpackFixedY(packed)); |
+ bounds->setXYWH(glyph.fLeft, glyph.fTop, glyph.fWidth, glyph.fHeight); |
+ bounds->outset(SK_DistanceFieldPad, SK_DistanceFieldPad); |
+ return true; |
} |
namespace { |
@@ -190,6 +202,24 @@ bool SkGrFontScaler::getPackedGlyphImage(GrGlyph::PackedID packed, |
return true; |
} |
+bool SkGrFontScaler::getPackedGlyphDFImage(GrGlyph::PackedID packed, |
+ int width, int height, |
+ int dstRB, void* dst) { |
+ const SkGlyph& glyph = fStrike->getGlyphIDMetrics(GrGlyph::UnpackID(packed), |
robertphillips
2014/04/11 14:13:00
align?
jvanverth1
2014/04/11 17:54:14
Done.
|
+ GrGlyph::UnpackFixedX(packed), |
+ GrGlyph::UnpackFixedY(packed)); |
+ SkASSERT(glyph.fWidth + 2*SK_DistanceFieldPad == width); |
+ SkASSERT(glyph.fHeight + 2*SK_DistanceFieldPad == height); |
+ const void* src = fStrike->findDistanceField(glyph); |
+ if (NULL == src) { |
+ return false; |
+ } |
+ |
robertphillips
2014/04/11 14:13:00
At a higher-level why are we copying out here?
jvanverth1
2014/04/11 17:54:14
The short answer is: to match getPackedGlyphImage.
|
+ memcpy(dst, src, width * height); |
+ |
+ return true; |
+} |
+ |
// we should just return const SkPath* (NULL means false) |
bool SkGrFontScaler::getGlyphPath(uint16_t glyphID, SkPath* path) { |