From 02a370697d25b986dbf1d5c38f46a89a4833b495 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 29 Jul 2009 18:41:25 -0400 Subject: [PATCH] [HB] Move direction to buffer --- src/hb-buffer.c | 9 +++++++++ src/hb-buffer.h | 14 ++++++++++++++ src/hb-ot-layout-gpos-private.h | 2 +- src/hb-ot-layout-private.h | 1 - src/hb-ot-layout.cc | 7 ------- src/hb-ot-layout.h | 5 ----- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/hb-buffer.c b/src/hb-buffer.c index d2ec33dc..3c6fd7ce 100644 --- a/src/hb-buffer.c +++ b/src/hb-buffer.c @@ -166,6 +166,15 @@ hb_buffer_add_glyph (hb_buffer_t *buffer, 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 197c921e..1376ad4c 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 @@ typedef struct _hb_buffer_t { 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 @@ hb_buffer_add_glyph (hb_buffer_t *buffer, 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 5ad28a61..619b4c47 100644 --- a/src/hb-ot-layout-gpos-private.h +++ b/src/hb-ot-layout-gpos-private.h @@ -687,7 +687,7 @@ struct CursivePosFormat1 /* 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 326440b1..12b1ee1c 100644 --- a/src/hb-ot-layout-private.h +++ b/src/hb-ot-layout-private.h @@ -52,7 +52,6 @@ struct _hb_ot_layout_t 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 530e2548..b3b0e3c8 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -114,13 +114,6 @@ hb_ot_layout_destroy (hb_ot_layout_t *layout) free (layout); } -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 20bd1e45..f1b4b45e 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h @@ -53,11 +53,6 @@ hb_ot_layout_create_for_tables (const char *gdef_data, 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); -- GitLab