diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2018-11-28 14:46:26 -0500 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2018-11-28 14:49:45 -0500 |
commit | 5b4a789ca857664668ff69936574dcd09bee6065 (patch) | |
tree | ae9e485fd3a1fc92f3d2003c60bf021164bddc0b /src | |
parent | 987f4187722a05e3f360b85c66309a351fc5d6ad (diff) |
[aat] Towards adding two ClassTable's
Diffstat (limited to 'src')
-rw-r--r-- | src/hb-aat-layout-common.hh | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/src/hb-aat-layout-common.hh b/src/hb-aat-layout-common.hh index 3ee96bc9..94885216 100644 --- a/src/hb-aat-layout-common.hh +++ b/src/hb-aat-layout-common.hh @@ -363,6 +363,14 @@ struct Lookup } } + inline typename T::type get_class (hb_codepoint_t glyph_id, + unsigned int num_glyphs, + unsigned int outOfRange) const + { + const T *v = get_value (glyph_id, num_glyphs); + return v ? *v : outOfRange; + } + inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -638,6 +646,7 @@ struct StateTable DEFINE_SIZE_STATIC (4 * sizeof (HBUINT)); }; +template <typename HBUCHAR> struct ClassTable { inline unsigned int get_class (hb_codepoint_t glyph_id, unsigned int outOfRange) const @@ -645,6 +654,12 @@ struct ClassTable unsigned int i = glyph_id - firstGlyph; return i >= classArray.len ? outOfRange : classArray.arrayZ[i]; } + inline unsigned int get_class (hb_codepoint_t glyph_id, + unsigned int num_glyphs HB_UNUSED, + unsigned int outOfRange) const + { + return get_class (glyph_id, outOfRange); + } inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -652,7 +667,7 @@ struct ClassTable } protected: GlyphID firstGlyph; /* First glyph index included in the trimmed array. */ - ArrayOf<HBUINT8> classArray; /* The class codes (indexed by glyph index minus + ArrayOf<HBUCHAR> classArray; /* The class codes (indexed by glyph index minus * firstGlyph). */ public: DEFINE_SIZE_ARRAY (4, classArray); @@ -663,15 +678,8 @@ struct ObsoleteTypes static const bool extended = false; typedef HBUINT16 HBUINT; typedef HBUINT8 HBUSHORT; - struct ClassType : ClassTable - { - inline unsigned int get_class (hb_codepoint_t glyph_id, - unsigned int num_glyphs HB_UNUSED, - unsigned int outOfRange) const - { - return ClassTable::get_class (glyph_id, outOfRange); - } - }; + typedef ClassTable<HBUINT8> ClassType; + template <typename T> static inline unsigned int offsetToIndex (unsigned int offset, const void *base, @@ -692,16 +700,8 @@ struct ExtendedTypes static const bool extended = true; typedef HBUINT32 HBUINT; typedef HBUINT16 HBUSHORT; - struct ClassType : Lookup<HBUINT16> - { - inline unsigned int get_class (hb_codepoint_t glyph_id, - unsigned int num_glyphs, - unsigned int outOfRange) const - { - const HBUINT16 *v = get_value (glyph_id, num_glyphs); - return v ? *v : outOfRange; - } - }; + typedef Lookup<HBUINT16> ClassType; + template <typename T> static inline unsigned int offsetToIndex (unsigned int offset, const void *base, |