From 2a515679251116e3058fc43bf7ff54e08e14e3e4 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 26 Dec 2022 16:50:32 -0500 Subject: [PATCH] [paint] Add a test for recursion --- test/api/fonts/bad_colrv1.ttf | Bin 0 -> 16708 bytes test/api/results/bad-20-0-154 | 349 ++++++++++++++++++++++++++++++++++ test/api/test-paint.c | 2 + 3 files changed, 351 insertions(+) create mode 100644 test/api/fonts/bad_colrv1.ttf create mode 100644 test/api/results/bad-20-0-154 diff --git a/test/api/fonts/bad_colrv1.ttf b/test/api/fonts/bad_colrv1.ttf new file mode 100644 index 0000000000000000000000000000000000000000..df548efe4ed526cdb45c6f5ecdfde2d8bc90bcfc GIT binary patch literal 16708 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 literal 0 HcmV?d00001 diff --git a/test/api/results/bad-20-0-154 b/test/api/results/bad-20-0-154 new file mode 100644 index 000000000..eea42f685 --- /dev/null +++ b/test/api/results/bad-20-0-154 @@ -0,0 +1,349 @@ +start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + start clip rectangle 0.000000 500.000000 500.000000 1000.000000 + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + push group + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + push group + start transform 50.000000 0.000000 -0.000000 50.000000 0.000000 0.000000 + start clip glyph 159 + start transform 0.020000 0.000000 0.000000 0.020000 0.000000 0.000000 + solid 128 128 128 102 + end transform + end clip + end transform + pop group mode 3 + pop group mode 3 + end clip +end transform diff --git a/test/api/test-paint.c b/test/api/test-paint.c index df44a8a1a..f0e2bb421 100644 --- a/test/api/test-paint.c +++ b/test/api/test-paint.c @@ -274,6 +274,7 @@ typedef struct { #define NOTO_HAND "fonts/noto_handwriting-cff2_colr_1.otf" #define TEST_GLYPHS "fonts/test_glyphs-glyf_colr_1.ttf" +#define BAD_COLRV1 "fonts/bad_colrv1.ttf" #define ROCHER_ABC "fonts/RocherColorGX.abc.ttf" /* To verify the rendering visually, use @@ -294,6 +295,7 @@ static paint_test_t paint_tests[] = { { TEST_GLYPHS, 20, 0, 123, 0, "test-20-0-123" }, { TEST_GLYPHS, 20, 0, 165, 0, "test-20-0-165" }, // linear gradient { TEST_GLYPHS, 20, 0, 175, 0, "test-20-0-175" }, // layers + { BAD_COLRV1, 20, 0, 154, 0, "bad-20-0-154" }, // recursion /* COLRv0 */ { ROCHER_ABC, 120, 0.3, 1, 0, "rocher-120-0.3-1" }, { ROCHER_ABC, 120, 0.3, 2, 2, "rocher-120-0.3-2" },