gtk: Pass font options along

Pass the widget's font options along when we
are creating text nodes.
This commit is contained in:
Matthias Clasen
2021-09-03 07:21:15 -04:00
parent 299c7c3514
commit 062a15310a
4 changed files with 26 additions and 16 deletions

View File

@@ -100,6 +100,7 @@ gsk_pango_renderer_draw_glyph_item (PangoRenderer *renderer,
get_color (crenderer, PANGO_RENDER_PART_FOREGROUND, &color);
gtk_snapshot_append_text (crenderer->snapshot,
crenderer->options,
glyph_item->item->analysis.font,
glyph_item->glyphs,
&color,
@@ -467,14 +468,18 @@ gtk_snapshot_append_layout (GtkSnapshot *snapshot,
const GdkRGBA *color)
{
GskPangoRenderer *crenderer;
PangoContext *context;
g_return_if_fail (snapshot != NULL);
g_return_if_fail (PANGO_IS_LAYOUT (layout));
crenderer = gsk_pango_renderer_acquire ();
context = pango_layout_get_context (layout);
crenderer->snapshot = snapshot;
crenderer->fg_color = color;
crenderer->options = pango_cairo_context_get_font_options (context);
pango_renderer_draw_layout (PANGO_RENDERER (crenderer), layout, 0, 0);

View File

@@ -63,6 +63,8 @@ struct _GskPangoRenderer
/* Error underline color for this widget */
GdkRGBA *error_color;
const cairo_font_options_t *options;
GskPangoRendererState state;
guint is_cached_renderer : 1;

View File

@@ -2121,22 +2121,24 @@ gtk_snapshot_render_layout (GtkSnapshot *snapshot,
}
void
gtk_snapshot_append_text (GtkSnapshot *snapshot,
PangoFont *font,
PangoGlyphString *glyphs,
const GdkRGBA *color,
float x,
float y)
gtk_snapshot_append_text (GtkSnapshot *snapshot,
const cairo_font_options_t *options,
PangoFont *font,
PangoGlyphString *glyphs,
const GdkRGBA *color,
float x,
float y)
{
GskRenderNode *node;
float dx, dy;
gtk_snapshot_ensure_translate (snapshot, &dx, &dy);
node = gsk_text_node_new (font,
glyphs,
color,
&GRAPHENE_POINT_INIT (x + dx, y + dy));
node = gsk_text_node_new_with_font_options (options,
font,
glyphs,
color,
&GRAPHENE_POINT_INIT (x + dx, y + dy));
if (node == NULL)
return;

View File

@@ -24,12 +24,13 @@
G_BEGIN_DECLS
void gtk_snapshot_append_text (GtkSnapshot *snapshot,
PangoFont *font,
PangoGlyphString *glyphs,
const GdkRGBA *color,
float x,
float y);
void gtk_snapshot_append_text (GtkSnapshot *snapshot,
const cairo_font_options_t *options,
PangoFont *font,
PangoGlyphString *glyphs,
const GdkRGBA *color,
float x,
float y);
void gtk_snapshot_push_collect (GtkSnapshot *snapshot);
GskRenderNode * gtk_snapshot_pop_collect (GtkSnapshot *snapshot);