mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-02-03 12:31:15 +00:00
52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
#include "miniwin_ddpalette_sdl3gpu.h"
|
|
#include "miniwin_ddraw.h"
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
DirectDrawPalette_SDL3GPUImpl::DirectDrawPalette_SDL3GPUImpl(LPPALETTEENTRY lpColorTable)
|
|
{
|
|
m_palette = SDL_CreatePalette(256);
|
|
SetEntries(0, 0, 256, lpColorTable);
|
|
}
|
|
|
|
DirectDrawPalette_SDL3GPUImpl::~DirectDrawPalette_SDL3GPUImpl()
|
|
{
|
|
SDL_DestroyPalette(m_palette);
|
|
}
|
|
|
|
HRESULT DirectDrawPalette_SDL3GPUImpl::GetEntries(
|
|
DWORD dwFlags,
|
|
DWORD dwBase,
|
|
DWORD dwNumEntries,
|
|
LPPALETTEENTRY lpEntries
|
|
)
|
|
{
|
|
for (DWORD i = 0; i < dwNumEntries; i++) {
|
|
lpEntries[i].peRed = m_palette->colors[dwBase + i].r;
|
|
lpEntries[i].peGreen = m_palette->colors[dwBase + i].g;
|
|
lpEntries[i].peBlue = m_palette->colors[dwBase + i].b;
|
|
lpEntries[i].peFlags = PC_NONE;
|
|
}
|
|
return DD_OK;
|
|
}
|
|
|
|
HRESULT DirectDrawPalette_SDL3GPUImpl::SetEntries(
|
|
DWORD dwFlags,
|
|
DWORD dwStartingEntry,
|
|
DWORD dwCount,
|
|
LPPALETTEENTRY lpEntries
|
|
)
|
|
{
|
|
SDL_Color colors[256];
|
|
for (DWORD i = 0; i < dwCount; i++) {
|
|
colors[i].r = lpEntries[dwStartingEntry + i].peRed;
|
|
colors[i].g = lpEntries[dwStartingEntry + i].peGreen;
|
|
colors[i].b = lpEntries[dwStartingEntry + i].peBlue;
|
|
colors[i].a = SDL_ALPHA_OPAQUE;
|
|
}
|
|
|
|
SDL_SetPaletteColors(m_palette, colors, dwStartingEntry, dwCount);
|
|
|
|
return DD_OK;
|
|
}
|