From c587ada084e5c78130ca2d99c96f627d1e2e2955 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Sun, 12 Mar 2023 13:22:19 -0400 Subject: [PATCH] LibGfx: Make BMPWriter::dump() return ErrorOr ...and use TRY() consistently in BMPWriter.cpp --- Userland/Libraries/LibGfx/BMPWriter.cpp | 21 ++++++--------------- Userland/Libraries/LibGfx/BMPWriter.h | 2 +- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/Userland/Libraries/LibGfx/BMPWriter.cpp b/Userland/Libraries/LibGfx/BMPWriter.cpp index 523e127619..94f6f7802c 100644 --- a/Userland/Libraries/LibGfx/BMPWriter.cpp +++ b/Userland/Libraries/LibGfx/BMPWriter.cpp @@ -42,14 +42,10 @@ private: u8* m_data; }; -static ByteBuffer write_pixel_data(Bitmap const& bitmap, int pixel_row_data_size, int bytes_per_pixel, bool include_alpha_channel) +static ErrorOr write_pixel_data(Bitmap const& bitmap, int pixel_row_data_size, int bytes_per_pixel, bool include_alpha_channel) { int image_size = pixel_row_data_size * bitmap.height(); - auto buffer_result = ByteBuffer::create_uninitialized(image_size); - if (buffer_result.is_error()) - return {}; - - auto buffer = buffer_result.release_value(); + auto buffer = TRY(ByteBuffer::create_uninitialized(image_size)); int current_row = 0; for (int y = bitmap.physical_height() - 1; y >= 0; --y) { @@ -83,7 +79,7 @@ ByteBuffer BMPWriter::compress_pixel_data(ByteBuffer pixel_data, BMPWriter::Comp VERIFY_NOT_REACHED(); } -ByteBuffer BMPWriter::dump(Bitmap const& bitmap, Options options) +ErrorOr BMPWriter::dump(Bitmap const& bitmap, Options options) { Options::DibHeader dib_header = options.dib_header; @@ -105,13 +101,9 @@ ByteBuffer BMPWriter::dump(Bitmap const& bitmap, Options options) int pixel_row_data_size = (m_bytes_per_pixel * 8 * bitmap.width() + 31) / 32 * 4; int image_size = pixel_row_data_size * bitmap.height(); - auto buffer_result = ByteBuffer::create_uninitialized(pixel_data_offset); - if (buffer_result.is_error()) - return {}; + auto buffer = TRY(ByteBuffer::create_uninitialized(pixel_data_offset)); - auto buffer = buffer_result.release_value(); - - auto pixel_data = write_pixel_data(bitmap, pixel_row_data_size, m_bytes_per_pixel, m_include_alpha_channel); + auto pixel_data = TRY(write_pixel_data(bitmap, pixel_row_data_size, m_bytes_per_pixel, m_include_alpha_channel)); pixel_data = compress_pixel_data(move(pixel_data), m_compression); size_t file_size = pixel_data_offset + pixel_data.size(); @@ -149,8 +141,7 @@ ByteBuffer BMPWriter::dump(Bitmap const& bitmap, Options options) } } - if (auto result = buffer.try_append(pixel_data.data(), pixel_data.size()); result.is_error()) - dbgln("Failed to write {} bytes of pixel data to buffer: {}", pixel_data.size(), result.error()); + TRY(buffer.try_append(pixel_data.data(), pixel_data.size())); return buffer; } diff --git a/Userland/Libraries/LibGfx/BMPWriter.h b/Userland/Libraries/LibGfx/BMPWriter.h index 209f9f9a1c..76f93f54d6 100644 --- a/Userland/Libraries/LibGfx/BMPWriter.h +++ b/Userland/Libraries/LibGfx/BMPWriter.h @@ -30,7 +30,7 @@ public: private: BMPWriter() = default; - ByteBuffer dump(Bitmap const&, Options options); + ErrorOr dump(Bitmap const&, Options options); enum class Compression : u32 { BI_RGB = 0,