From fd85f090ef18ed9f4f96fdb04a61cb7c68f3fa9b Mon Sep 17 00:00:00 2001 From: alcexhim Date: Sat, 5 Apr 2014 23:37:37 -0400 Subject: [PATCH] Implemented some parts of the Bitmap specification that weren't working --- .../Microsoft/Bitmap/BitmapDataFormat.cs | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/Picture/Microsoft/Bitmap/BitmapDataFormat.cs b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/Picture/Microsoft/Bitmap/BitmapDataFormat.cs index 6fd464ce..c7a3fabd 100644 --- a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/Picture/Microsoft/Bitmap/BitmapDataFormat.cs +++ b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/DataFormats/Multimedia/Picture/Microsoft/Bitmap/BitmapDataFormat.cs @@ -144,11 +144,23 @@ namespace UniversalEditor.DataFormats.Multimedia.Picture.Microsoft.Bitmap case BitmapBitsPerPixel.HighColor: { // X1R5G5B5 - short value = br.ReadInt16(); - int x1 = value.GetBits(16, 1); - b = (byte)(8 * value.GetBits(0, 5)); - g = (byte)(8 * value.GetBits(5, 5)); - r = (byte)(8 * value.GetBits(10, 5)); + if (header.Compression == BitmapCompression.Bitfields) + { + // R5G6B5 + short value = br.ReadInt16(); + b = (byte)(8 * value.GetBits(0, 5)); + g = (byte)(8 * value.GetBits(6, 6)); + r = (byte)(8 * value.GetBits(11, 5)); + } + else + { + // X1R5G5B5 + short value = br.ReadInt16(); + int x1 = value.GetBits(16, 1); + b = (byte)(8 * value.GetBits(0, 5)); + g = (byte)(8 * value.GetBits(5, 5)); + r = (byte)(8 * value.GetBits(10, 5)); + } break; } case BitmapBitsPerPixel.TrueColor: