diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-07-07 13:39:20 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-07-12 09:32:03 -0400 |
commit | 7739307e03ecbbf1e8bc9f15c3174ab191646a64 (patch) | |
tree | 9d69ca07411964a55a9338e1cfb4a56a7be082d7 | |
parent | abd8b670b32d0939f5e950aef81fbafea94d94e4 (diff) | |
download | pango-7739307e03ecbbf1e8bc9f15c3174ab191646a64.tar.gz |
layout: Add pango_layout_set_shape_flags
This will let apps opt into shaping options
from the high-level api.
-rw-r--r-- | pango/pango-layout-private.h | 1 | ||||
-rw-r--r-- | pango/pango-layout.c | 23 | ||||
-rw-r--r-- | pango/pango-layout.h | 6 |
3 files changed, 28 insertions, 2 deletions
diff --git a/pango/pango-layout-private.h b/pango/pango-layout-private.h index 38e2e196..440585be 100644 --- a/pango/pango-layout-private.h +++ b/pango/pango-layout-private.h @@ -65,6 +65,7 @@ struct _PangoLayout guint is_wrapped : 1; /* Whether the layout has any wrapped lines */ guint ellipsize : 2; /* PangoEllipsizeMode */ guint is_ellipsized : 1; /* Whether the layout has any ellipsized lines */ + PangoShapeFlags shape_flags; /* Flags influencing shaping */ int unknown_glyphs_count; /* number of unknown glyphs */ /* some caching */ diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 6a44916c..ab8805a4 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -650,6 +650,26 @@ pango_layout_get_line_spacing (PangoLayout *layout) return layout->line_spacing; } +void +pango_layout_set_shape_flags (PangoLayout *layout, + PangoShapeFlags flags) +{ + g_return_if_fail (layout != NULL); + + if (layout->shape_flags != flags) + { + layout->shape_flags = flags; + layout_changed (layout); + } +} + +PangoShapeFlags +pango_layout_get_shape_flags (PangoLayout *layout) +{ + g_return_val_if_fail (layout != NULL, FALSE); + return layout->shape_flags; +} + /** * pango_layout_set_attributes: * @layout: a #PangoLayout @@ -3312,7 +3332,6 @@ shape_run (PangoLayoutLine *line, { PangoLayout *layout = line->layout; PangoGlyphString *glyphs = pango_glyph_string_new (); - PangoShapeFlags flags = PANGO_SHAPE_FLAGS_NONE; if (layout->text[item->offset] == '\t') shape_tab (line, glyphs); @@ -3325,7 +3344,7 @@ shape_run (PangoLayoutLine *line, else pango_shape_with_options (layout->text + item->offset, item->length, layout->text, layout->length, - &item->analysis, flags, glyphs); + &item->analysis, layout->shape_flags, glyphs); if (state->properties.letter_spacing) { diff --git a/pango/pango-layout.h b/pango/pango-layout.h index 96155715..cd610b8c 100644 --- a/pango/pango-layout.h +++ b/pango/pango-layout.h @@ -211,6 +211,12 @@ void pango_layout_set_line_spacing (PangoLayout *la float spread); PANGO_AVAILABLE_IN_1_44 float pango_layout_get_line_spacing (PangoLayout *layout); +PANGO_AVAILABLE_IN_1_44 +void pango_layout_set_shape_flags (PangoLayout *layout, + PangoShapeFlags flags); +PANGO_AVAILABLE_IN_1_44 +PangoShapeFlags pango_layout_get_shape_flags (PangoLayout *layout); + PANGO_AVAILABLE_IN_ALL void pango_layout_set_justify (PangoLayout *layout, gboolean justify); |