Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Unified Diff: src/core/SkGlyph.h

Issue 885903002: Make the glyph array entries inline. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix asserts for checking code in range Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/core/SkGlyphCache.h » ('j') | src/core/SkGlyphCache.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « no previous file | src/core/SkGlyphCache.h » ('j') | src/core/SkGlyphCache.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698