summaryrefslogtreecommitdiff
path: root/pango/pango-renderer.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2007-10-24 06:37:13 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2007-10-24 06:37:13 +0000
commit60507b9471bf6755fff6d52789b18d3bc5540cea (patch)
treef2d491823e6ba79a69bf29d86d69d07ea58b2b3f /pango/pango-renderer.c
parentfb097dd671439d53dfc26f73f70c7aa8c8918304 (diff)
downloadpango-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.c50
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;
+}