[HB] Move direction to buffer
diff --git a/src/hb-buffer.c b/src/hb-buffer.c index d2ec33d..3c6fd7c 100644 --- a/src/hb-buffer.c +++ b/src/hb-buffer.c
@@ -166,6 +166,15 @@ buffer->in_length++; } +void +hb_buffer_set_direction (hb_buffer_t *buffer, + hb_direction_t direction) + +{ + buffer->direction = direction; +} + + /* HarfBuzz-Internal API */ HB_INTERNAL void
diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 197c921..1376ad4 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h
@@ -32,6 +32,13 @@ HB_BEGIN_DECLS +typedef enum _hb_direction_t { + HB_DIRECTION_LTR, + HB_DIRECTION_RTL, + HB_DIRECTION_TTB, + HB_DIRECTION_BTT +} hb_direction_t; + /* XXX Hide structs? */ typedef struct _hb_glyph_info_t { @@ -72,6 +79,8 @@ hb_glyph_info_t *out_string; hb_glyph_info_t *alt_string; hb_glyph_position_t *positions; + + hb_direction_t direction; unsigned int max_lig_id; } hb_buffer_t; @@ -94,6 +103,11 @@ unsigned int properties, unsigned int cluster); +void +hb_buffer_set_direction (hb_buffer_t *buffer, + hb_direction_t direction); + + HB_END_DECLS #endif /* HB_BUFFER_H */
diff --git a/src/hb-ot-layout-gpos-private.h b/src/hb-ot-layout-gpos-private.h index 5ad28a6..619b4c4 100644 --- a/src/hb-ot-layout-gpos-private.h +++ b/src/hb-ot-layout-gpos-private.h
@@ -687,7 +687,7 @@ /* TODO vertical */ - if (gpi->r2l) + if (buffer->direction == HB_DIRECTION_RTL) { POSITION (buffer->in_pos)->x_advance = entry_x - gpi->anchor_x; POSITION (buffer->in_pos)->new_advance = TRUE;
diff --git a/src/hb-ot-layout-private.h b/src/hb-ot-layout-private.h index 326440b..12b1ee1 100644 --- a/src/hb-ot-layout-private.h +++ b/src/hb-ot-layout-private.h
@@ -52,7 +52,6 @@ hb_16dot16_t x_scale, y_scale; hb_bool_t dvi; - hb_bool_t r2l; unsigned int last; /* the last valid glyph--used with cursive positioning */ hb_position_t anchor_x; /* the coordinates of the anchor point */
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index 530e254..b3b0e3c 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc
@@ -115,13 +115,6 @@ } void -hb_ot_layout_set_direction (hb_ot_layout_t *layout, - hb_bool_t r2l) -{ - layout->gpos_info.r2l = !!r2l; -} - -void hb_ot_layout_set_hinting (hb_ot_layout_t *layout, hb_bool_t hinted) {
diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h index 20bd1e4..f1b4b45 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h
@@ -53,11 +53,6 @@ void hb_ot_layout_destroy (hb_ot_layout_t *layout); -/* XXX */ -void -hb_ot_layout_set_direction (hb_ot_layout_t *layout, - hb_bool_t r2l); - void hb_ot_layout_set_hinting (hb_ot_layout_t *layout, hb_bool_t hinted);