diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-08-29 21:31:42 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-08-29 21:31:42 +0000 |
commit | d37bfbfeaa900c0c95a42244a04785127f404a19 (patch) | |
tree | c2b932969c9d31c79145300d8a2842c548a44413 | |
parent | 76eca4dce1d308780b5b6712896eebebdd77e79f (diff) | |
parent | 79070d5eb96d89cf05d31d61a31a3b2c893f54f3 (diff) | |
download | pango-d37bfbfeaa900c0c95a42244a04785127f404a19.tar.gz |
Merge branch 'matthiasc/for-main' into 'main'
tests: Use introspection for attributes
See merge request GNOME/pango!456
-rw-r--r-- | tests/itemize/two.expected | 14 | ||||
-rw-r--r-- | tests/test-common.c | 101 | ||||
-rw-r--r-- | tests/test-itemize.c | 7 | ||||
-rw-r--r-- | utils/viewer-pangocairo.c | 6 |
4 files changed, 50 insertions, 78 deletions
diff --git a/tests/itemize/two.expected b/tests/itemize/two.expected index 06518c88..5abb97b9 100644 --- a/tests/itemize/two.expected +++ b/tests/itemize/two.expected @@ -1,9 +1,9 @@ <span font="Cantarell 11">one <span font_features="tnum=0">tw<u>o</u> <span font_features="dlig=1">two</span> </span>th<b>r</b>ee</span> -Items: one tw |o | two th |r |ee -Chars: 6(0) |1(6) |7(7) |1(14) |2(15) -Font: Cantarell 11 |Cantarell 11 |Cantarell 11 |Cantarell Bold 11|Cantarell 11 -Script: latin |latin |latin |latin |latin -Lang: en-us |en-us |en-us |en-us |en-us -Bidi: 0 |0 |0 |0 |0 -Attrs: [4,12]font-features=tnum=0|[6,7]underline=1,[4,12]font-features=tnum=0|[8,11]font-features=dlig=1,[4,12]font-features=tnum=0| | +Items: one two two th |r |ee +Chars: 14(0) |1(14) |2(15) +Font: Cantarell 11 |Cantarell Bold 11|Cantarell 11 +Script: latin |latin |latin +Lang: en-us |en-us |en-us +Bidi: 0 |0 |0 +Attrs: [8,11]font-features=dlig=1,[6,7]underline=1,[4,12]font-features=tnum=0| | diff --git a/tests/test-common.c b/tests/test-common.c index 0e3719e7..b59ca4a0 100644 --- a/tests/test-common.c +++ b/tests/test-common.c @@ -106,6 +106,15 @@ print_attribute (PangoAttribute *attr, GString *string) { GEnumClass *class; GEnumValue *value; + PangoAttrString *str; + PangoAttrLanguage *lang; + PangoAttrInt *integer; + PangoAttrFloat *flt; + PangoAttrFontDesc *font; + PangoAttrColor *color; + PangoAttrShape *shape; + PangoAttrSize *size; + PangoAttrFontFeatures *features; g_string_append_printf (string, "[%d,%d]", attr->start_index, attr->end_index); @@ -114,75 +123,39 @@ print_attribute (PangoAttribute *attr, GString *string) g_string_append_printf (string, "%s=", value->value_nick); g_type_class_unref (class); - switch (attr->klass->type) + if ((str = pango_attribute_as_string (attr)) != NULL) + g_string_append (string, str->value); + else if ((lang = pango_attribute_as_language (attr)) != NULL) + g_string_append (string, pango_language_to_string (lang->value)); + else if ((integer = pango_attribute_as_int (attr)) != NULL) + g_string_append_printf (string, "%d", integer->value); + else if ((flt = pango_attribute_as_float (attr)) != NULL) { - case PANGO_ATTR_LANGUAGE: - g_string_append (string, pango_language_to_string (((PangoAttrLanguage *)attr)->value)); - break; - case PANGO_ATTR_FAMILY: - case PANGO_ATTR_FONT_FEATURES: - g_string_append (string, ((PangoAttrString *)attr)->value); - break; - case PANGO_ATTR_STYLE: - case PANGO_ATTR_WEIGHT: - case PANGO_ATTR_VARIANT: - case PANGO_ATTR_STRETCH: - case PANGO_ATTR_SIZE: - case PANGO_ATTR_ABSOLUTE_SIZE: - case PANGO_ATTR_UNDERLINE: - case PANGO_ATTR_OVERLINE: - case PANGO_ATTR_STRIKETHROUGH: - case PANGO_ATTR_RISE: - case PANGO_ATTR_FALLBACK: - case PANGO_ATTR_LETTER_SPACING: - case PANGO_ATTR_GRAVITY: - case PANGO_ATTR_GRAVITY_HINT: - case PANGO_ATTR_FOREGROUND_ALPHA: - case PANGO_ATTR_BACKGROUND_ALPHA: - case PANGO_ATTR_ALLOW_BREAKS: - case PANGO_ATTR_INSERT_HYPHENS: - case PANGO_ATTR_SHOW: - case PANGO_ATTR_TEXT_TRANSFORM: - case PANGO_ATTR_ABSOLUTE_LINE_HEIGHT: - case PANGO_ATTR_WORD: - case PANGO_ATTR_SENTENCE: - g_string_append_printf (string, "%d", ((PangoAttrInt *)attr)->value); - break; - case PANGO_ATTR_FONT_DESC: - { - char *text = pango_font_description_to_string (((PangoAttrFontDesc *)attr)->desc); - g_string_append (string, text); - g_free (text); - } - break; - case PANGO_ATTR_FOREGROUND: - case PANGO_ATTR_BACKGROUND: - case PANGO_ATTR_UNDERLINE_COLOR: - case PANGO_ATTR_OVERLINE_COLOR: - case PANGO_ATTR_STRIKETHROUGH_COLOR: - { - char *text = pango_color_to_string (&((PangoAttrColor *)attr)->color); - g_string_append (string, text); - g_free (text); - } - break; - case PANGO_ATTR_SHAPE: - g_string_append_printf (string, "shape"); - break; - case PANGO_ATTR_SCALE: - case PANGO_ATTR_LINE_HEIGHT: - { char val[20]; - g_ascii_formatd (val, 20, "%f", ((PangoAttrFloat *)attr)->value); + g_ascii_formatd (val, 20, "%f", flt->value); g_string_append (string, val); - } - break; - case PANGO_ATTR_INVALID: - default: - g_assert_not_reached (); - break; + } + else if ((font = pango_attribute_as_font_desc (attr)) != NULL) + { + char *text = pango_font_description_to_string (font->desc); + g_string_append (string, text); + g_free (text); + } + else if ((color = pango_attribute_as_color (attr)) != NULL) + { + char *text = pango_color_to_string (&color->color); + g_string_append (string, text); + g_free (text); } + else if ((shape = pango_attribute_as_shape (attr)) != NULL) + g_string_append_printf (string, "shape"); + else if ((size = pango_attribute_as_size (attr)) != NULL) + g_string_append_printf (string, "%d", size->size); + else if ((features = pango_attribute_as_font_features (attr)) != NULL) + g_string_append_printf (string, "%s", features->features); + else + g_assert_not_reached (); } void diff --git a/tests/test-itemize.c b/tests/test-itemize.c index 00af2256..db6a715f 100644 --- a/tests/test-itemize.c +++ b/tests/test-itemize.c @@ -74,11 +74,12 @@ affects_itemization (PangoAttribute *attr, case PANGO_ATTR_GRAVITY: case PANGO_ATTR_GRAVITY_HINT: /* These are part of ItemProperties, so need to break runs */ + case PANGO_ATTR_LETTER_SPACING: case PANGO_ATTR_SHAPE: case PANGO_ATTR_RISE: - case PANGO_ATTR_UNDERLINE: - case PANGO_ATTR_STRIKETHROUGH: - case PANGO_ATTR_LETTER_SPACING: + case PANGO_ATTR_LINE_HEIGHT: + case PANGO_ATTR_ABSOLUTE_LINE_HEIGHT: + case PANGO_ATTR_TEXT_TRANSFORM: return TRUE; default: return FALSE; diff --git a/utils/viewer-pangocairo.c b/utils/viewer-pangocairo.c index f1d6bcae..a6a416ee 100644 --- a/utils/viewer-pangocairo.c +++ b/utils/viewer-pangocairo.c @@ -562,13 +562,11 @@ render_callback (PangoLayout *layout, pango_layout_get_caret_pos (layout, p - text, &rect, NULL); cairo_move_to (cr, - (double)rect.x / PANGO_SCALE - lw / 2 - + (double)rect.width / PANGO_SCALE + lw, + (double)rect.x / PANGO_SCALE + (double)rect.width / PANGO_SCALE - lw / 2, (double)rect.y / PANGO_SCALE - lw / 2); cairo_line_to (cr, (double)rect.x / PANGO_SCALE - lw / 2, - (double)rect.y / PANGO_SCALE - lw / 2 - + (double)rect.height / PANGO_SCALE + lw); + (double)rect.y / PANGO_SCALE + (double)rect.height / PANGO_SCALE - lw / 2); cairo_stroke (cr); } |