[librsvg] Remove RsvgTextLayout; make rsvg_text_length_text_as_string() standalone
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Remove RsvgTextLayout; make rsvg_text_length_text_as_string() standalone
- Date: Thu, 7 Dec 2017 00:57:37 +0000 (UTC)
commit 1eaf391ca8165469ed800e2bbeed1bb0ab58d5c6
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Dec 6 10:03:18 2017 -0600
Remove RsvgTextLayout; make rsvg_text_length_text_as_string() standalone
rsvg-text.c | 63 +++++++++-------------------------------------------------
1 files changed, 10 insertions(+), 53 deletions(-)
---
diff --git a/rsvg-text.c b/rsvg-text.c
index e5746e9..6c3bae0 100644
--- a/rsvg-text.c
+++ b/rsvg-text.c
@@ -587,22 +587,6 @@ rsvg_new_tref (const char *element_name, RsvgNode *parent)
rsvg_node_tref_free);
}
-typedef struct _RsvgTextLayout RsvgTextLayout;
-
-struct _RsvgTextLayout {
- PangoLayout *layout;
- RsvgDrawingCtx *ctx;
- TextAnchor anchor;
- gdouble x, y;
-};
-
-static void
-rsvg_text_layout_free (RsvgTextLayout * layout)
-{
- g_object_unref (layout->layout);
- g_free (layout);
-}
-
static PangoLayout *
rsvg_text_create_layout (RsvgDrawingCtx * ctx, const char *text, PangoContext * context)
{
@@ -677,28 +661,6 @@ rsvg_text_create_layout (RsvgDrawingCtx * ctx, const char *text, PangoContext *
return layout;
}
-
-static RsvgTextLayout *
-rsvg_text_layout_new (RsvgDrawingCtx * ctx, const char *text)
-{
- RsvgState *state;
- RsvgTextLayout *layout;
-
- state = rsvg_current_state (ctx);
-
- if (ctx->pango_context == NULL)
- ctx->pango_context = ctx->render->create_pango_context (ctx);
-
- layout = g_new0 (RsvgTextLayout, 1);
-
- layout->layout = rsvg_text_create_layout (ctx, text, ctx->pango_context);
- layout->ctx = ctx;
-
- layout->anchor = state->text_anchor;
-
- return layout;
-}
-
static void
rsvg_text_render_text (RsvgDrawingCtx * ctx, const char *text, gdouble * x, gdouble * y)
{
@@ -740,26 +702,21 @@ rsvg_text_render_text (RsvgDrawingCtx * ctx, const char *text, gdouble * x, gdou
}
static gdouble
-rsvg_text_layout_width (RsvgTextLayout * layout)
+rsvg_text_length_text_as_string (RsvgDrawingCtx * ctx, const char *text)
{
+ PangoLayout *layout;
gint width;
+ gdouble scaled_width;
- pango_layout_get_size (layout->layout, &width, NULL);
-
- return width / (double)PANGO_SCALE;
-}
+ if (ctx->pango_context == NULL)
+ ctx->pango_context = ctx->render->create_pango_context (ctx);
-static gdouble
-rsvg_text_length_text_as_string (RsvgDrawingCtx * ctx, const char *text)
-{
- RsvgTextLayout *layout;
- gdouble x;
+ layout = rsvg_text_create_layout (ctx, text, ctx->pango_context);
- layout = rsvg_text_layout_new (ctx, text);
- layout->x = layout->y = 0;
+ pango_layout_get_size (layout, &width, NULL);
+ scaled_width = width / (double)PANGO_SCALE;
- x = rsvg_text_layout_width (layout);
+ g_object_unref (layout);
- rsvg_text_layout_free (layout);
- return x;
+ return scaled_width;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]