summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2018-11-28 14:46:26 -0500
committerBehdad Esfahbod <behdad@behdad.org>2018-11-28 14:49:45 -0500
commit5b4a789ca857664668ff69936574dcd09bee6065 (patch)
treeae9e485fd3a1fc92f3d2003c60bf021164bddc0b /src
parent987f4187722a05e3f360b85c66309a351fc5d6ad (diff)
[aat] Towards adding two ClassTable's
Diffstat (limited to 'src')
-rw-r--r--src/hb-aat-layout-common.hh40
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,