diff --git a/src/ImageSharp/Formats/Bmp/BmpDecoderCore.cs b/src/ImageSharp/Formats/Bmp/BmpDecoderCore.cs index 9f4dba5b4..4b5b150c4 100644 --- a/src/ImageSharp/Formats/Bmp/BmpDecoderCore.cs +++ b/src/ImageSharp/Formats/Bmp/BmpDecoderCore.cs @@ -581,13 +581,12 @@ namespace SixLabors.ImageSharp.Formats.Bmp this.currentStream.Read(data, 0, BmpFileHeader.Size); - this.fileHeader = new BmpFileHeader - { - Type = BitConverter.ToInt16(data, 0), - FileSize = BitConverter.ToInt32(data, 2), - Reserved = BitConverter.ToInt32(data, 6), - Offset = BitConverter.ToInt32(data, 10) - }; + this.fileHeader = new BmpFileHeader( + type: BitConverter.ToInt16(data, 0), + fileSize: BitConverter.ToInt32(data, 2), + reserved: BitConverter.ToInt32(data, 6), + offset: BitConverter.ToInt32(data, 10) + ); } /// diff --git a/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs b/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs index 66c8b6c08..7e4dfde59 100644 --- a/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs +++ b/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs @@ -55,9 +55,9 @@ namespace SixLabors.ImageSharp.Formats.Bmp this.padding = bytesPerLine - (image.Width * (int)this.bitsPerPixel); // Do not use IDisposable pattern here as we want to preserve the stream. - EndianBinaryWriter writer = new EndianBinaryWriter(Endianness.LittleEndian, stream); + var writer = new EndianBinaryWriter(Endianness.LittleEndian, stream); - BmpInfoHeader infoHeader = new BmpInfoHeader + var infoHeader = new BmpInfoHeader { HeaderSize = BmpInfoHeader.BitmapInfoHeaderSize, Height = image.Height, @@ -69,12 +69,12 @@ namespace SixLabors.ImageSharp.Formats.Bmp ClrImportant = 0 }; - BmpFileHeader fileHeader = new BmpFileHeader - { - Type = 19778, // BM - Offset = 54, - FileSize = 54 + infoHeader.ImageSize - }; + var fileHeader = new BmpFileHeader( + type: 19778, // BM + offset: 54, + reserved: 0, + fileSize: 54 + infoHeader.ImageSize + ); WriteHeader(writer, fileHeader); this.WriteInfo(writer, infoHeader); @@ -92,7 +92,7 @@ namespace SixLabors.ImageSharp.Formats.Bmp /// /// The containing the header data. /// - private static void WriteHeader(EndianBinaryWriter writer, BmpFileHeader fileHeader) + private static void WriteHeader(EndianBinaryWriter writer, in BmpFileHeader fileHeader) { writer.Write(fileHeader.Type); writer.Write(fileHeader.FileSize); diff --git a/src/ImageSharp/Formats/Bmp/BmpFileHeader.cs b/src/ImageSharp/Formats/Bmp/BmpFileHeader.cs index 4255ecae4..ed17164a2 100644 --- a/src/ImageSharp/Formats/Bmp/BmpFileHeader.cs +++ b/src/ImageSharp/Formats/Bmp/BmpFileHeader.cs @@ -13,35 +13,43 @@ namespace SixLabors.ImageSharp.Formats.Bmp /// All of the other integer values are stored in little-endian format /// (i.e. least-significant byte first). /// - internal sealed class BmpFileHeader + internal readonly struct BmpFileHeader { /// /// Defines of the data structure in the bitmap file. /// public const int Size = 14; + public BmpFileHeader(short type, int fileSize, int reserved, int offset) + { + this.Type = type; + this.FileSize = fileSize; + this.Reserved = reserved; + this.Offset = offset; + } + /// - /// Gets or sets the Bitmap identifier. + /// Gets the Bitmap identifier. /// The field used to identify the bitmap file: 0x42 0x4D /// (Hex code points for B and M) /// - public short Type { get; set; } + public short Type { get; } /// - /// Gets or sets the size of the bitmap file in bytes. + /// Gets the size of the bitmap file in bytes. /// - public int FileSize { get; set; } + public int FileSize { get; } /// - /// Gets or sets any reserved data; actual value depends on the application + /// Gets any reserved data; actual value depends on the application /// that creates the image. /// - public int Reserved { get; set; } + public int Reserved { get; } /// - /// Gets or sets the offset, i.e. starting address, of the byte where + /// Gets the offset, i.e. starting address, of the byte where /// the bitmap data can be found. /// - public int Offset { get; set; } + public int Offset { get; } } -} +} \ No newline at end of file