1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-09-02 19:39:12 +00:00

(svn r5249) - Add code to copy the palette to a temporary byte aligned array when making a PCX screenshot, if the palette array is not byte aligned.

This commit is contained in:
2006-06-13 17:13:46 +00:00
parent 30c81ca9ac
commit 642a3b4b22

View File

@@ -285,6 +285,7 @@ static bool MakePCXImage(const char *name, ScreenshotCallback *callb, void *user
uint maxlines;
uint y;
PcxHeader pcx;
bool success;
if (pixelformat != 8 || w == 0)
return false;
@@ -388,14 +389,24 @@ static bool MakePCXImage(const char *name, ScreenshotCallback *callb, void *user
return false;
}
{assert_compile(sizeof(*palette) == 3);}
if (fwrite(palette, 256 * sizeof(*palette), 1, f) != 1) {
fclose(f);
return false;
if (sizeof(*palette) == 3) {
success = fwrite(palette, 256 * sizeof(*palette), 1, f) == 1;
} else {
/* If the palette is word-aligned, copy it to a temporary byte array */
byte *tmp = malloc(256 * 3);
uint i;
for (i = 0; i < 256; i++) {
tmp[i * 3 + 0] = palette[i].r;
tmp[i * 3 + 1] = palette[i].g;
tmp[i * 3 + 2] = palette[i].b;
}
success = fwrite(tmp, 256 * 3, 1, f) == 1;
free(tmp);
}
fclose(f);
return true;
return success;
}
//************************************************