More lig-id cleanup

pull/1/head
Behdad Esfahbod 15 years ago
parent f6a23a0b91
commit dbf56b1d94
  1. 4
      src/hb-buffer-private.hh
  2. 2
      src/hb-buffer.cc
  3. 8
      src/hb-ot-layout-gsub-private.hh

@ -120,11 +120,11 @@ struct _hb_buffer_t {
/* Other stuff */ /* Other stuff */
unsigned int max_lig_id; unsigned int serial;
/* Methods */ /* Methods */
inline unsigned int allocate_lig_id (void) { return max_lig_id++; } inline unsigned int next_serial (void) { return serial++; }
inline void swap (void) { _hb_buffer_swap (this); } inline void swap (void) { _hb_buffer_swap (this); }
inline void clear_output (void) { _hb_buffer_clear_output (this); } inline void clear_output (void) { _hb_buffer_clear_output (this); }
inline void next_glyph (void) { _hb_buffer_next_glyph (this); } inline void next_glyph (void) { _hb_buffer_next_glyph (this); }

@ -228,7 +228,7 @@ hb_buffer_clear (hb_buffer_t *buffer)
buffer->out_len = 0; buffer->out_len = 0;
buffer->i = 0; buffer->i = 0;
buffer->out_info = buffer->info; buffer->out_info = buffer->info;
buffer->max_lig_id = 0; buffer->serial = 0;
} }
hb_bool_t hb_bool_t

@ -391,7 +391,7 @@ struct Ligature
: HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE); : HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE);
/* Allocate new ligature id */ /* Allocate new ligature id */
unsigned int lig_id = c->buffer->allocate_lig_id (); unsigned int lig_id = allocate_lig_id (c->buffer);
c->buffer->info[c->buffer->i].component() = 0; c->buffer->info[c->buffer->i].component() = 0;
c->buffer->info[c->buffer->i].lig_id() = lig_id; c->buffer->info[c->buffer->i].lig_id() = lig_id;
@ -427,6 +427,12 @@ struct Ligature
return true; return true;
} }
inline uint16_t allocate_lig_id (hb_buffer_t *buffer) const {
uint16_t lig_id = buffer->next_serial ();
if (unlikely (!lig_id)) lig_id = buffer->next_serial (); /* in case of overflows */
return lig_id;
}
public: public:
inline bool sanitize (hb_sanitize_context_t *c) { inline bool sanitize (hb_sanitize_context_t *c) {
TRACE_SANITIZE (); TRACE_SANITIZE ();

Loading…
Cancel
Save