[aat] Add enums for pre-defined state and classes
Not sure how I didn't add before...
This commit is contained in:
parent
67449c3933
commit
4653e6cf3c
|
@ -439,10 +439,23 @@ struct Entry<void>
|
||||||
template <typename Extra>
|
template <typename Extra>
|
||||||
struct StateTable
|
struct StateTable
|
||||||
{
|
{
|
||||||
|
enum State
|
||||||
|
{
|
||||||
|
STATE_START_OF_TEXT = 0,
|
||||||
|
STATE_START_OF_LINE = 1,
|
||||||
|
};
|
||||||
|
enum Class
|
||||||
|
{
|
||||||
|
CLASS_END_OF_TEXT = 0,
|
||||||
|
CLASS_OUT_OF_BOUNDS = 1,
|
||||||
|
CLASS_DELETED_GLYPH = 2,
|
||||||
|
CLASS_END_OF_LINE = 3,
|
||||||
|
};
|
||||||
|
|
||||||
inline unsigned int get_class (hb_codepoint_t glyph_id, unsigned int num_glyphs) const
|
inline unsigned int get_class (hb_codepoint_t glyph_id, unsigned int num_glyphs) const
|
||||||
{
|
{
|
||||||
const HBUINT16 *v = (this+classTable).get_value (glyph_id, num_glyphs);
|
const HBUINT16 *v = (this+classTable).get_value (glyph_id, num_glyphs);
|
||||||
return v ? *v : 1;
|
return v ? *v : CLASS_OUT_OF_BOUNDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const Entry<Extra> *get_entries () const
|
inline const Entry<Extra> *get_entries () const
|
||||||
|
@ -538,13 +551,13 @@ struct StateTableDriver
|
||||||
if (!c->in_place)
|
if (!c->in_place)
|
||||||
buffer->clear_output ();
|
buffer->clear_output ();
|
||||||
|
|
||||||
unsigned int state = 0;
|
unsigned int state = StateTable<EntryData>::STATE_START_OF_TEXT;
|
||||||
bool last_was_dont_advance = false;
|
bool last_was_dont_advance = false;
|
||||||
for (buffer->idx = 0;;)
|
for (buffer->idx = 0;;)
|
||||||
{
|
{
|
||||||
unsigned int klass = buffer->idx < buffer->len ?
|
unsigned int klass = buffer->idx < buffer->len ?
|
||||||
machine.get_class (info[buffer->idx].codepoint, num_glyphs) :
|
machine.get_class (info[buffer->idx].codepoint, num_glyphs) :
|
||||||
0 /* End of text */;
|
(unsigned) StateTable<EntryData>::CLASS_END_OF_TEXT;
|
||||||
const Entry<EntryData> *entry = machine.get_entryZ (state, klass);
|
const Entry<EntryData> *entry = machine.get_entryZ (state, klass);
|
||||||
if (unlikely (!entry))
|
if (unlikely (!entry))
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue