summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Slater <tslater2006@gmail.com>2022-08-27 07:50:37 -0500
committerAndreas Kling <kling@serenityos.org>2022-08-31 16:26:09 +0200
commit0506f4eef89c3679698ed11f8d4af4b9a3a36ba9 (patch)
tree1b61b5db685efe366796c2f7e048e7b9bf7a6575
parent21ae882cfd9a6fb1a95c092916bea346445ea4aa (diff)
downloadserenity-0506f4eef89c3679698ed11f8d4af4b9a3a36ba9.zip
PixelPaint: Account for alpha in color distance calculation
This fixes an issue where BucketTool would consider "black" and "transparent" the same color.
-rw-r--r--Userland/Applications/PixelPaint/Tools/BucketTool.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/Userland/Applications/PixelPaint/Tools/BucketTool.cpp b/Userland/Applications/PixelPaint/Tools/BucketTool.cpp
index 58255f3f5d..9c04c972e9 100644
--- a/Userland/Applications/PixelPaint/Tools/BucketTool.cpp
+++ b/Userland/Applications/PixelPaint/Tools/BucketTool.cpp
@@ -2,6 +2,7 @@
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2022, Aaron Yoder <aaronjyoder@gmail.com>
* Copyright (c) 2022, the SerenityOS developers.
+ * Copyright (c) 2022, Timothy Slater <tslater2006@gmail.com>.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -30,7 +31,8 @@ static float color_distance_squared(Gfx::Color const& lhs, Gfx::Color const& rhs
int a = rhs.red() - lhs.red();
int b = rhs.green() - lhs.green();
int c = rhs.blue() - lhs.blue();
- return (a * a + b * b + c * c) / (3.0f * 255.0f * 255.0f);
+ int d = rhs.alpha() - lhs.alpha();
+ return (a * a + b * b + c * c + d * d) / (4.0f * 255.0f * 255.0f);
}
static bool can_paint(int x, int y, Gfx::Bitmap& bitmap, Gfx::Color const& target_color, float threshold_normalized_squared)