From 73dd5a085e1d877da6768b3fe67a4238863ba00b Mon Sep 17 00:00:00 2001 From: +merlan #flirora Date: Mon, 9 Dec 2024 04:33:30 -0500 Subject: Fix sizing of quadratic shapes (square/circle) (#5451) Co-authored-by: Laurenz Co-authored-by: PgBiel <9021226+PgBiel@users.noreply.github.com> --- tests/ref/circle-beyond-page-width-overflows.png | Bin 0 -> 620 bytes tests/ref/circle-size-beyond-default.png | Bin 0 -> 1158 bytes tests/ref/rect-size-beyond-default.png | Bin 0 -> 185 bytes tests/ref/square-no-overflow.png | Bin 0 -> 290 bytes tests/ref/square-overflow-forced-height.png | Bin 0 -> 468 bytes tests/ref/square-overflow-forced-width.png | Bin 0 -> 457 bytes tests/ref/square-overflow.png | Bin 290 -> 0 bytes tests/ref/square-size-beyond-default.png | Bin 0 -> 198 bytes tests/suite/visualize/circle.typ | 12 ++++++++++ tests/suite/visualize/rect.typ | 6 +++++ tests/suite/visualize/square.typ | 27 ++++++++++++++++++++--- 11 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 tests/ref/circle-beyond-page-width-overflows.png create mode 100644 tests/ref/circle-size-beyond-default.png create mode 100644 tests/ref/rect-size-beyond-default.png create mode 100644 tests/ref/square-no-overflow.png create mode 100644 tests/ref/square-overflow-forced-height.png create mode 100644 tests/ref/square-overflow-forced-width.png delete mode 100644 tests/ref/square-overflow.png create mode 100644 tests/ref/square-size-beyond-default.png (limited to 'tests') diff --git a/tests/ref/circle-beyond-page-width-overflows.png b/tests/ref/circle-beyond-page-width-overflows.png new file mode 100644 index 00000000..941cb009 Binary files /dev/null and b/tests/ref/circle-beyond-page-width-overflows.png differ diff --git a/tests/ref/circle-size-beyond-default.png b/tests/ref/circle-size-beyond-default.png new file mode 100644 index 00000000..f25aad07 Binary files /dev/null and b/tests/ref/circle-size-beyond-default.png differ diff --git a/tests/ref/rect-size-beyond-default.png b/tests/ref/rect-size-beyond-default.png new file mode 100644 index 00000000..1f4d80fe Binary files /dev/null and b/tests/ref/rect-size-beyond-default.png differ diff --git a/tests/ref/square-no-overflow.png b/tests/ref/square-no-overflow.png new file mode 100644 index 00000000..81024ee6 Binary files /dev/null and b/tests/ref/square-no-overflow.png differ diff --git a/tests/ref/square-overflow-forced-height.png b/tests/ref/square-overflow-forced-height.png new file mode 100644 index 00000000..f7cb0ee3 Binary files /dev/null and b/tests/ref/square-overflow-forced-height.png differ diff --git a/tests/ref/square-overflow-forced-width.png b/tests/ref/square-overflow-forced-width.png new file mode 100644 index 00000000..46671816 Binary files /dev/null and b/tests/ref/square-overflow-forced-width.png differ diff --git a/tests/ref/square-overflow.png b/tests/ref/square-overflow.png deleted file mode 100644 index 81024ee6..00000000 Binary files a/tests/ref/square-overflow.png and /dev/null differ diff --git a/tests/ref/square-size-beyond-default.png b/tests/ref/square-size-beyond-default.png new file mode 100644 index 00000000..a513a7db Binary files /dev/null and b/tests/ref/square-size-beyond-default.png differ diff --git a/tests/suite/visualize/circle.typ b/tests/suite/visualize/circle.typ index 43459eb5..0687e068 100644 --- a/tests/suite/visualize/circle.typ +++ b/tests/suite/visualize/circle.typ @@ -67,3 +67,15 @@ Expanded by height. circle(width: 10%), circle(height: 50%), ) + +--- circle-size-beyond-default --- +// Test that setting a circle's height beyond its default sizes it correctly. +#circle() +#circle(height: 60pt) +#circle(width: 60pt) +#circle(radius: 30pt) + +--- circle-beyond-page-width-overflows --- +// Test that sizing a circle beyond the page width correctly overflows the page. +#set page(height: 100pt) +#circle(width: 150%) diff --git a/tests/suite/visualize/rect.typ b/tests/suite/visualize/rect.typ index f84fafcb..5dfe29f3 100644 --- a/tests/suite/visualize/rect.typ +++ b/tests/suite/visualize/rect.typ @@ -105,3 +105,9 @@ #align(right, rect(width: -1cm, fill: gradient.linear(red, blue))[Reverse right]) #align(right, rect(width: 1cm, fill: gradient.linear(red, blue))[Right]) + +--- rect-size-beyond-default --- +// Test that setting a rectangle's height beyond its default sizes it correctly. +#rect() +#rect(height: 60pt) +#rect(width: 60pt) diff --git a/tests/suite/visualize/square.typ b/tests/suite/visualize/square.typ index b346561d..bb7bbd9d 100644 --- a/tests/suite/visualize/square.typ +++ b/tests/suite/visualize/square.typ @@ -77,11 +77,25 @@ #set page(width: 20pt, height: 10pt, margin: 0pt) #stack(dir: ltr, square(fill: forest), square(fill: conifer)) ---- square-overflow --- +--- square-no-overflow --- // Test that square doesn't overflow due to its aspect ratio. #set page(width: 40pt, height: 25pt, margin: 5pt) -#square(width: 100%) -#square(width: 100%)[Hello there] +#square() +#square[Hello there] + +--- square-overflow-forced-width --- +// Test that a width-overflowing square is laid out regardless of the +// presence of inner content. +#set page(width: 60pt, height: 100pt) +#square(width: 150%) +#square(width: 150%)[Hello there] + +--- square-overflow-forced-height --- +// Test that a height-overflowing square is laid out regardless of the +// presence of inner content. +#set page(width: 120pt, height: 60pt) +#square(height: 150%) +#square(height: 150%)[Hello there] --- square-size-relative-invalid --- // Size cannot be relative because we wouldn't know @@ -144,3 +158,10 @@ // Test that square sets correct base for its content. #set page(height: 80pt) #square(width: 40%, rect(width: 60%, height: 80%)) + +--- square-size-beyond-default --- +// Test that setting a square's height beyond its default sizes it correctly. +#square() +#square(height: 60pt) +#square(width: 60pt) +#square(size: 60pt) -- cgit v1.2.3