Skip to content

Commit 3b58552

Browse files
committed
Fixed incorrect Pixel Array Offset in File Header, BMP file writer fully fully functional
Done some extra research, apparently I messed this up bad but it seems ok now
1 parent 2b779a1 commit 3b58552

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

cccp-bender-main.bmx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,8 @@ Type TBitmapIndex
7373

7474
WriteShort(dataStream,19778) 'File ID (2 bytes (short)) - 19778 (deci) or 42 4D (hex) or BM (ascii) for bitmap
7575
WriteInt(dataStream,bmpSizeTotalM4) 'File Size (4 bytes (signed int))
76-
WriteShort(dataStream,0) 'Reserved (2 bytes)
77-
WriteShort(dataStream,0) 'Reserved (2 bytes)
78-
WriteInt(dataStream,54) 'Pixel Array Offset (4 bytes) - pixel array starts at 54th byte
76+
WriteInt(dataStream,0) 'Reserved (4 bytes)
77+
WriteInt(dataStream,1078) 'Pixel Array Offset (4 bytes) - pixel array starts at 1078th byte (14 bytes Header + 40 bytes DIB + 1024 (256 * 4) bytes Color Table)
7978

8079
'------ DIB Header (File Info)
8180
WriteInt(dataStream,40) 'DIB Header Size (4 bytes) - 40 bytes
@@ -92,10 +91,14 @@ Type TBitmapIndex
9291

9392
'------ Color Table
9493
For paletteIndex = 0 To 255
95-
WriteByte(dataStream,palB[paletteIndex]) 'Blue (4 bytes) - offset 54
96-
WriteByte(dataStream,palG[paletteIndex]) 'Green (4 bytes) - offset 58
97-
WriteByte(dataStream,palR[paletteIndex]) 'Red (4 bytes) - offset 62
98-
WriteByte(dataStream,0) 'Alpha (4 bytes) - offset 66
94+
WriteByte(dataStream,palB[paletteIndex]) 'Blue (1 byte)
95+
WriteByte(dataStream,palG[paletteIndex]) 'Green (1 byte)
96+
WriteByte(dataStream,palR[paletteIndex]) 'Red (1 byte)
97+
WriteByte(dataStream,0) 'Reserved (1 byte) - Alpha channel, irrelevant for indexed bitmaps
98+
99+
Rem
100+
Color Table is 4 bytes (ARGB) times the amount of colors in the palette
101+
EndRem
99102
Next
100103

101104
'------ Pixel Array

0 commit comments

Comments
 (0)