(svn r17909) -Fix: 32bpp BMP screenshots were in wrong colours on big endian machines

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
smatz 15 years ago
parent ee2d790b34
commit 86c40a17a9

@ -143,6 +143,15 @@ static bool MakeBmpImage(char *name, ScreenshotCallback *callb, void *userdata,
/* render the pixels */
callb(userdata, buff, h, padw, n);
#if TTD_ENDIAN == TTD_BIG_ENDIAN
if (pixelformat == 32) {
/* Data stored in BMP are always little endian,
* but we have big endian data in buffer */
uint32 *buff32 = (uint32 *)buff;
for (i = 0; i < padw * n; i++) buff32[i] = BSWAP32(buff32[i]);
}
#endif
/* write each line */
while (n)
if (fwrite(buff + (--n) * padw * bpp, padw * bpp, 1, f) != 1) {

Loading…
Cancel
Save