From 9f710b0fb6997b6e80c1d3edca40cf8c680fc442 Mon Sep 17 00:00:00 2001 From: MacDue Date: Sun, 21 Jan 2024 23:29:01 +0000 Subject: [PATCH] Revert "LibGfx: Slightly simplify Color::blend()" This was producing incorrect results. This reverts commit a1bafafd7805f2163c9afe45163cef07c212e9ce. --- .../svg-background-no-natural-size-ref.png | Bin 400 -> 407 bytes Userland/Libraries/LibGfx/Color.h | 9 +++++---- 2 files changed, 5 insertions(+), 4 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 a56a3670244f83f37ea95c022069b12f534260ef..fe5c015a42a824d1828bb87f28612ce257e2d8e0 100644 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0y~yVCZ0AV07nTW?*3OUHfG#0|P@~fKQ0)|Ns9P7#M1% zZ47AHk=nelZowh13D+_w?C4myGr50vN&hMi4vr^Jp6Kf7YwPOk=;@z7fBxFFYpUuR zZf!@k^o)1y+NEn^rKYZ7=^dl0rt#y)kMFJOatsWNjGiuzAr-gYp7Z2uau9Ji7$%Y~ zD7gH${FSNQ_ewe9n^tbG_gt#tsk~Jpfai%i_lbJPX`%PBv`*|gce?=#IK#Z@?$fu+ zn_P4h6qHLO0w$@PUGw;*Omwkk^Ooy++oI#SRwnOm#-fpaLR`)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 diff --git a/Userland/Libraries/LibGfx/Color.h b/Userland/Libraries/LibGfx/Color.h index c9c9f357a9..827b37175f 100644 --- a/Userland/Libraries/LibGfx/Color.h +++ b/Userland/Libraries/LibGfx/Color.h @@ -210,10 +210,11 @@ public: if (source.alpha() == 0) return *this; - u8 a = 255 - ((255 - alpha()) * (255 - source.alpha()) / 255); - u8 r = (red() * (255 - source.alpha()) + source.red() * source.alpha()) / 255; - u8 g = (green() * (255 - source.alpha()) + source.green() * source.alpha()) / 255; - u8 b = (blue() * (255 - source.alpha()) + source.blue() * source.alpha()) / 255; + int const d = 255 * (alpha() + source.alpha()) - alpha() * source.alpha(); + u8 r = (red() * alpha() * (255 - source.alpha()) + source.red() * 255 * source.alpha()) / d; + u8 g = (green() * alpha() * (255 - source.alpha()) + source.green() * 255 * source.alpha()) / d; + u8 b = (blue() * alpha() * (255 - source.alpha()) + source.blue() * 255 * source.alpha()) / d; + u8 a = d / 255; return Color(r, g, b, a); }