Index: src/gpu/GrFontScaler.cpp |
diff --git a/src/gpu/GrFontScaler.cpp b/src/gpu/GrFontScaler.cpp |
index 164768f3b08bbfe29f67f226486bca99e1173e8e..b16b498ac1d31bce909c2d218c2d7f91141913c5 100644 |
--- a/src/gpu/GrFontScaler.cpp |
+++ b/src/gpu/GrFontScaler.cpp |
@@ -59,7 +59,7 @@ GrFontScaler::~GrFontScaler() { |
SkSafeUnref(fKey); |
} |
-GrMaskFormat GrFontScaler::getMaskFormat() { |
+GrMaskFormat GrFontScaler::getMaskFormat() const { |
SkMask::Format format = fStrike->getMaskFormat(); |
switch (format) { |
case SkMask::kBW_Format: |
@@ -85,6 +85,28 @@ const GrFontDescKey* GrFontScaler::getKey() { |
return fKey; |
} |
+GrMaskFormat GrFontScaler::getPackedGlyphMaskFormat(GrGlyph::PackedID packed) const { |
+ const SkGlyph& glyph = fStrike->getGlyphIDMetrics(GrGlyph::UnpackID(packed), |
+ GrGlyph::UnpackFixedX(packed), |
+ GrGlyph::UnpackFixedY(packed)); |
+ SkMask::Format format = static_cast<SkMask::Format>(glyph.fMaskFormat); |
+ switch (format) { |
+ case SkMask::kBW_Format: |
+ // fall through to kA8 -- we store BW glyphs in our 8-bit cache |
+ case SkMask::kA8_Format: |
+ return kA8_GrMaskFormat; |
+ case SkMask::kLCD16_Format: |
+ return kA565_GrMaskFormat; |
+ case SkMask::kLCD32_Format: |
+ return kA888_GrMaskFormat; |
+ case SkMask::kARGB32_Format: |
+ return kARGB_GrMaskFormat; |
+ default: |
+ SkDEBUGFAIL("unsupported SkMask::Format"); |
+ return kA8_GrMaskFormat; |
+ } |
+} |
+ |
bool GrFontScaler::getPackedGlyphBounds(GrGlyph::PackedID packed, SkIRect* bounds) { |
const SkGlyph& glyph = fStrike->getGlyphIDMetrics(GrGlyph::UnpackID(packed), |
GrGlyph::UnpackFixedX(packed), |