From ce2b2128bb7cd9b85280968a9673508f68d8fbd3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 4 Sep 2021 14:52:15 -0400 Subject: [PATCH] Revert "gsk: Add font options to text nodes" This reverts commit f1347f5841ea526c7016a8fbd329b45001812a23. --- gsk/gskrendernode.h | 13 ---- gsk/gskrendernodeimpl.c | 159 +++++----------------------------------- 2 files changed, 20 insertions(+), 152 deletions(-) diff --git a/gsk/gskrendernode.h b/gsk/gskrendernode.h index c362ddb70c..c420633a91 100644 --- a/gsk/gskrendernode.h +++ b/gsk/gskrendernode.h @@ -492,19 +492,6 @@ GskRenderNode * gsk_text_node_new (PangoFont PangoGlyphString *glyphs, const GdkRGBA *color, const graphene_point_t *offset); -GDK_AVAILABLE_IN_4_6 -GskRenderNode * gsk_text_node_new_with_font_options (const cairo_font_options_t *options, - PangoFont *font, - PangoGlyphString *glyphs, - const GdkRGBA *color, - const graphene_point_t *offset); - -GDK_AVAILABLE_IN_4_6 -gboolean gsk_text_node_get_hint_metrics (const GskRenderNode *node) G_GNUC_PURE; -GDK_AVAILABLE_IN_4_6 -gboolean gsk_text_node_get_antialias (const GskRenderNode *node) G_GNUC_PURE; -GDK_AVAILABLE_IN_4_6 -cairo_hint_style_t gsk_text_node_get_hint_style (const GskRenderNode *node) G_GNUC_PURE; GDK_AVAILABLE_IN_ALL PangoFont * gsk_text_node_get_font (const GskRenderNode *node) G_GNUC_PURE; GDK_AVAILABLE_IN_ALL diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index 8a4c003a5a..30ef0ff38b 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -4336,10 +4336,7 @@ struct _GskTextNode GskRenderNode render_node; PangoFont *font; - guint has_color_glyphs : 1; - guint hint_metrics : 1; - guint antialias : 1; - guint hint_style : 3; + gboolean has_color_glyphs; GdkRGBA color; graphene_point_t offset; @@ -4366,7 +4363,6 @@ gsk_text_node_draw (GskRenderNode *node, { GskTextNode *self = (GskTextNode *) node; PangoGlyphString glyphs; - cairo_font_options_t *options; glyphs.num_glyphs = self->num_glyphs; glyphs.glyphs = self->glyphs; @@ -4374,13 +4370,6 @@ gsk_text_node_draw (GskRenderNode *node, cairo_save (cr); - options = cairo_font_options_create (); - cairo_font_options_set_hint_metrics (options, self->hint_metrics ? CAIRO_HINT_METRICS_ON : CAIRO_HINT_METRICS_OFF); - cairo_font_options_set_antialias (options, self->antialias ? CAIRO_ANTIALIAS_GRAY : CAIRO_ANTIALIAS_NONE); - cairo_font_options_set_hint_style (options, self->hint_style); - cairo_set_font_options (cr, options); - cairo_font_options_destroy (options); - gdk_cairo_set_source_rgba (cr, &self->color); cairo_translate (cr, self->offset.x, self->offset.y); pango_cairo_show_glyph_string (cr, self->font, &glyphs); @@ -4435,12 +4424,25 @@ gsk_text_node_diff (GskRenderNode *node1, gsk_render_node_diff_impossible (node1, node2, region); } -static GskRenderNode * -gsk_text_node_new_internal (const cairo_font_options_t *options, - PangoFont *font, - PangoGlyphString *glyphs, - const GdkRGBA *color, - const graphene_point_t *offset) +/** + * gsk_text_node_new: + * @font: the `PangoFont` containing the glyphs + * @glyphs: the `PangoGlyphString` to render + * @color: the foreground color to render with + * @offset: offset of the baseline + * + * Creates a render node that renders the given glyphs. + * + * Note that @color may not be used if the font contains + * color glyphs. + * + * Returns: (nullable) (transfer full) (type GskTextNode): a new `GskRenderNode` + */ +GskRenderNode * +gsk_text_node_new (PangoFont *font, + PangoGlyphString *glyphs, + const GdkRGBA *color, + const graphene_point_t *offset) { GskTextNode *self; GskRenderNode *node; @@ -4462,16 +4464,6 @@ gsk_text_node_new_internal (const cairo_font_options_t *options, self->color = *color; self->offset = *offset; self->has_color_glyphs = FALSE; - self->antialias = TRUE; - self->hint_style = CAIRO_HINT_STYLE_NONE; - self->hint_metrics = FALSE; - - if (options) - { - self->antialias = cairo_font_options_get_antialias (options) != CAIRO_ANTIALIAS_NONE; - self->hint_metrics = cairo_font_options_get_hint_metrics (options) == CAIRO_HINT_METRICS_ON; - self->hint_style = cairo_font_options_get_hint_style (options); - } glyph_infos = g_malloc_n (glyphs->num_glyphs, sizeof (PangoGlyphInfo)); @@ -4502,117 +4494,6 @@ gsk_text_node_new_internal (const cairo_font_options_t *options, return node; } -/** - * gsk_text_node_new_with_font_options: - * @options: `cairo_font_options_t` to render with - * @font: the `PangoFont` containing the glyphs - * @glyphs: the `PangoGlyphString` to render - * @color: the foreground color to render with - * @offset: offset of the baseline - * - * Creates a render node that renders the given glyphs. - * - * Note that @color may not be used if the font contains - * color glyphs. - * - * Returns: (nullable) (transfer full) (type GskTextNode): a new `GskRenderNode` - * - * Since: 4.6 - */ -GskRenderNode * -gsk_text_node_new_with_font_options (const cairo_font_options_t *options, - PangoFont *font, - PangoGlyphString *glyphs, - const GdkRGBA *color, - const graphene_point_t *offset) -{ - return gsk_text_node_new_internal (options, font, glyphs, color, offset); -} - -/** - * gsk_text_node_new: - * @font: the `PangoFont` containing the glyphs - * @glyphs: the `PangoGlyphString` to render - * @color: the foreground color to render with - * @offset: offset of the baseline - * - * Creates a render node that renders the given glyphs. - * - * Note that @color may not be used if the font contains - * color glyphs. - * - * Returns: (nullable) (transfer full) (type GskTextNode): a new `GskRenderNode` - */ -GskRenderNode * -gsk_text_node_new (PangoFont *font, - PangoGlyphString *glyphs, - const GdkRGBA *color, - const graphene_point_t *offset) -{ - return gsk_text_node_new_internal (NULL, font, glyphs, color, offset); -} - -/** - * gsk_text_node_get_hint_metrics: - * @node: (type GskTextNode): a text `GskRenderNode` - * - * Retrieves whether metrics hinting is enabled for rendering. - * - * See the cairo [documentation](https://www.cairographics.org/manual/cairo-cairo-font-options-t.html#cairo-hint-metrics-t). - * - * Returns: whether metrics hinting is enabled - * - * Since: 4.6 - */ -gboolean -gsk_text_node_get_hint_metrics (const GskRenderNode *node) -{ - const GskTextNode *self = (const GskTextNode *) node; - - return self->hint_metrics; -} - -/** - * gsk_text_node_get_antialias: - * @node: (type GskTextNode): a text `GskRenderNode` - * - * Retrieves whether antialiasing is enabled for rendering. - * - * See the cairo [documentation](https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-antialias-t). - * Note that GSK only supports grayscale antialiasing. - * - * Returns: whether antialiasing is enabled - * - * Since: 4.6 - */ -gboolean -gsk_text_node_get_antialias (const GskRenderNode *node) -{ - const GskTextNode *self = (const GskTextNode *) node; - - return self->antialias; -} - -/** - * gsk_text_node_get_hint_style: - * @node: (type GskTextNode): a text `GskRenderNode` - * - * Retrieves what style of font hinting is used for rendering. - * - * See the cairo [documentation](https://www.cairographics.org/manual/cairo-cairo-font-options-t.html#cairo-hint-style-t). - * - * Returns: what style of hinting is used - * - * Since: 4.6 - */ -cairo_hint_style_t -gsk_text_node_get_hint_style (const GskRenderNode *node) -{ - const GskTextNode *self = (const GskTextNode *) node; - - return self->hint_style; -} - /** * gsk_text_node_get_color: * @node: (type GskTextNode): a text `GskRenderNode`