GraphicsMagick: coders/bmp.c Display bitmasks into optional log.
GraphicsMagick Commits <[email protected]> Thu, 21 Sep 2023 17:59:09 -0500
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.2712.1695337160.1370.graphicsmagick-commit@lists.sourceforge.net> |
changeset 7b1e4f7e62b0 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=7b1e4f7e62b0 summary: coders/bmp.c Display bitmasks into optional log. diffstat: ChangeLog | 4 ++++ coders/bmp.c | 25 +++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diffs (59 lines): diff -r d1a689f0b9e9 -r 7b1e4f7e62b0 ChangeLog --- a/ChangeLog Thu Sep 21 08:21:06 2023 -0500 +++ b/ChangeLog Fri Sep 22 00:58:42 2023 +0200 @@ -1,3 +1,7 @@ +2023-09-22 Fojtik Jaroslav <[email protected]> + + * coders/bmp.c Display bitmasks into optional log. + 2023-09-21 Bob Friesenhahn <[email protected]> * PerlMagick/t/jpeg/read.t: Add test for JPEG-compressed BMP. diff -r d1a689f0b9e9 -r 7b1e4f7e62b0 coders/bmp.c --- a/coders/bmp.c Thu Sep 21 08:21:06 2023 -0500 +++ b/coders/bmp.c Fri Sep 22 00:58:42 2023 +0200 @@ -1125,25 +1125,38 @@ case BI_BITFIELDS: if(bmp_info.size==40) { - if(bmp_info.ba_offset>0 && bmp_info.ba_offset<52) - ThrowBMPReaderException(CorruptImageError,CorruptImage,image); /* check for gap size >=12*/ + if(bmp_info.ba_offset==0) bmp_info.ba_offset=52; + if(bmp_info.ba_offset<52) /* check for gap size >=12*/ + ThrowBMPReaderException(CorruptImageError,CorruptImage,image); bmp_info.red_mask=ReadBlobLSBLong(image); bmp_info.green_mask=ReadBlobLSBLong(image); bmp_info.blue_mask=ReadBlobLSBLong(image); + goto CheckBitSize; } - goto CheckBitSize; + goto CheckAlphaBitSize; case BI_ALPHABITFIELDS: if(bmp_info.size==40) { - if(bmp_info.ba_offset>0 && bmp_info.ba_offset<56) - ThrowBMPReaderException(CorruptImageError,CorruptImage,image); /* check for gap size >=16*/ + if(bmp_info.ba_offset==0) bmp_info.ba_offset=56; + if(bmp_info.ba_offset<56) /* check for gap size >=16*/ + ThrowBMPReaderException(CorruptImageError,CorruptImage,image); bmp_info.red_mask=ReadBlobLSBLong(image); bmp_info.green_mask=ReadBlobLSBLong(image); bmp_info.blue_mask=ReadBlobLSBLong(image); - /* TODO: check for gap size >=16*/ bmp_info.alpha_mask=ReadBlobLSBLong(image); } +CheckAlphaBitSize: + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + "Alpha Mask: 0x%04x", + bmp_info.alpha_mask); CheckBitSize: + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + "Red Mask: 0x%04x\n" + "Green Mask: 0x%04x\n" + "Blue Mask: 0x%04x", + bmp_info.red_mask, bmp_info.green_mask, bmp_info.blue_mask); if(!(bmp_info.bits_per_pixel==16 || bmp_info.bits_per_pixel==32)) ThrowBMPReaderException(CorruptImageError,CorruptImage,image); break;