Index: src/gpu/GrGlyph.h |
diff --git a/src/gpu/GrGlyph.h b/src/gpu/GrGlyph.h |
index 0e534d694afe1fb7c1ef2b518d83938c4910a0bf..108f2f0fe7d5df231a8337da7090d0d72f553a7e 100644 |
--- a/src/gpu/GrGlyph.h |
+++ b/src/gpu/GrGlyph.h |
@@ -23,6 +23,11 @@ class GrPlot; |
- failed to get metrics |
*/ |
struct GrGlyph { |
+ enum MaskStyle { |
+ kCoverage_MaskStyle, |
+ kDistance_MaskStyle |
+ }; |
+ |
typedef uint32_t PackedID; |
GrPlot* fPlot; |
@@ -60,10 +65,11 @@ struct GrGlyph { |
return (pos >> 14) & 3; |
} |
- static inline PackedID Pack(uint16_t glyphID, SkFixed x, SkFixed y) { |
+ static inline PackedID Pack(uint16_t glyphID, SkFixed x, SkFixed y, MaskStyle ms) { |
x = ExtractSubPixelBitsFromFixed(x); |
y = ExtractSubPixelBitsFromFixed(y); |
- return (x << 18) | (y << 16) | glyphID; |
+ int dfFlag = (ms == kDistance_MaskStyle) ? 0x1 : 0x0; |
+ return (dfFlag << 20) | (x << 18) | (y << 16) | glyphID; |
} |
static inline SkFixed UnpackFixedX(PackedID packed) { |
@@ -74,6 +80,10 @@ struct GrGlyph { |
return ((packed >> 16) & 3) << 14; |
} |
+ static inline MaskStyle UnpackMaskStyle(PackedID packed) { |
+ return ((packed >> 20) & 1) ? kDistance_MaskStyle : kCoverage_MaskStyle; |
+ } |
+ |
static inline uint16_t UnpackID(PackedID packed) { |
return (uint16_t)packed; |
} |