diff --git a/Userland/Libraries/LibGfx/ImageFormats/PBMLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/PBMLoader.cpp index c036f8b9f9..e18eb3a1b1 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/PBMLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/PBMLoader.cpp @@ -12,19 +12,19 @@ namespace Gfx { ErrorOr read_image_data(PBMLoadingContext& context) { + TRY(create_bitmap(context)); + auto& stream = *context.stream; - Vector color_data; auto const context_size = context.width * context.height; - color_data.resize(context_size); if (context.type == PBMLoadingContext::Type::ASCII) { for (u64 i = 0; i < context_size; ++i) { auto const byte = TRY(stream.read_value()); if (byte == '0') - color_data[i] = Color::White; + context.bitmap->set_pixel(i % context.width, i / context.width, Color::White); else if (byte == '1') - color_data[i] = Color::Black; + context.bitmap->set_pixel(i % context.width, i / context.width, Color::Black); else i--; } @@ -35,9 +35,9 @@ ErrorOr read_image_data(PBMLoadingContext& context) auto const val = byte & 0x80; if (val == 0) - color_data[color_index] = Color::White; + context.bitmap->set_pixel(color_index % context.width, color_index / context.width, Color::White); else - color_data[color_index] = Color::Black; + context.bitmap->set_pixel(color_index % context.width, color_index / context.width, Color::Black); byte = byte << 1; color_index++; @@ -49,10 +49,6 @@ ErrorOr read_image_data(PBMLoadingContext& context) } } - TRY(create_bitmap(context)); - - set_pixels(context, color_data); - context.state = PBMLoadingContext::State::Bitmap; return {}; } diff --git a/Userland/Libraries/LibGfx/ImageFormats/PGMLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/PGMLoader.cpp index 5f4f44f9a3..f1a793662c 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/PGMLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/PGMLoader.cpp @@ -10,28 +10,12 @@ namespace Gfx { -static void set_adjusted_pixels(PGMLoadingContext& context, Vector const& color_data) -{ - size_t index = 0; - for (size_t y = 0; y < context.height; ++y) { - for (size_t x = 0; x < context.width; ++x) { - Color color = color_data.at(index); - if (context.format_details.max_val < 255) { - color = adjust_color(context.format_details.max_val, color); - } - context.bitmap->set_pixel(x, y, color); - ++index; - } - } -} - ErrorOr read_image_data(PGMLoadingContext& context) { - auto& stream = *context.stream; - Vector color_data; - auto const context_size = context.width * context.height; + TRY(create_bitmap(context)); - color_data.resize(context_size); + auto& stream = *context.stream; + auto const context_size = context.width * context.height; if (context.type == PGMLoadingContext::Type::ASCII) { for (u64 i = 0; i < context_size; ++i) { @@ -39,19 +23,19 @@ ErrorOr read_image_data(PGMLoadingContext& context) TRY(read_whitespace(context)); - color_data[i] = { static_cast(value), static_cast(value), static_cast(value) }; + Color color { static_cast(value), static_cast(value), static_cast(value) }; + if (context.format_details.max_val < 255) + color = adjust_color(context.format_details.max_val, color); + + context.bitmap->set_pixel(i % context.width, i / context.width, color); } } else if (context.type == PGMLoadingContext::Type::RAWBITS) { for (u64 i = 0; i < context_size; ++i) { auto const pixel = TRY(stream.read_value()); - color_data[i] = { pixel, pixel, pixel }; + context.bitmap->set_pixel(i % context.width, i / context.width, { pixel, pixel, pixel }); } } - TRY(create_bitmap(context)); - - set_adjusted_pixels(context, color_data); - context.state = PGMLoadingContext::State::Bitmap; return {}; } diff --git a/Userland/Libraries/LibGfx/ImageFormats/PPMLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/PPMLoader.cpp index a172a3862f..562e586006 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/PPMLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/PPMLoader.cpp @@ -12,9 +12,9 @@ namespace Gfx { ErrorOr read_image_data(PPMLoadingContext& context) { - Vector color_data; auto const context_size = context.width * context.height; - color_data.resize(context_size); + + TRY(create_bitmap(context)); auto& stream = *context.stream; @@ -32,7 +32,7 @@ ErrorOr read_image_data(PPMLoadingContext& context) Color color { static_cast(red), static_cast(green), static_cast(blue) }; if (context.format_details.max_val < 255) color = adjust_color(context.format_details.max_val, color); - color_data[i] = color; + context.bitmap->set_pixel(i % context.width, i / context.width, color); } } else if (context.type == PPMLoadingContext::Type::RAWBITS) { for (u64 i = 0; i < context_size; ++i) { @@ -41,14 +41,10 @@ ErrorOr read_image_data(PPMLoadingContext& context) TRY(stream.read_until_filled(buffer)); - color_data[i] = { pixel[0], pixel[1], pixel[2] }; + context.bitmap->set_pixel(i % context.width, i / context.width, { pixel[0], pixel[1], pixel[2] }); } } - TRY(create_bitmap(context)); - - set_pixels(context, color_data); - context.state = PPMLoadingContext::State::Bitmap; return {}; } diff --git a/Userland/Libraries/LibGfx/ImageFormats/PortableImageLoaderCommon.h b/Userland/Libraries/LibGfx/ImageFormats/PortableImageLoaderCommon.h index 2f91aea1d3..34e5e8369f 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/PortableImageLoaderCommon.h +++ b/Userland/Libraries/LibGfx/ImageFormats/PortableImageLoaderCommon.h @@ -175,18 +175,6 @@ static ErrorOr create_bitmap(TContext& context) return {}; } -template -static void set_pixels(TContext& context, Vector const& color_data) -{ - size_t index = 0; - for (size_t y = 0; y < context.height; ++y) { - for (size_t x = 0; x < context.width; ++x) { - context.bitmap->set_pixel(x, y, color_data.at(index)); - index++; - } - } -} - template static ErrorOr decode(TContext& context) {