Index: src/core/SkGlyph.h |
diff --git a/src/core/SkGlyph.h b/src/core/SkGlyph.h |
index 9abefa84c7578f450cce93460a109e95e3f0bca4..2a97c09b22e76230147d60a86abe26495e1c09b4 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,20 @@ 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) { |
reed1
2015/02/02 11:49:36
can we add?
SkASSERT(0 == (code & kCodeMask));
herb_g
2015/02/02 13:39:03
This assert doesn't make sense to me. Do you mean
herb_g
2015/02/02 15:34:11
Done.
I think your intent was to check the pre-co
|
- return code; |
+ return code + 1; |
} |
+ // See comment for MakeID above. |
static uint32_t MakeID(unsigned code, SkFixed x, SkFixed y) { |
SkASSERT(code <= kCodeMask); |
x = FixedToSub(x); |
y = FixedToSub(y); |
return (x << (kSubShift + kSubShiftX)) | |
(y << (kSubShift + kSubShiftY)) | |
- code; |
+ (code + 1); |
} |
void toMask(SkMask* mask) const; |