From e9e1ee11d4d212749a1987985706f100904622ba Mon Sep 17 00:00:00 2001 From: MacDue Date: Sun, 21 Jan 2024 15:17:52 +0000 Subject: [PATCH] LibGfx: Decrease flatness a little in Path::stroke_to_fill() Noticed larger stroke widths were looking a little 'low poly', this looks a little nicer. (Minor LibWeb test changes) --- .../svg-background-no-natural-size-ref.png | Bin 410 -> 400 bytes .../Ref/reference/images/svg-textPath-ref.png | Bin 18359 -> 18524 bytes Userland/Libraries/LibGfx/Path.cpp | 14 +++++++++----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Tests/LibWeb/Ref/reference/images/svg-background-no-natural-size-ref.png b/Tests/LibWeb/Ref/reference/images/svg-background-no-natural-size-ref.png index 1cca4813f478c6ea6d870b53ab706ac787e50238..a56a3670244f83f37ea95c022069b12f534260ef 100644 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0y~yU}#}rV07VNW?*2r$eK2lfq}s`)ojmDa`OMuM92`%cJkc{U)7Cf9H8eYa{`|FT*HqOt z-P(?78JO+bwM);;UQI*G%0KzXk01V1z8qm-VEF6l;uunK>+LyDz9t6|hl6EKb3~6m z{3l+TS(Vydb8yMMf2va_sfe1r4EWzMUq|47?~HSwo;fRsh29fl!UT^(_nwO8Z|sOr zP_WCnyimnc%JKGHyKRR*+CI86Cwcc4)efy~+AISFT;6xww%xXjVdAY9a-Nfxtgm89 YHS9iEu;A)-1_lNOPgg&ebxsLQ04Fta8~^|S literal 410 zcmeAS@N?(olHy`uVBq!ia0y~yU}$GxV07eQW?*2*`tPI4z`zg^;1lBd|Nnmm28Q|t zhXPu5rgyJzSa!y1!nLfa2YObYPM&nIeCBQr4vyEaUt2qQDJdzbYieJ+cFnndmzIIq zu3fuS)iw3Z?C;*atEQo4Xm;U(i)f6!8+}>K^42er+dqSzy;yZ)oy-JI(;PPSrTU|{fc^>bP0l+XkKwT+LH diff --git a/Tests/LibWeb/Ref/reference/images/svg-textPath-ref.png b/Tests/LibWeb/Ref/reference/images/svg-textPath-ref.png index b75ea07b43c145a903410087dd5fd95f7b35618d..3152ef8dfed58f2d696be07ec270061359d1f023 100644 GIT binary patch literal 18524 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 ZvC@}ve(lzkVqjok@O1TaS?83{1OPreY})_; diff --git a/Userland/Libraries/LibGfx/Path.cpp b/Userland/Libraries/LibGfx/Path.cpp index a4fdac6319..b2e20c82ae 100644 --- a/Userland/Libraries/LibGfx/Path.cpp +++ b/Userland/Libraries/LibGfx/Path.cpp @@ -513,11 +513,15 @@ Path Path::stroke_to_fill(float thickness) const } } - // Note: This is the same as the tolerance from bezier curve splitting. - constexpr auto flatness = 0.5f; - auto pen_vertex_count = (thickness >= 2 * flatness) ? max( - static_cast(ceilf(AK::Pi / acosf(1 - (2 * flatness) / thickness))), 4) - : 4; + constexpr auto flatness = 0.15f; + auto pen_vertex_count = 4; + if (thickness > flatness) { + pen_vertex_count = max( + static_cast(ceilf(AK::Pi + / acosf(1 - (2 * flatness) / thickness))), + pen_vertex_count); + } + if (pen_vertex_count % 2 == 1) pen_vertex_count += 1;