summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-08-29 21:31:42 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-08-29 21:31:42 +0000
commitd37bfbfeaa900c0c95a42244a04785127f404a19 (patch)
treec2b932969c9d31c79145300d8a2842c548a44413
parent76eca4dce1d308780b5b6712896eebebdd77e79f (diff)
parent79070d5eb96d89cf05d31d61a31a3b2c893f54f3 (diff)
downloadpango-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.expected14
-rw-r--r--tests/test-common.c101
-rw-r--r--tests/test-itemize.c7
-rw-r--r--utils/viewer-pangocairo.c6
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);
}