mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:37:35 +00:00
LibGfx: Allow BMPWriter to write v5 bmps and make that the default
This commit is contained in:
parent
1db0883fea
commit
a93a88c73c
2 changed files with 12 additions and 3 deletions
|
@ -91,6 +91,7 @@ ErrorOr<ByteBuffer> BMPWriter::dump(Bitmap const& bitmap, Options options)
|
|||
break;
|
||||
case Options::DibHeader::V3:
|
||||
case Options::DibHeader::V4:
|
||||
case Options::DibHeader::V5:
|
||||
m_compression = Compression::BI_BITFIELDS;
|
||||
m_bytes_per_pixel = 4;
|
||||
m_include_alpha_channel = true;
|
||||
|
@ -126,14 +127,14 @@ ErrorOr<ByteBuffer> BMPWriter::dump(Bitmap const& bitmap, Options options)
|
|||
streamer.write_u32(0); // TotalColors
|
||||
streamer.write_u32(0); // ImportantColors
|
||||
|
||||
if (dib_header == Options::DibHeader::V3 || dib_header == Options::DibHeader::V4) {
|
||||
if (dib_header >= Options::DibHeader::V3) {
|
||||
streamer.write_u32(0x00ff0000); // Red bitmask
|
||||
streamer.write_u32(0x0000ff00); // Green bitmask
|
||||
streamer.write_u32(0x000000ff); // Blue bitmask
|
||||
streamer.write_u32(0xff000000); // Alpha bitmask
|
||||
}
|
||||
|
||||
if (dib_header == Options::DibHeader::V4) {
|
||||
if (dib_header >= Options::DibHeader::V4) {
|
||||
streamer.write_u32(0); // Colorspace
|
||||
|
||||
for (int i = 0; i < 12; i++) {
|
||||
|
@ -141,6 +142,13 @@ ErrorOr<ByteBuffer> BMPWriter::dump(Bitmap const& bitmap, Options options)
|
|||
}
|
||||
}
|
||||
|
||||
if (dib_header >= Options::DibHeader::V5) {
|
||||
streamer.write_u32(4); // Rendering intent IMAGES / Perceptual.
|
||||
streamer.write_u32(0); // Profile data
|
||||
streamer.write_u32(0); // Profile size
|
||||
streamer.write_u32(0); // Reserved
|
||||
}
|
||||
|
||||
TRY(buffer.try_append(pixel_data.data(), pixel_data.size()));
|
||||
return buffer;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue