From 2fc2d85e7adc829d890cdd98caeb868f419f0cca Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Mon, 13 Dec 2004 19:55:57 +0000 Subject: Add. (#153548, Morten Welinder) Mon Dec 13 14:44:40 2004 Owen Taylor * pango/pango-layout.[ch] pango/pango.def docs/pango-sections.txt: Add. (#153548, Morten Welinder) * pango/pango-layout.c (pango_layout_set_font_description): Guard against the same description being set back. --- pango/pango-layout.c | 40 +++++++++++++++++++++++++++++++--------- pango/pango-layout.h | 3 +++ pango/pango.def | 1 + 3 files changed, 35 insertions(+), 9 deletions(-) (limited to 'pango') diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 97649f40..47318e24 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -484,16 +484,38 @@ pango_layout_set_font_description (PangoLayout *layout, { g_return_if_fail (layout != NULL); - if (layout->font_desc) - pango_font_description_free (layout->font_desc); - - if (desc) - layout->font_desc = pango_font_description_copy (desc); - else - layout->font_desc = NULL; + if (desc != layout->font_desc) + { + if (layout->font_desc) + pango_font_description_free (layout->font_desc); + + if (desc) + layout->font_desc = pango_font_description_copy (desc); + else + layout->font_desc = NULL; + + pango_layout_clear_lines (layout); + layout->tab_width = -1; + } +} - pango_layout_clear_lines (layout); - layout->tab_width = -1; +/** + * pango_layout_get_font_description: + * @layout: a #PangoLayout + * + * Gets the font description for the layout, if any. + * + * Return value: a pointer to the layout's font description, + * or %NULL if the font description from the layout's + * context is inherited. This value is owned by the layout + * and must not be modified or freed. + **/ +G_CONST_RETURN PangoFontDescription * +pango_layout_get_font_description (PangoLayout *layout) +{ + g_return_val_if_fail (PANGO_IS_LAYOUT (layout), NULL); + + return layout->font_desc; } /** diff --git a/pango/pango-layout.h b/pango/pango-layout.h index ac501fe1..d52b8b1c 100644 --- a/pango/pango-layout.h +++ b/pango/pango-layout.h @@ -116,6 +116,9 @@ void pango_layout_set_markup_with_accel (PangoLayout *layout, void pango_layout_set_font_description (PangoLayout *layout, const PangoFontDescription *desc); + +G_CONST_RETURN PangoFontDescription *pango_layout_get_font_description (PangoLayout *layout); + void pango_layout_set_width (PangoLayout *layout, int width); int pango_layout_get_width (PangoLayout *layout); diff --git a/pango/pango.def b/pango/pango.def index 5b9f2e1a..0e6b00a6 100644 --- a/pango/pango.def +++ b/pango/pango.def @@ -190,6 +190,7 @@ EXPORTS pango_layout_get_cursor_pos pango_layout_get_ellipsize pango_layout_get_extents + pango_layout_get_font_description pango_layout_get_indent pango_layout_get_iter pango_layout_get_justify -- cgit v1.2.1