diff --git a/Userland/Libraries/LibGfx/PNGWriter.cpp b/Userland/Libraries/LibGfx/PNGWriter.cpp index 2812aa29f8..f1e04e13ca 100644 --- a/Userland/Libraries/LibGfx/PNGWriter.cpp +++ b/Userland/Libraries/LibGfx/PNGWriter.cpp @@ -31,6 +31,9 @@ public: void add_u8(u8); + template + void add(T*, size_t); + void store_type(); void store_data_length(); u32 crc(); @@ -92,6 +95,12 @@ requires(IsUnsigned) void PNGChunk::add(T data) m_data.append(&data, sizeof(T)); } +template +void PNGChunk::add(T* data, size_t size) +{ + m_data.append(data, size); +} + template void PNGChunk::add_as_little_endian(T data) { @@ -117,7 +126,7 @@ void NonCompressibleBlock::add_byte_to_block(u8 data, PNGChunk& chunk) update_adler(data); if (full()) { add_block_to_chunk(chunk, false); - m_non_compressible_data.clear(); + m_non_compressible_data.clear_with_capacity(); } } @@ -131,9 +140,7 @@ void NonCompressibleBlock::add_block_to_chunk(PNGChunk& png_chunk, bool last) png_chunk.add_as_little_endian(len); png_chunk.add_as_little_endian(nlen); - for (auto non_compressed_byte : m_non_compressible_data) { - png_chunk.add_u8(non_compressed_byte); - } + png_chunk.add(m_non_compressible_data.data(), m_non_compressible_data.size()); } void NonCompressibleBlock::finalize(PNGChunk& chunk)