From 0b1a40a6fe8b87a6cb1a6aedbb16625617752389 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 27 Jul 2020 16:40:12 +0200 Subject: [PATCH] LibGfx: Simplify some excessive use of pow() in scanline unfiltering --- Libraries/LibGfx/PNGLoader.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Libraries/LibGfx/PNGLoader.cpp b/Libraries/LibGfx/PNGLoader.cpp index db0a14e216..6d4b8678ce 100644 --- a/Libraries/LibGfx/PNGLoader.cpp +++ b/Libraries/LibGfx/PNGLoader.cpp @@ -364,6 +364,7 @@ NEVER_INLINE FLATTEN static void unfilter(PNGLoadingContext& context) } else if (context.bit_depth == 16) { unpack_grayscale_without_alpha(context); } else if (context.bit_depth == 1 || context.bit_depth == 2 || context.bit_depth == 4) { + auto bit_depth_squared = context.bit_depth = context.bit_depth; auto pixels_per_byte = 8 / context.bit_depth; auto mask = (1 << context.bit_depth) - 1; for (int y = 0; y < context.height; ++y) { @@ -372,9 +373,9 @@ NEVER_INLINE FLATTEN static void unfilter(PNGLoadingContext& context) auto bit_offset = (8 - context.bit_depth) - (context.bit_depth * (x % pixels_per_byte)); auto value = (gray_values[x / pixels_per_byte] >> bit_offset) & mask; auto& pixel = (Pixel&)context.bitmap->scanline(y)[x]; - pixel.r = value * (0xff / pow(context.bit_depth, 2)); - pixel.g = value * (0xff / pow(context.bit_depth, 2)); - pixel.b = value * (0xff / pow(context.bit_depth, 2)); + pixel.r = value * (0xff / bit_depth_squared); + pixel.g = value * (0xff / bit_depth_squared); + pixel.b = value * (0xff / bit_depth_squared); pixel.a = 0xff; } }