Browse code

chr2img: shorten writebmp, explain bitmasks

Sigrid Solveig Haflínudóttir authored on 23/06/2021 15:39:44
Showing 1 changed files
... ...
@@ -93,9 +93,10 @@ static int
93 93
 writebmp(int w, int h, u32int *p)
94 94
 {
95 95
 	/* clang-format off */
96
+	int sz = 14 + 40 + 4*4 + 4*w*h;
96 97
 	u8int hd[14+40+4*4] = {
97 98
 		'B', 'M',
98
-		0, 0, 0, 0, /* file size */
99
+		sz, sz>>8, sz>>16, sz>>24, /* file size */
99 100
 		0, 0,
100 101
 		0, 0,
101 102
 		14+40+4*4, 0, 0, 0, /* pixel data offset */
... ...
@@ -110,20 +111,13 @@ writebmp(int w, int h, u32int *p)
110 111
 		0, 0, 0, 0, /* dummy ver ppm */
111 112
 		0, 0, 0, 0, /* dummy num of colors */
112 113
 		0, 0, 0, 0, /* dummy important colors */
113
-		0, 0, 0, 0xff,
114
-		0, 0, 0xff, 0,
115
-		0, 0xff, 0, 0,
116
-		0xff, 0, 0, 0,
114
+		0, 0, 0, 0xff, /* R mask */
115
+		0, 0, 0xff, 0, /* G mask */
116
+		0, 0xff, 0, 0, /* B mask */
117
+		0xff, 0, 0, 0, /* A mask */
117 118
 	};
118
-	int sz;
119 119
 	/* clang-format on */
120 120
 
121
-	sz = 14 + 40 + 4 * 4 + 4 * w * h;
122
-	hd[2] = sz;
123
-	hd[3] = sz >> 8;
124
-	hd[4] = sz >> 16;
125
-	hd[5] = sz >> 24;
126
-
127 121
 	write(1, hd, sizeof(hd));
128 122
 	while(h-- >= 0)
129 123
 		write(1, p + w * h, 4 * w);