mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-09-01 10:59:12 +00:00
(svn r17909) -Fix: 32bpp BMP screenshots were in wrong colours on big endian machines
This commit is contained in:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user