diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2007-10-24 06:37:13 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2007-10-24 06:37:13 +0000 |
commit | 60507b9471bf6755fff6d52789b18d3bc5540cea (patch) | |
tree | f2d491823e6ba79a69bf29d86d69d07ea58b2b3f /pango/pango-renderer.c | |
parent | fb097dd671439d53dfc26f73f70c7aa8c8918304 (diff) | |
download | pango-60507b9471bf6755fff6d52789b18d3bc5540cea.tar.gz |
Bug 472629 – Add pango_renderer_get_layout(_line)
2007-10-24 Behdad Esfahbod <behdad@gnome.org>
Bug 472629 – Add pango_renderer_get_layout(_line)
* pango/pango-renderer.h:
* pango/pango-renderer.c:
New public API:
pango_renderer_get_layout()
pango_renderer_get_layout_line()
* pango/pangocairo-render.c (pango_cairo_renderer_draw_shape),
(release_renderer), (_pango_cairo_do_layout_line),
(_pango_cairo_do_layout): Use above API to simplify
shape_renderer implementation.
* pango/pango.def:
* docs/pango-sections.txt:
* docs/tmpl/pango-renderer.sgml:
Update.
svn path=/trunk/; revision=2460
Diffstat (limited to 'pango/pango-renderer.c')
-rw-r--r-- | pango/pango-renderer.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c index c7db5e57..d0cfa275 100644 --- a/pango/pango-renderer.c +++ b/pango/pango-renderer.c @@ -54,6 +54,7 @@ struct _PangoRendererPrivate PangoColor color[N_RENDER_PARTS]; gboolean color_set[N_RENDER_PARTS]; + PangoLayoutLine *line; LineState *line_state; }; @@ -469,6 +470,7 @@ pango_renderer_draw_layout_line (PangoRenderer *renderer, pango_renderer_activate (renderer); + renderer->priv->line = line; renderer->priv->line_state = &state; state.underline = PANGO_UNDERLINE_NONE; @@ -594,6 +596,7 @@ pango_renderer_draw_layout_line (PangoRenderer *renderer, draw_strikethrough (renderer, &state); renderer->priv->line_state = NULL; + renderer->priv->line = NULL; pango_renderer_deactivate (renderer); } @@ -1278,3 +1281,50 @@ pango_renderer_get_matrix (PangoRenderer *renderer) return renderer->matrix; } + +/** + * pango_renderer_get_layout: + * @renderer: a #PangoRenderer + * + * Gets the layout currently being rendered using @renderer. + * Calling this function only makes sense from inside a subclass's + * methods, like in its draw_shape<!---->() for example. + * + * The returned layout should not be modified while still being + * rendered. + * + * Return value: the layout, or %NULL if no layout is being + * rendered using @renderer at this time. + * + * Since: 1.20 + **/ +PangoLayout * +pango_renderer_get_layout (PangoRenderer *renderer) +{ + if (G_UNLIKELY (renderer->priv->line == NULL)) + return NULL; + + return renderer->priv->line->layout; +} + +/** + * pango_renderer_get_layout_line: + * @renderer: a #PangoRenderer + * + * Gets the layout line currently being rendered using @renderer. + * Calling this function only makes sense from inside a subclass's + * methods, like in its draw_shape<!---->() for example. + * + * The returned layout line should not be modified while still being + * rendered. + * + * Return value: the layout line, or %NULL if no layout line is being + * rendered using @renderer at this time. + * + * Since: 1.20 + **/ +PangoLayoutLine * +pango_renderer_get_layout_line (PangoRenderer *renderer) +{ + return renderer->priv->line; +} |