| Index: src/core/SkGlyph.h
|
| diff --git a/src/core/SkGlyph.h b/src/core/SkGlyph.h
|
| index 9abefa84c7578f450cce93460a109e95e3f0bca4..4f9c5bf4ccc23acd97b1824e35d7a98381311604 100644
|
| --- a/src/core/SkGlyph.h
|
| +++ b/src/core/SkGlyph.h
|
| @@ -104,8 +104,10 @@ struct SkGlyph {
|
| kSubShiftY = 0
|
| };
|
|
|
| + // The code is increased by one in MakeID. Adjust back. This allows the zero
|
| + // id to be the invalid id.
|
| static unsigned ID2Code(uint32_t id) {
|
| - return id & kCodeMask;
|
| + return (id & kCodeMask) - 1;
|
| }
|
|
|
| static unsigned ID2SubX(uint32_t id) {
|
| @@ -125,17 +127,21 @@ struct SkGlyph {
|
| return sub << (16 - kSubBits);
|
| }
|
|
|
| + // This and the MakeID below must not return an id of zero. Zero is used as
|
| + // the invalid id.
|
| static uint32_t MakeID(unsigned code) {
|
| - return code;
|
| + SkASSERT(code + 1 <= kCodeMask);
|
| + return code + 1;
|
| }
|
|
|
| + // See comment for MakeID above.
|
| static uint32_t MakeID(unsigned code, SkFixed x, SkFixed y) {
|
| - SkASSERT(code <= kCodeMask);
|
| + SkASSERT(code + 1 <= kCodeMask);
|
| x = FixedToSub(x);
|
| y = FixedToSub(y);
|
| return (x << (kSubShift + kSubShiftX)) |
|
| (y << (kSubShift + kSubShiftY)) |
|
| - code;
|
| + (code + 1);
|
| }
|
|
|
| void toMask(SkMask* mask) const;
|
|
|