diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2006-08-20 20:35:45 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2006-08-20 20:35:45 +0000 |
commit | d166f21c486ecda8c67d94ec0392f837c5f3eea9 (patch) | |
tree | 48ea486638afadaf9d734c59f9bbb06102f5e4a0 /pango/pango-context.c | |
parent | 919d3089dae2e2ad011c9b94b4847c30b536ac63 (diff) | |
download | pango-d166f21c486ecda8c67d94ec0392f837c5f3eea9.tar.gz |
Correct switched return value of EAST/WEST.
2006-08-20 Behdad Esfahbod <behdad@gnome.org>
* pango/pango-matrix.c (pango_matrix_to_gravity): Correct switched
return value of EAST/WEST.
* pango/pango-types.h (PangoGravity): Add PANGO_GRAVITY_AUTO.
* pango/pango-context.h: Add pango_context_get_gravity().
* examples/renderdemo.c (parse_gravity), (parse_options):
* pango/pango-context.c (pango_context_init),
(update_resolved_gravity), (pango_context_set_matrix),
(pango_context_set_base_gravity), (pango_context_get_gravity),
(itemize_state_init), (get_shaper_and_font):
* pango/pango-layout.c (line_set_resolved_dir):
* pango/pangocairo-fcfont.c (pango_cairo_fc_font_get_metrics),
(pango_cairo_fc_font_glyph_extents_cache_init),
(_pango_cairo_fc_font_new):
* pango/pangofc-fontmap.c (pango_fc_make_pattern),
(pango_fc_font_map_load_fontset):
* pango/pango.def:
* docs/pango-sections.txt:
* docs/tmpl/main.sgml:
Update to above.
Diffstat (limited to 'pango/pango-context.c')
-rw-r--r-- | pango/pango-context.c | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/pango/pango-context.c b/pango/pango-context.c index ac6db552..b3dec728 100644 --- a/pango/pango-context.c +++ b/pango/pango-context.c @@ -37,6 +37,7 @@ struct _PangoContext PangoLanguage *language; PangoDirection base_dir; PangoGravity base_gravity; + PangoGravity resolved_gravity; PangoFontDescription *font_desc; @@ -59,7 +60,7 @@ static void pango_context_init (PangoContext *context) { context->base_dir = PANGO_DIRECTION_WEAK_LTR; - context->base_gravity = PANGO_GRAVITY_SOUTH; + context->resolved_gravity = context->base_gravity = PANGO_GRAVITY_SOUTH; context->language = NULL; context->font_map = NULL; @@ -128,6 +129,15 @@ pango_context_new (void) return context; } +static void +update_resolved_gravity (PangoContext *context) +{ + if (context->base_gravity == PANGO_GRAVITY_AUTO) + context->resolved_gravity = pango_matrix_to_gravity (context->matrix); + else + context->resolved_gravity = context->base_gravity; +} + /** * pango_context_set_matrix: * @context: a #PangoContext @@ -155,6 +165,8 @@ pango_context_set_matrix (PangoContext *context, context->matrix = pango_matrix_copy (matrix); else context->matrix = NULL; + + update_resolved_gravity (context); } /** @@ -423,6 +435,8 @@ pango_context_set_base_gravity (PangoContext *context, g_return_if_fail (context != NULL); context->base_gravity = gravity; + + update_resolved_gravity (context); } /** @@ -444,6 +458,27 @@ pango_context_get_base_gravity (PangoContext *context) return context->base_gravity; } +/** + * pango_context_get_gravity: + * @context: a #PangoContext + * + * Retrieves the gravity for the context. This is similar to + * pango_context_get_base_gravity(), except for when the base gravity + * is %PANGO_GRAVITY_AUTO for which pango_matrix_to_gravity() is used + * to return the gravity from the current context matrix. + * + * Return value: the resolved gravity for the context. + * + * Since: 1.16 + **/ +PangoGravity +pango_context_get_gravity (PangoContext *context) +{ + g_return_val_if_fail (context != NULL, PANGO_GRAVITY_SOUTH); + + return context->resolved_gravity; +} + /**********************************************************************/ static gboolean @@ -711,10 +746,10 @@ itemize_state_init (ItemizeState *state, /* FIXME: Set gravity to base gravity for now, until we do * proper gravity assignment. */ - state->gravity = context->base_gravity; + state->gravity = context->resolved_gravity; - state->centered_baseline = context->base_gravity == PANGO_GRAVITY_EAST - || context->base_gravity == PANGO_GRAVITY_WEST; + state->centered_baseline = context->resolved_gravity == PANGO_GRAVITY_EAST + || context->resolved_gravity == PANGO_GRAVITY_WEST; /* Initialize the attribute iterator */ @@ -1014,6 +1049,7 @@ get_shaper_and_font (ItemizeState *state, { case PANGO_GRAVITY_SOUTH: case PANGO_GRAVITY_NORTH: + case PANGO_GRAVITY_AUTO: default: script = state->script; break; |