summaryrefslogtreecommitdiff
path: root/pango/pango-renderer.c
diff options
context:
space:
mode:
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;
+}