diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-06-16 22:07:12 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-06-22 13:57:26 -0400 |
commit | 080a14160342b558c4b8283b831b4cd7055d838f (patch) | |
tree | 807fa46c7f5e705031cf7e1b87589007ee723a79 /pango | |
parent | 4065ed19b92f09b8916aa616b29e53086ce5f64b (diff) | |
download | pango-080a14160342b558c4b8283b831b4cd7055d838f.tar.gz |
Complete line style changes
Add dashed and wavy line style (without an implementation),
and make overline styled as well.
Update all affected callers.
Diffstat (limited to 'pango')
-rw-r--r-- | pango/pango-attr-list.c | 8 | ||||
-rw-r--r-- | pango/pango-attributes.c | 6 | ||||
-rw-r--r-- | pango/pango-attributes.h | 27 | ||||
-rw-r--r-- | pango/pango-item-private.h | 7 | ||||
-rw-r--r-- | pango/pango-item.c | 38 | ||||
-rw-r--r-- | pango/pango-markup.c | 10 | ||||
-rw-r--r-- | pango/pango-renderer.c | 74 | ||||
-rw-r--r-- | pango/pango-renderer.h | 1 | ||||
-rw-r--r-- | pango/pango-run.c | 43 | ||||
-rw-r--r-- | pango/serializer.c | 15 |
10 files changed, 109 insertions, 120 deletions
diff --git a/pango/pango-attr-list.c b/pango/pango-attr-list.c index 7e187206..0cf381b1 100644 --- a/pango/pango-attr-list.c +++ b/pango/pango-attr-list.c @@ -762,7 +762,7 @@ get_attr_value_type (PangoAttrType type) case PANGO_ATTR_GRAVITY_HINT: return PANGO_TYPE_GRAVITY_HINT; case PANGO_ATTR_UNDERLINE: return PANGO_TYPE_LINE_STYLE; case PANGO_ATTR_STRIKETHROUGH: return PANGO_TYPE_LINE_STYLE; - case PANGO_ATTR_OVERLINE: return PANGO_TYPE_OVERLINE; + case PANGO_ATTR_OVERLINE: return PANGO_TYPE_LINE_STYLE; case PANGO_ATTR_BASELINE_SHIFT: return PANGO_TYPE_BASELINE_SHIFT; case PANGO_ATTR_FONT_SCALE: return PANGO_TYPE_FONT_SCALE; case PANGO_ATTR_TEXT_TRANSFORM: return PANGO_TYPE_TEXT_TRANSFORM; @@ -1129,7 +1129,7 @@ pango_attr_list_from_string (const char *text) break; case PANGO_ATTR_UNDERLINE: - ENUM_ATTR(underline, PangoLineStyle, PANGO_LINE_STYLE_NONE, PANGO_LINE_STYLE_DOTTED); + ENUM_ATTR(underline, PangoLineStyle, PANGO_LINE_STYLE_NONE, PANGO_LINE_STYLE_WAVY); break; case PANGO_ATTR_UNDERLINE_POSITION: @@ -1137,7 +1137,7 @@ pango_attr_list_from_string (const char *text) break; case PANGO_ATTR_STRIKETHROUGH: - ENUM_ATTR(strikethrough, PangoLineStyle, PANGO_LINE_STYLE_NONE, PANGO_LINE_STYLE_DOTTED); + ENUM_ATTR(strikethrough, PangoLineStyle, PANGO_LINE_STYLE_NONE, PANGO_LINE_STYLE_WAVY); break; case PANGO_ATTR_RISE: @@ -1202,7 +1202,7 @@ pango_attr_list_from_string (const char *text) break; case PANGO_ATTR_OVERLINE: - ENUM_ATTR(overline, PangoOverline, PANGO_OVERLINE_NONE, PANGO_OVERLINE_SINGLE); + ENUM_ATTR(overline, PangoLineStyle, PANGO_LINE_STYLE_NONE, PANGO_LINE_STYLE_WAVY); break; case PANGO_ATTR_OVERLINE_COLOR: diff --git a/pango/pango-attributes.c b/pango/pango-attributes.c index cbd110f6..253feca9 100644 --- a/pango/pango-attributes.c +++ b/pango/pango-attributes.c @@ -697,7 +697,7 @@ pango_attr_paragraph_new (void) /** * pango_attr_overline_new: - * @overline: the overline style + * @style: the line style * * Create a new overline-style attribute. * @@ -706,9 +706,9 @@ pango_attr_paragraph_new (void) * [method@Pango.Attribute.destroy] */ PangoAttribute * -pango_attr_overline_new (PangoOverline overline) +pango_attr_overline_new (PangoLineStyle style) { - return pango_attr_int_new (PANGO_ATTR_OVERLINE, (int)overline); + return pango_attr_int_new (PANGO_ATTR_OVERLINE, (int)style); } /** diff --git a/pango/pango-attributes.h b/pango/pango-attributes.h index 37ad85e2..a92350a8 100644 --- a/pango/pango-attributes.h +++ b/pango/pango-attributes.h @@ -149,18 +149,22 @@ PangoAttribute * pango_attr_font_desc_new (const PangoFont /** * PangoLineStyle: * @PANGO_LINE_STYLE_NONE: no line should be drawn - * @PANGO_LINE_STYLE_SINGLE: a single line should be drawn + * @PANGO_LINE_STYLE_SOLID: a single line should be drawn * @PANGO_LINE_STYLE_DOUBLE: a double line should be drawn + * @PANGO_LINE_STYLE_DASHED: an dashed line should be drawn * @PANGO_LINE_STYLE_DOTTED: an dotted line should be drawn + * @PANGO_LINE_STYLE_WAVY: an wavy line should be drawn * * The `PangoLineStyle` enumeration is used to specify how * lines should be drawn. */ typedef enum { PANGO_LINE_STYLE_NONE, - PANGO_LINE_STYLE_SINGLE, + PANGO_LINE_STYLE_SOLID, PANGO_LINE_STYLE_DOUBLE, - PANGO_LINE_STYLE_DOTTED + PANGO_LINE_STYLE_DASHED, + PANGO_LINE_STYLE_DOTTED, + PANGO_LINE_STYLE_WAVY, } PangoLineStyle; PANGO_AVAILABLE_IN_ALL @@ -245,23 +249,8 @@ PangoAttribute * pango_attr_paragraph_new (void); PANGO_AVAILABLE_IN_ALL PangoAttribute * pango_attr_insert_hyphens_new (gboolean insert_hyphens); - -/** - * PangoOverline: - * @PANGO_OVERLINE_NONE: no overline should be drawn - * @PANGO_OVERLINE_SINGLE: Draw a single line above the ink - * extents of the text being underlined. - * - * The `PangoOverline` enumeration is used to specify whether text - * should be overlined, and if so, the type of line. - */ -typedef enum { - PANGO_OVERLINE_NONE, - PANGO_OVERLINE_SINGLE -} PangoOverline; - PANGO_AVAILABLE_IN_ALL -PangoAttribute * pango_attr_overline_new (PangoOverline overline); +PangoAttribute * pango_attr_overline_new (PangoLineStyle style); PANGO_AVAILABLE_IN_ALL PangoAttribute * pango_attr_overline_color_new (PangoColor *color); diff --git a/pango/pango-item-private.h b/pango/pango-item-private.h index 2f4f8c97..541eb017 100644 --- a/pango/pango-item-private.h +++ b/pango/pango-item-private.h @@ -105,11 +105,10 @@ void pango_item_unsplit (PangoItem *orig, typedef struct _ItemProperties ItemProperties; struct _ItemProperties { - guint uline_single : 1; - guint uline_double : 1; - guint uline_error : 1; + PangoLineStyle uline_style; PangoUnderlinePosition uline_position; - guint strikethrough : 1; + PangoLineStyle strikethrough_style; + PangoLineStyle oline_style; guint oline_single : 1; guint showing_space : 1; guint no_paragraph_break : 1; diff --git a/pango/pango-item.c b/pango/pango-item.c index 25f552ea..079f5796 100644 --- a/pango/pango-item.c +++ b/pango/pango-item.c @@ -391,12 +391,10 @@ pango_item_get_properties (PangoItem *item, { GSList *tmp_list = item->analysis.extra_attrs; - properties->uline_single = FALSE; - properties->uline_double = FALSE; - properties->uline_error = FALSE; + properties->uline_style = PANGO_LINE_STYLE_NONE; properties->uline_position = PANGO_UNDERLINE_POSITION_NORMAL; - properties->oline_single = FALSE; - properties->strikethrough = FALSE; + properties->oline_style = PANGO_LINE_STYLE_NONE; + properties->strikethrough_style = PANGO_LINE_STYLE_NONE; properties->showing_space = FALSE; properties->no_paragraph_break = FALSE; properties->letter_spacing = 0; @@ -411,23 +409,7 @@ pango_item_get_properties (PangoItem *item, switch ((int) attr->type) { case PANGO_ATTR_UNDERLINE: - switch (attr->int_value) - { - case PANGO_LINE_STYLE_NONE: - break; - case PANGO_LINE_STYLE_SINGLE: - properties->uline_single = TRUE; - break; - case PANGO_LINE_STYLE_DOUBLE: - properties->uline_double = TRUE; - break; - case PANGO_LINE_STYLE_DOTTED: - properties->uline_error = TRUE; - break; - default: - g_assert_not_reached (); - break; - } + properties->uline_style = attr->int_value; break; case PANGO_ATTR_UNDERLINE_POSITION: @@ -435,19 +417,11 @@ pango_item_get_properties (PangoItem *item, break; case PANGO_ATTR_OVERLINE: - switch (attr->int_value) - { - case PANGO_OVERLINE_SINGLE: - properties->oline_single = TRUE; - break; - default: - g_assert_not_reached (); - break; - } + properties->oline_style = attr->int_value; break; case PANGO_ATTR_STRIKETHROUGH: - properties->strikethrough = attr->int_value; + properties->strikethrough_style = attr->int_value; break; case PANGO_ATTR_LETTER_SPACING: diff --git a/pango/pango-markup.c b/pango/pango-markup.c index 53f35db4..fb23a7d1 100644 --- a/pango/pango-markup.c +++ b/pango/pango-markup.c @@ -666,7 +666,7 @@ text_handler (GMarkupParseContext *context G_GNUC_UNUSED, /* Add the underline indicating the accelerator */ PangoAttribute *attr; - attr = pango_attr_underline_new (PANGO_LINE_STYLE_SINGLE); + attr = pango_attr_underline_new (PANGO_LINE_STYLE_SOLID); uline_index = md->index; uline_len = g_utf8_next_char (p) - p; @@ -1657,12 +1657,12 @@ span_parse_func (MarkupData *md G_GNUC_UNUSED, if (G_UNLIKELY (overline)) { - PangoOverline ol = PANGO_OVERLINE_NONE; + PangoLineStyle style = PANGO_LINE_STYLE_NONE; - if (!span_parse_enum ("overline", overline, PANGO_TYPE_OVERLINE, (int*)(void*)&ol, line_number, error)) + if (!span_parse_enum ("overline", overline, PANGO_TYPE_LINE_STYLE, (int*)(void*)&style, line_number, error)) goto error; - add_attribute (tag, pango_attr_overline_new (ol)); + add_attribute (tag, pango_attr_overline_new (style)); } if (G_UNLIKELY (overline_color)) @@ -2009,7 +2009,7 @@ u_parse_func (MarkupData *md G_GNUC_UNUSED, GError **error) { CHECK_NO_ATTRS("u"); - add_attribute (tag, pango_attr_underline_new (PANGO_LINE_STYLE_SINGLE)); + add_attribute (tag, pango_attr_underline_new (PANGO_LINE_STYLE_SOLID)); return TRUE; } diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c index 42a9bb61..61e92b07 100644 --- a/pango/pango-renderer.c +++ b/pango/pango-renderer.c @@ -51,7 +51,7 @@ struct _LineState PangoRectangle strikethrough_rect; int strikethrough_glyphs; - PangoOverline overline; + PangoLineStyle overline; PangoRectangle overline_rect; int logical_rect_end; @@ -67,7 +67,6 @@ struct _PangoRendererPrivate PangoLines *lines; PangoLine *line; LineState *line_state; - PangoOverline overline; }; static void pango_renderer_finalize (GObject *gobject); @@ -187,7 +186,9 @@ draw_underline (PangoRenderer *renderer, rect->width, rect->height); G_GNUC_FALLTHROUGH; - case PANGO_LINE_STYLE_SINGLE: + case PANGO_LINE_STYLE_SOLID: + case PANGO_LINE_STYLE_DOTTED: + case PANGO_LINE_STYLE_DASHED: pango_renderer_draw_rectangle (renderer, PANGO_RENDER_PART_UNDERLINE, rect->x, @@ -195,7 +196,7 @@ draw_underline (PangoRenderer *renderer, rect->width, rect->height); break; - case PANGO_LINE_STYLE_DOTTED: + case PANGO_LINE_STYLE_WAVY: pango_renderer_draw_error_underline (renderer, rect->x, rect->y, @@ -212,15 +213,26 @@ draw_overline (PangoRenderer *renderer, LineState *state) { PangoRectangle *rect = &state->overline_rect; - PangoOverline overline = state->overline; + PangoLineStyle overline = state->overline; - state->overline = PANGO_OVERLINE_NONE; + state->overline = PANGO_LINE_STYLE_NONE; switch (overline) { - case PANGO_OVERLINE_NONE: + case PANGO_LINE_STYLE_NONE: break; - case PANGO_OVERLINE_SINGLE: + case PANGO_LINE_STYLE_DOUBLE: + pango_renderer_draw_rectangle (renderer, + PANGO_RENDER_PART_OVERLINE, + rect->x, + rect->y - 2 * rect->height, + rect->width, + rect->height); + G_GNUC_FALLTHROUGH; + case PANGO_LINE_STYLE_SOLID: + case PANGO_LINE_STYLE_DOTTED: + case PANGO_LINE_STYLE_DASHED: + case PANGO_LINE_STYLE_WAVY: pango_renderer_draw_rectangle (renderer, PANGO_RENDER_PART_OVERLINE, rect->x, @@ -257,8 +269,10 @@ draw_strikethrough (PangoRenderer *renderer, rect->height); rect->y += rect->height; G_GNUC_FALLTHROUGH; - case PANGO_LINE_STYLE_SINGLE: + case PANGO_LINE_STYLE_SOLID: case PANGO_LINE_STYLE_DOTTED: + case PANGO_LINE_STYLE_DASHED: + case PANGO_LINE_STYLE_WAVY: pango_renderer_draw_rectangle (renderer, PANGO_RENDER_PART_STRIKETHROUGH, rect->x, @@ -301,13 +315,13 @@ handle_line_state_change (PangoRenderer *renderer, } if (part == PANGO_RENDER_PART_OVERLINE && - state->overline != PANGO_OVERLINE_NONE) + state->overline != PANGO_LINE_STYLE_NONE) { PangoRectangle *rect = &state->overline_rect; rect->width = state->logical_rect_end - rect->x; draw_overline (renderer, state); - state->overline = renderer->priv->overline; + state->overline = renderer->overline; rect->x = state->logical_rect_end; rect->width = 0; } @@ -348,7 +362,9 @@ add_underline (PangoRenderer *renderer, case PANGO_LINE_STYLE_NONE: g_assert_not_reached (); break; - case PANGO_LINE_STYLE_SINGLE: + case PANGO_LINE_STYLE_SOLID: + case PANGO_LINE_STYLE_DASHED: + case PANGO_LINE_STYLE_DOTTED: if (renderer->underline_position == PANGO_UNDERLINE_POSITION_UNDER) { new_rect.y += ink_rect->y + ink_rect->height + underline_thickness; @@ -356,7 +372,7 @@ add_underline (PangoRenderer *renderer, } G_GNUC_FALLTHROUGH; case PANGO_LINE_STYLE_DOUBLE: - case PANGO_LINE_STYLE_DOTTED: + case PANGO_LINE_STYLE_WAVY: new_rect.y -= underline_position; if (state->underline == renderer->underline) { @@ -406,14 +422,18 @@ add_overline (PangoRenderer *renderer, new_rect.height = underline_thickness; new_rect.y = base_y; - switch (renderer->priv->overline) + switch (renderer->overline) { - case PANGO_OVERLINE_NONE: + case PANGO_LINE_STYLE_NONE: g_assert_not_reached (); break; - case PANGO_OVERLINE_SINGLE: + case PANGO_LINE_STYLE_SOLID: + case PANGO_LINE_STYLE_DOUBLE: + case PANGO_LINE_STYLE_DASHED: + case PANGO_LINE_STYLE_DOTTED: + case PANGO_LINE_STYLE_WAVY: new_rect.y -= ascent; - if (state->overline == renderer->priv->overline) + if (state->overline == renderer->overline) { new_rect.y = MIN (current_rect->y, new_rect.y); new_rect.height = MAX (current_rect->height, new_rect.height); @@ -425,7 +445,7 @@ add_overline (PangoRenderer *renderer, break; } - if (renderer->priv->overline == state->overline && + if (renderer->overline == state->overline && new_rect.y == current_rect->y && new_rect.height == current_rect->height) { @@ -436,7 +456,7 @@ add_overline (PangoRenderer *renderer, draw_overline (renderer, state); *current_rect = new_rect; - state->overline = renderer->priv->overline; + state->overline = renderer->overline; } } @@ -516,7 +536,7 @@ pango_renderer_draw_line (PangoRenderer *renderer, state.underline = PANGO_LINE_STYLE_NONE; state.underline_position = PANGO_UNDERLINE_POSITION_NORMAL; - state.overline = PANGO_OVERLINE_NONE; + state.overline = PANGO_LINE_STYLE_NONE; state.strikethrough = PANGO_LINE_STYLE_NONE; pango_renderer_draw_runs (renderer, line->runs, line->data->text, x, y); @@ -607,7 +627,7 @@ pango_renderer_draw_runs (PangoRenderer *renderer, pango_renderer_prepare_run (renderer, run); if (renderer->underline != PANGO_LINE_STYLE_NONE || - renderer->priv->overline != PANGO_OVERLINE_NONE || + renderer->overline != PANGO_LINE_STYLE_NONE || renderer->strikethrough != PANGO_LINE_STYLE_NONE) { ink = &ink_rect; @@ -657,7 +677,7 @@ pango_renderer_draw_runs (PangoRenderer *renderer, pango_renderer_draw_glyph_item (renderer, text, glyph_item, x + x_off, y - y_off); if (renderer->underline != PANGO_LINE_STYLE_NONE || - renderer->priv->overline != PANGO_OVERLINE_NONE || + renderer->overline != PANGO_LINE_STYLE_NONE || renderer->strikethrough != PANGO_LINE_STYLE_NONE) { metrics = pango_font_get_metrics (item->analysis.font, @@ -668,7 +688,7 @@ pango_renderer_draw_runs (PangoRenderer *renderer, x + x_off, y - y_off, ink, logical); - if (renderer->priv->overline != PANGO_OVERLINE_NONE) + if (renderer->overline != PANGO_LINE_STYLE_NONE) add_overline (renderer, renderer->priv->line_state, metrics, x + x_off, y - y_off, ink, logical); @@ -685,8 +705,8 @@ pango_renderer_draw_runs (PangoRenderer *renderer, renderer->priv->line_state->underline != PANGO_LINE_STYLE_NONE) draw_underline (renderer, renderer->priv->line_state); - if (renderer->priv->overline == PANGO_OVERLINE_NONE && - renderer->priv->line_state->overline != PANGO_OVERLINE_NONE) + if (renderer->overline == PANGO_LINE_STYLE_NONE && + renderer->priv->line_state->overline != PANGO_LINE_STYLE_NONE) draw_overline (renderer, renderer->priv->line_state); if (renderer->strikethrough == PANGO_LINE_STYLE_NONE && @@ -1350,7 +1370,7 @@ pango_renderer_default_prepare_run (PangoRenderer *renderer, renderer->underline = PANGO_LINE_STYLE_NONE; renderer->underline_position = PANGO_UNDERLINE_POSITION_NORMAL; - renderer->priv->overline = PANGO_OVERLINE_NONE; + renderer->overline = PANGO_LINE_STYLE_NONE; renderer->strikethrough = PANGO_LINE_STYLE_NONE; for (l = glyph_item->item->analysis.extra_attrs; l; l = l->next) @@ -1368,7 +1388,7 @@ pango_renderer_default_prepare_run (PangoRenderer *renderer, break; case PANGO_ATTR_OVERLINE: - renderer->priv->overline = attr->int_value; + renderer->overline = attr->int_value; break; case PANGO_ATTR_STRIKETHROUGH: diff --git a/pango/pango-renderer.h b/pango/pango-renderer.h index 4de0bb32..954ffea8 100644 --- a/pango/pango-renderer.h +++ b/pango/pango-renderer.h @@ -79,6 +79,7 @@ struct _PangoRenderer PangoLineStyle underline; PangoUnderlinePosition underline_position; PangoLineStyle strikethrough; + PangoLineStyle overline; int active_count; /*< public >*/ diff --git a/pango/pango-run.c b/pango/pango-run.c index 17cb237e..23f495aa 100644 --- a/pango/pango-run.c +++ b/pango/pango-run.c @@ -74,27 +74,27 @@ pango_run_get_extents (PangoRun *run, ItemProperties properties; gboolean has_underline; gboolean has_overline; + gboolean has_strikethrough; PangoRectangle logical; PangoFontMetrics *metrics = NULL; int y_offset; pango_item_get_properties (glyph_item->item, &properties); - has_underline = properties.uline_single || - properties.uline_double || - properties.uline_error; - has_overline = properties.oline_single; + has_underline = properties.uline_style != PANGO_LINE_STYLE_NONE; + has_overline = properties.oline_style != PANGO_LINE_STYLE_NONE; + has_strikethrough = properties.strikethrough_style != PANGO_LINE_STYLE_NONE; if (!logical_rect && (glyph_item->item->analysis.flags & PANGO_ANALYSIS_FLAG_CENTERED_BASELINE)) logical_rect = &logical; - if (!logical_rect && (has_underline || has_overline || properties.strikethrough)) + if (!logical_rect && (has_underline || has_overline || has_strikethrough)) logical_rect = &logical; pango_glyph_string_extents (glyph_item->glyphs, glyph_item->item->analysis.font, ink_rect, logical_rect); - if (ink_rect && (has_underline || has_overline || properties.strikethrough)) + if (ink_rect && (has_underline || has_overline || has_strikethrough)) { int underline_thickness; int underline_position; @@ -122,7 +122,7 @@ pango_run_get_extents (PangoRun *run, * If ink_rect->height == 0, we should adjust ink_rect->y appropriately. */ - if (properties.strikethrough) + if (has_strikethrough) { if (ink_rect->height == 0) { @@ -131,13 +131,23 @@ pango_run_get_extents (PangoRun *run, } } - if (properties.oline_single) + if (properties.oline_style == PANGO_LINE_STYLE_SOLID || + properties.oline_style == PANGO_LINE_STYLE_DASHED || + properties.oline_style == PANGO_LINE_STYLE_DOTTED) { ink_rect->y -= underline_thickness; ink_rect->height += underline_thickness; } + else if (properties.oline_style == PANGO_LINE_STYLE_DOUBLE || + properties.oline_style == PANGO_LINE_STYLE_WAVY) + { + ink_rect->y -= 3 * underline_thickness; + ink_rect->height += 3 * underline_thickness; + } - if (properties.uline_single) + if (properties.uline_style == PANGO_LINE_STYLE_SOLID || + properties.uline_style == PANGO_LINE_STYLE_DASHED || + properties.uline_style == PANGO_LINE_STYLE_DOTTED) { if (properties.uline_position == PANGO_UNDERLINE_POSITION_UNDER) ink_rect->height += 2 * underline_thickness; @@ -145,12 +155,15 @@ pango_run_get_extents (PangoRun *run, ink_rect->height = MAX (ink_rect->height, underline_thickness - underline_position - ink_rect->y); } - else if (properties.uline_double) - ink_rect->height = MAX (ink_rect->height, - 3 * underline_thickness - underline_position - ink_rect->y); - else if (properties.uline_error) - ink_rect->height = MAX (ink_rect->height, - 3 * underline_thickness - underline_position - ink_rect->y); + else if (properties.uline_style == PANGO_LINE_STYLE_DOUBLE || + properties.uline_style == PANGO_LINE_STYLE_WAVY) + { + if (properties.uline_position == PANGO_UNDERLINE_POSITION_UNDER) + ink_rect->height += 4 * underline_thickness; + else + ink_rect->height = MAX (ink_rect->height, + 3 * underline_thickness - underline_position - ink_rect->y); + } } y_offset = glyph_item->y_offset; diff --git a/pango/serializer.c b/pango/serializer.c index 98327074..6298f48c 100644 --- a/pango/serializer.c +++ b/pango/serializer.c @@ -77,7 +77,9 @@ static const char *line_style_names[] = { "none", "single", "double", + "dashed", "dotted", + "wavy", NULL }; @@ -87,12 +89,6 @@ static const char *underline_position_names[] = { NULL }; -static const char *overline_names[] = { - "none", - "single", - NULL -}; - static const char *gravity_names[] = { "south", "east", @@ -320,6 +316,7 @@ add_attribute (GtkJsonPrinter *printer, case PANGO_ATTR_UNDERLINE: case PANGO_ATTR_STRIKETHROUGH: + case PANGO_ATTR_OVERLINE: gtk_json_printer_add_string (printer, "value", line_style_names[attr->int_value]); break; @@ -327,10 +324,6 @@ add_attribute (GtkJsonPrinter *printer, gtk_json_printer_add_string (printer, "value", underline_position_names[attr->int_value]); break; - case PANGO_ATTR_OVERLINE: - gtk_json_printer_add_string (printer, "value", overline_names[attr->int_value]); - break; - case PANGO_ATTR_GRAVITY: gtk_json_printer_add_string (printer, "value", gravity_names[attr->int_value]); break; @@ -1070,7 +1063,7 @@ attr_for_type (GtkJsonParser *parser, break; case PANGO_ATTR_OVERLINE: - attr = pango_attr_overline_new ((PangoOverline) parser_select_string (parser, overline_names)); + attr = pango_attr_overline_new ((PangoLineStyle) parser_select_string (parser, line_style_names)); break; case PANGO_ATTR_OVERLINE_COLOR: |