Skip to content

Commit b89c056

Browse files
committed
make DefaultPaletteToSDL always use the default
Instead of using the current palette, grab the default from FrameMan (assumes that frameman is always init before a palette is requested which seems to be the case)
1 parent 3d5c02e commit b89c056

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

Source/System/ContentFile.cpp

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -258,19 +258,18 @@ void ContentFile::GetAsAnimation(std::vector<BITMAP*>& vectorToFill, int frameCo
258258
}
259259
}
260260
SDL_Palette* ContentFile::DefaultPaletteToSDL() {
261-
SDL_Palette* palette = SDL_CreatePalette(256);
262-
std::array<SDL_Color, 256> paletteColor;
263-
PALETTE currentPalette;
264-
get_palette(currentPalette);
265-
paletteColor[0] = {.r = 0, .g = 0, .b = 0, .a = 0};
266-
for (size_t i = 1; i < paletteColor.size(); ++i) {
267-
paletteColor[i].r = currentPalette[i].r;
268-
paletteColor[i].g = currentPalette[i].g;
269-
paletteColor[i].b = currentPalette[i].b;
270-
paletteColor[i].a = 255;
271-
}
272-
SDL_SetPaletteColors(palette, paletteColor.data(), 0, 256);
273-
return palette;
261+
SDL_Palette* palette = SDL_CreatePalette(256);
262+
std::array<SDL_Color, 256> paletteColor;
263+
const PALETTE& defaultPalette = g_FrameMan.GetDefaultPalette();
264+
paletteColor[0] = {.r = 0, .g = 0, .b = 0, .a = 0};
265+
for (size_t i = 1; i < paletteColor.size(); ++i) {
266+
paletteColor[i].r = defaultPalette[i].r;
267+
paletteColor[i].g = defaultPalette[i].g;
268+
paletteColor[i].b = defaultPalette[i].b;
269+
paletteColor[i].a = 255;
270+
}
271+
SDL_SetPaletteColors(palette, paletteColor.data(), 0, 256);
272+
return palette;
274273
}
275274

276275
SDL_Surface* ContentFile::LoadImageAsSurface(int conversionMode, const std::string& dataPathToLoad) {
@@ -286,7 +285,6 @@ SDL_Surface* ContentFile::LoadImageAsSurface(int conversionMode, const std::stri
286285
image = newImage;
287286
bitDepth = 8;
288287
} else if (bitDepth != 8 || convert8To32) {
289-
290288
SDL_Palette* palette = DefaultPaletteToSDL();
291289
if (SDL_GetPixelFormatDetails(image->format)->bits_per_pixel == 8) {
292290
SDL_SetSurfacePalette(image, palette);
@@ -312,7 +310,7 @@ BITMAP* ContentFile::LoadAndReleaseBitmap(int conversionMode, const std::string&
312310
int bitDepth = SDL_GetPixelFormatDetails(image->format)->bits_per_pixel;
313311

314312
BITMAP* returnBitmap = create_bitmap_ex(bitDepth, image->w, image->h);
315-
313+
316314
// allegro doesn't (always) align lines to 4byte, so copy line by line. SDL_Surface.pitch is the size in bytes per line + alignment padding.
317315
for (int y = 0; y < image->h; ++y) {
318316
memcpy(returnBitmap->line[y], static_cast<unsigned char*>(image->pixels) + image->pitch * y, image->w * SDL_GetPixelFormatDetails(image->format)->bytes_per_pixel);

0 commit comments

Comments
 (0)