[pango/pango2: 72/112] Store cairo_font_options in the context
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/pango2: 72/112] Store cairo_font_options in the context
- Date: Sun, 12 Jun 2022 23:20:27 +0000 (UTC)
commit 0133eb9ac46ddd7d3877d8807d4a1181599185af
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Jun 8 21:54:57 2022 -0400
Store cairo_font_options in the context
Now that everything lives in the same shared
object, this is easy.
examples/cairosimple.c | 5 +-
examples/cairotwisted.c | 5 +-
pango/meson.build | 2 +
pango/pango-context-private.h | 11 ++
pango/pangocairo-context.c | 284 +++++++++++-----------------------------
pango/pangocairo-context.h | 44 +++++++
pango/pangocairo-private.h | 2 +-
pango/pangocairo-render.h | 74 +++++++++++
pango/pangocairo.h | 89 +------------
tests/test-pangocairo-threads.c | 5 +-
10 files changed, 223 insertions(+), 298 deletions(-)
---
diff --git a/examples/cairosimple.c b/examples/cairosimple.c
index 6235a02a8..239e0e39d 100644
--- a/examples/cairosimple.c
+++ b/examples/cairosimple.c
@@ -17,6 +17,7 @@ draw_text (cairo_t *cr)
*/
#define TWEAKABLE_SCALE ((double) 0.1)
+ PangoContext *context;
PangoLayout *layout;
PangoLines *lines;
PangoFontDescription *desc;
@@ -27,7 +28,9 @@ draw_text (cairo_t *cr)
cairo_translate (cr, RADIUS / TWEAKABLE_SCALE, RADIUS / TWEAKABLE_SCALE);
/* Create a PangoLayout, set the font and text */
- layout = pango_cairo_create_layout (cr);
+ context = pango_cairo_create_context (cr);
+ layout = pango_layout_new (context);
+ g_object_unref (context);
pango_layout_set_text (layout, "Test\nسَلام", -1);
diff --git a/examples/cairotwisted.c b/examples/cairotwisted.c
index 4a6dff56e..98735ecc6 100644
--- a/examples/cairotwisted.c
+++ b/examples/cairotwisted.c
@@ -472,6 +472,7 @@ draw_text (cairo_t *cr,
const char *font,
const char *text)
{
+ PangoContext *context;
PangoLayout *layout;
PangoLine *line;
PangoFontDescription *desc;
@@ -485,7 +486,9 @@ draw_text (cairo_t *cr,
cairo_set_font_options (cr, font_options);
cairo_font_options_destroy (font_options);
- layout = pango_cairo_create_layout (cr);
+ context = pango_cairo_create_context (cr);
+ layout = pango_layout_new (context);
+ g_object_unref (context);
desc = pango_font_description_from_string (font);
pango_layout_set_font_description (layout, desc);
diff --git a/pango/meson.build b/pango/meson.build
index 788c0a074..1be64dfec 100644
--- a/pango/meson.build
+++ b/pango/meson.build
@@ -101,6 +101,8 @@ pango_gir_includes = [
if cairo_dep.found()
pango_headers += [
'pangocairo.h',
+ 'pangocairo-context.h',
+ 'pangocairo-render.h',
]
pango_sources += [
diff --git a/pango/pango-context-private.h b/pango/pango-context-private.h
index 69c2287b4..d9d07712b 100644
--- a/pango/pango-context-private.h
+++ b/pango/pango-context-private.h
@@ -21,6 +21,9 @@
#include <pango/pango-context.h>
+#ifdef HAVE_CAIRO
+#include <cairo.h>
+#endif
struct _PangoContext
{
@@ -44,4 +47,12 @@ struct _PangoContext
PangoFontMetrics *metrics;
gboolean round_glyph_positions;
+
+#ifdef HAVE_CAIRO
+ gboolean set_options_explicit;
+
+ cairo_font_options_t *set_options;
+ cairo_font_options_t *surface_options;
+ cairo_font_options_t *merged_options;
+#endif
};
diff --git a/pango/pangocairo-context.c b/pango/pangocairo-context.c
index 21dce46dc..daa122ff8 100644
--- a/pango/pangocairo-context.c
+++ b/pango/pangocairo-context.c
@@ -10,7 +10,7 @@
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
@@ -24,69 +24,26 @@
#include "pangocairo.h"
#include "pangocairo-private.h"
#include "pango-impl-utils.h"
+#include "pango-context-private.h"
#include <string.h>
-typedef struct _PangoCairoContextInfo PangoCairoContextInfo;
-
-struct _PangoCairoContextInfo
-{
- double dpi;
- gboolean set_options_explicit;
-
- cairo_font_options_t *set_options;
- cairo_font_options_t *surface_options;
- cairo_font_options_t *merged_options;
-};
-
-static void
-free_context_info (PangoCairoContextInfo *info)
-{
- if (info->set_options)
- cairo_font_options_destroy (info->set_options);
- if (info->surface_options)
- cairo_font_options_destroy (info->surface_options);
- if (info->merged_options)
- cairo_font_options_destroy (info->merged_options);
-
- g_slice_free (PangoCairoContextInfo, info);
-}
-
-static PangoCairoContextInfo *
-get_context_info (PangoContext *context,
- gboolean create)
-{
- static GQuark context_info_quark; /* MT-safe */
- PangoCairoContextInfo *info;
-
- if (G_UNLIKELY (!context_info_quark))
- context_info_quark = g_quark_from_static_string ("pango-cairo-context-info");
-
-retry:
- info = g_object_get_qdata (G_OBJECT (context), context_info_quark);
-
- if (G_UNLIKELY (!info) && create)
- {
- info = g_slice_new0 (PangoCairoContextInfo);
- info->dpi = -1.0;
-
- if (!g_object_replace_qdata (G_OBJECT (context), context_info_quark, NULL,
- info, (GDestroyNotify)free_context_info,
- NULL))
- {
- free_context_info (info);
- goto retry;
- }
- }
-
- return info;
-}
-
-static void
-_pango_cairo_update_context (cairo_t *cr,
- PangoContext *context)
+/**
+ * pango_cairo_update_context:
+ * @cr: a Cairo context
+ * @context: a `PangoContext`, from a pangocairo font map
+ *
+ * Updates a `PangoContext` previously created for use with Cairo to
+ * match the current transformation and target surface of a Cairo
+ * context.
+ *
+ * If any layouts have been created for the context, it's necessary
+ * to call [method@Pango.Layout.context_changed] on those layouts.
+ */
+void
+pango_cairo_update_context (cairo_t *cr,
+ PangoContext *context)
{
- PangoCairoContextInfo *info;
cairo_matrix_t cairo_matrix;
cairo_surface_t *target;
PangoMatrix pango_matrix;
@@ -95,29 +52,30 @@ _pango_cairo_update_context (cairo_t *cr,
cairo_font_options_t *old_merged_options;
gboolean changed = FALSE;
- info = get_context_info (context, TRUE);
+ g_return_if_fail (cr != NULL);
+ g_return_if_fail (PANGO_IS_CONTEXT (context));
target = cairo_get_target (cr);
- if (!info->surface_options)
- info->surface_options = cairo_font_options_create ();
- cairo_surface_get_font_options (target, info->surface_options);
- if (!info->set_options_explicit)
+ if (!context->surface_options)
+ context->surface_options = cairo_font_options_create ();
+ cairo_surface_get_font_options (target, context->surface_options);
+ if (!context->set_options_explicit)
{
- if (!info->set_options)
- info->set_options = cairo_font_options_create ();
- cairo_get_font_options (cr, info->set_options);
+ if (!context->set_options)
+ context->set_options = cairo_font_options_create ();
+ cairo_get_font_options (cr, context->set_options);
}
- old_merged_options = info->merged_options;
- info->merged_options = NULL;
+ old_merged_options = context->merged_options;
+ context->merged_options = NULL;
- merged_options = _pango_cairo_context_get_merged_font_options (context);
+ merged_options = pango_cairo_context_get_merged_font_options (context);
if (old_merged_options)
{
if (!cairo_font_options_equal (merged_options, old_merged_options))
- changed = TRUE;
+ changed = TRUE;
cairo_font_options_destroy (old_merged_options);
old_merged_options = NULL;
}
@@ -137,7 +95,8 @@ _pango_cairo_update_context (cairo_t *cr,
current_matrix = &identity_matrix;
/* layout is matrix-independent if metrics-hinting is off.
- * also ignore matrix translation offsets */
+ * also ignore matrix translation offsets
+ */
if ((cairo_font_options_get_hint_metrics (merged_options) != CAIRO_HINT_METRICS_OFF) &&
(0 != memcmp (&pango_matrix, current_matrix, sizeof (PangoMatrix))))
changed = TRUE;
@@ -148,71 +107,6 @@ _pango_cairo_update_context (cairo_t *cr,
pango_context_changed (context);
}
-/**
- * pango_cairo_update_context:
- * @cr: a Cairo context
- * @context: a `PangoContext`, from a pangocairo font map
- *
- * Updates a `PangoContext` previously created for use with Cairo to
- * match the current transformation and target surface of a Cairo
- * context.
- *
- * If any layouts have been created for the context, it's necessary
- * to call [method@Pango.Layout.context_changed] on those layouts.
- */
-void
-pango_cairo_update_context (cairo_t *cr,
- PangoContext *context)
-{
- g_return_if_fail (cr != NULL);
- g_return_if_fail (PANGO_IS_CONTEXT (context));
-
- _pango_cairo_update_context (cr, context);
-}
-
-/**
- * pango_cairo_context_set_resolution:
- * @context: a `PangoContext`, from a pangocairo font map
- * @dpi: the resolution in "dots per inch". (Physical inches aren't actually
- * involved; the terminology is conventional.) A 0 or negative value
- * means to use the resolution from the font map.
- *
- * Sets the resolution for the context.
- *
- * This is a scale factor between points specified in a `PangoFontDescription`
- * and Cairo units. The default value is 96, meaning that a 10 point font will
- * be 13 units high. (10 * 96. / 72. = 13.3).
- */
-void
-pango_cairo_context_set_resolution (PangoContext *context,
- double dpi)
-{
- PangoCairoContextInfo *info = get_context_info (context, TRUE);
- info->dpi = dpi;
-}
-
-/**
- * pango_cairo_context_get_resolution:
- * @context: a `PangoContext`, from a pangocairo font map
- *
- * Gets the resolution for the context.
- *
- * See [func@PangoCairo.context_set_resolution]
- *
- * Return value: the resolution in "dots per inch". A negative value will
- * be returned if no resolution has previously been set.
- */
-double
-pango_cairo_context_get_resolution (PangoContext *context)
-{
- PangoCairoContextInfo *info = get_context_info (context, FALSE);
-
- if (info)
- return info->dpi;
- else
- return -1.0;
-}
-
/**
* pango_cairo_context_set_font_options:
* @context: a `PangoContext`, from a pangocairo font map
@@ -226,43 +120,38 @@ pango_cairo_context_get_resolution (PangoContext *context)
*/
void
pango_cairo_context_set_font_options (PangoContext *context,
- const cairo_font_options_t *options)
+ const cairo_font_options_t *options)
{
- PangoCairoContextInfo *info;
-
g_return_if_fail (PANGO_IS_CONTEXT (context));
- info = get_context_info (context, TRUE);
-
- if (!info->set_options && !options)
+ if (!context->set_options && !options)
return;
- if (info->set_options &&
- options &&
- cairo_font_options_equal (info->set_options, options))
+ if (context->set_options && options &&
+ cairo_font_options_equal (context->set_options, options))
return;
- if (info->set_options || options)
+ if (context->set_options || options)
pango_context_changed (context);
- if (info->set_options)
- cairo_font_options_destroy (info->set_options);
+ if (context->set_options)
+ cairo_font_options_destroy (context->set_options);
if (options)
{
- info->set_options = cairo_font_options_copy (options);
- info->set_options_explicit = TRUE;
+ context->set_options = cairo_font_options_copy (options);
+ context->set_options_explicit = TRUE;
}
else
{
- info->set_options = NULL;
- info->set_options_explicit = FALSE;
+ context->set_options = NULL;
+ context->set_options_explicit = FALSE;
}
- if (info->merged_options)
+ if (context->merged_options)
{
- cairo_font_options_destroy (info->merged_options);
- info->merged_options = NULL;
+ cairo_font_options_destroy (context->merged_options);
+ context->merged_options = NULL;
}
}
@@ -283,45 +172,26 @@ pango_cairo_context_set_font_options (PangoContext *context,
const cairo_font_options_t *
pango_cairo_context_get_font_options (PangoContext *context)
{
- PangoCairoContextInfo *info;
-
g_return_val_if_fail (PANGO_IS_CONTEXT (context), NULL);
- info = get_context_info (context, FALSE);
-
- if (info)
- return info->set_options;
- else
- return NULL;
+ return context->set_options;
}
-/**
- * _pango_cairo_context_merge_font_options:
- * @context: a `PangoContext`
- * @options: a `cairo_font_options_t`
- *
- * Merge together options from the target surface and explicitly set
- * on the context.
- *
- * Return value: the combined set of font options. This value is owned
- * by the context and must not be modified or freed.
- */
const cairo_font_options_t *
-_pango_cairo_context_get_merged_font_options (PangoContext *context)
+pango_cairo_context_get_merged_font_options (PangoContext *context)
{
- PangoCairoContextInfo *info = get_context_info (context, TRUE);
-
- if (!info->merged_options)
+ if (!context->merged_options)
{
- info->merged_options = cairo_font_options_create ();
+ context->merged_options = cairo_font_options_create ();
- if (info->surface_options)
- cairo_font_options_merge (info->merged_options, info->surface_options);
- if (info->set_options)
- cairo_font_options_merge (info->merged_options, info->set_options);
+ if (context->surface_options)
+ cairo_font_options_merge (context->merged_options, context->surface_options)
+;
+ if (context->set_options)
+ cairo_font_options_merge (context->merged_options, context->set_options);
}
- return info->merged_options;
+ return context->merged_options;
}
/**
@@ -356,6 +226,25 @@ pango_cairo_create_context (cairo_t *cr)
return context;
}
+/**
+ * pango_cairo_update_layout:
+ * @cr: a Cairo context
+ * @layout: a `PangoLayout`, from [func@create_layout]
+ *
+ * Updates the private `PangoContext` of a `PangoLayout` created with
+ * [func@create_layout] to match the current transformation and target
+ * surface of a Cairo context.
+ */
+void
+pango_cairo_update_layout (cairo_t *cr,
+ PangoLayout *layout)
+{
+ g_return_if_fail (cr != NULL);
+ g_return_if_fail (PANGO_IS_LAYOUT (layout));
+
+ pango_cairo_update_context (cr, pango_layout_get_context (layout));
+}
+
/**
* pango_cairo_create_layout:
* @cr: a Cairo context
@@ -365,8 +254,8 @@ pango_cairo_create_context (cairo_t *cr)
*
* This layout can then be used for text measurement with functions
* like [method@Pango.Lines.get_size] or drawing with functions like
- * [func@show_layout]. If you change the transformation or target
- * surface for @cr, you need to call [func@update_layout].
+ * [func@Pango.cairo_show_layout]. If you change the transformation or target
+ * surface for @cr, you need to call [func@Pango.cairo_update_layout].
*
* This function is the most convenient way to use Cairo with Pango,
* however it is slightly inefficient since it creates a separate
@@ -389,22 +278,3 @@ pango_cairo_create_layout (cairo_t *cr)
return layout;
}
-
-/**
- * pango_cairo_update_layout:
- * @cr: a Cairo context
- * @layout: a `PangoLayout`, from [func@create_layout]
- *
- * Updates the private `PangoContext` of a `PangoLayout` created with
- * [func@create_layout] to match the current transformation and target
- * surface of a Cairo context.
- */
-void
-pango_cairo_update_layout (cairo_t *cr,
- PangoLayout *layout)
-{
- g_return_if_fail (cr != NULL);
- g_return_if_fail (PANGO_IS_LAYOUT (layout));
-
- _pango_cairo_update_context (cr, pango_layout_get_context (layout));
-}
diff --git a/pango/pangocairo-context.h b/pango/pangocairo-context.h
new file mode 100644
index 000000000..9a2d8d7eb
--- /dev/null
+++ b/pango/pangocairo-context.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 1999, 2004 Red Hat, Inc.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <pango/pango.h>
+#include <cairo.h>
+
+G_BEGIN_DECLS
+
+PANGO_AVAILABLE_IN_ALL
+PangoContext * pango_cairo_create_context (cairo_t *cr);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_update_context (cairo_t *cr,
+ PangoContext *context);
+PANGO_AVAILABLE_IN_ALL
+PangoLayout * pango_cairo_create_layout (cairo_t *cr);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_update_layout (cairo_t *cr,
+ PangoLayout *layout);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_context_set_font_options (PangoContext *context,
+ const cairo_font_options_t *options);
+PANGO_AVAILABLE_IN_ALL
+const cairo_font_options_t *
+ pango_cairo_context_get_font_options (PangoContext *context);
+
+G_END_DECLS
diff --git a/pango/pangocairo-private.h b/pango/pangocairo-private.h
index 7c16cf8c8..23e3c49f3 100644
--- a/pango/pangocairo-private.h
+++ b/pango/pangocairo-private.h
@@ -62,4 +62,4 @@ _PANGO_EXTERN
GType pango_cairo_renderer_get_type (void) G_GNUC_CONST;
-const cairo_font_options_t *_pango_cairo_context_get_merged_font_options (PangoContext *context);
+const cairo_font_options_t *pango_cairo_context_get_merged_font_options (PangoContext *context);
diff --git a/pango/pangocairo-render.h b/pango/pangocairo-render.h
new file mode 100644
index 000000000..aadb831e5
--- /dev/null
+++ b/pango/pangocairo-render.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 1999, 2004 Red Hat, Inc.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <pango/pango.h>
+#include <cairo.h>
+
+G_BEGIN_DECLS
+
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_show_glyph_string (cairo_t *cr,
+ PangoFont *font,
+ PangoGlyphString *glyphs);
+
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_show_glyph_item (cairo_t *cr,
+ const char *text,
+ PangoGlyphItem *glyph_item);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_show_line (cairo_t *cr,
+ PangoLine *line);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_show_lines (cairo_t *cr,
+ PangoLines *lines);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_show_layout (cairo_t *cr,
+ PangoLayout *layout);
+
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_show_error_underline (cairo_t *cr,
+ double x,
+ double y,
+ double width,
+ double height);
+
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_glyph_string_path (cairo_t *cr,
+ PangoFont *font,
+ PangoGlyphString *glyphs);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_layout_path (cairo_t *cr,
+ PangoLayout *layout);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_line_path (cairo_t *cr,
+ PangoLine *line);
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_lines_path (cairo_t *cr,
+ PangoLines *lines);
+
+PANGO_AVAILABLE_IN_ALL
+void pango_cairo_error_underline_path (cairo_t *cr,
+ double x,
+ double y,
+ double width,
+ double height);
+
+G_END_DECLS
diff --git a/pango/pangocairo.h b/pango/pangocairo.h
index 51a5f5ea5..a2658f825 100644
--- a/pango/pangocairo.h
+++ b/pango/pangocairo.h
@@ -19,90 +19,5 @@
#pragma once
-#include <pango/pango.h>
-#include <cairo.h>
-
-G_BEGIN_DECLS
-
-/* Update a Pango context for the current state of a cairo context
- */
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_update_context (cairo_t *cr,
- PangoContext *context);
-
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_context_set_font_options (PangoContext *context,
- const cairo_font_options_t *options);
-PANGO_AVAILABLE_IN_ALL
-const cairo_font_options_t *pango_cairo_context_get_font_options (PangoContext *context);
-
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_context_set_resolution (PangoContext *context,
- double dpi);
-PANGO_AVAILABLE_IN_ALL
-double pango_cairo_context_get_resolution (PangoContext *context);
-
-/* Convenience
- */
-PANGO_AVAILABLE_IN_ALL
-PangoContext *pango_cairo_create_context (cairo_t *cr);
-PANGO_AVAILABLE_IN_ALL
-PangoLayout *pango_cairo_create_layout (cairo_t *cr);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_update_layout (cairo_t *cr,
- PangoLayout *layout);
-
-/*
- * Rendering
- */
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_show_glyph_string (cairo_t *cr,
- PangoFont *font,
- PangoGlyphString *glyphs);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_show_glyph_item (cairo_t *cr,
- const char *text,
- PangoGlyphItem *glyph_item);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_show_line (cairo_t *cr,
- PangoLine *line);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_show_lines (cairo_t *cr,
- PangoLines *lines);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_show_layout (cairo_t *cr,
- PangoLayout *layout);
-
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_show_error_underline (cairo_t *cr,
- double x,
- double y,
- double width,
- double height);
-
-
-/*
- * Rendering to a path
- */
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_glyph_string_path (cairo_t *cr,
- PangoFont *font,
- PangoGlyphString *glyphs);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_layout_path (cairo_t *cr,
- PangoLayout *layout);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_line_path (cairo_t *cr,
- PangoLine *line);
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_lines_path (cairo_t *cr,
- PangoLines *lines);
-
-PANGO_AVAILABLE_IN_ALL
-void pango_cairo_error_underline_path (cairo_t *cr,
- double x,
- double y,
- double width,
- double height);
-
-G_END_DECLS
+#include <pango/pangocairo-context.h>
+#include <pango/pangocairo-render.h>
diff --git a/tests/test-pangocairo-threads.c b/tests/test-pangocairo-threads.c
index aa1e1bcad..429e3011b 100644
--- a/tests/test-pangocairo-threads.c
+++ b/tests/test-pangocairo-threads.c
@@ -21,9 +21,12 @@ create_surface (void)
static PangoLayout *
create_layout (cairo_t *cr)
{
+ PangoContext *context;
PangoLayout *layout;
- layout = pango_cairo_create_layout (cr);
+ context = pango_cairo_create_context (cr);
+ layout = pango_layout_new (context);
+ g_object_unref (context);
pango_layout_set_text (layout, text, -1);
pango_layout_set_width (layout, WIDTH * PANGO_SCALE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]