From f2b2bb17a54d90b468549fed07219952719ab14b Mon Sep 17 00:00:00 2001 From: scawful Date: Wed, 24 Jul 2024 01:40:15 -0400 Subject: [PATCH] add GetSnesPixelFormat and SNES_PIXELFORMAT_XBPP constants --- src/app/gfx/bitmap.cc | 14 ++++++++++++++ src/app/gfx/bitmap.h | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/app/gfx/bitmap.cc b/src/app/gfx/bitmap.cc index 76437e98..c8038724 100644 --- a/src/app/gfx/bitmap.cc +++ b/src/app/gfx/bitmap.cc @@ -46,6 +46,20 @@ void PngReadCallback(png_structp png_ptr, png_bytep outBytes, png_error(png_ptr, "Read error in PngReadCallback"); } } + +Uint32 GetSnesPixelFormat(int format) { + switch (format) { + case 0: + return SDL_PIXELFORMAT_INDEX8; + case 1: + return SNES_PIXELFORMAT_2BPP; + case 2: + return SNES_PIXELFORMAT_4BPP; + case 3: + return SNES_PIXELFORMAT_8BPP; + } + return SDL_PIXELFORMAT_INDEX8; +} } // namespace bool ConvertSurfaceToPNG(SDL_Surface *surface, std::vector &buffer) { diff --git a/src/app/gfx/bitmap.h b/src/app/gfx/bitmap.h index 1e573bd7..ea437ccb 100644 --- a/src/app/gfx/bitmap.h +++ b/src/app/gfx/bitmap.h @@ -22,6 +22,24 @@ namespace app { */ namespace gfx { +constexpr int SNES_PIXELFORMAT_2BPP = SDL_DEFINE_PIXELFORMAT( + /*type=*/SDL_PIXELTYPE_INDEX8, /*order=*/0, + /*layouts=*/0, /*bits=*/2, /*bytes=*/1); + +constexpr int SNES_PIXELFORMAT_4BPP = SDL_DEFINE_PIXELFORMAT( + /*type=*/SDL_PIXELTYPE_INDEX8, /*order=*/0, + /*layouts=*/0, /*bits=*/4, /*bytes=*/1); + +constexpr int SNES_PIXELFORMAT_8BPP = SDL_DEFINE_PIXELFORMAT( + /*type=*/SDL_PIXELTYPE_INDEX8, /*order=*/0, + /*layouts=*/0, /*bits=*/8, /*bytes=*/1); + +// SDL_PIXELFORMAT_INDEX8 = +// SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + +constexpr int kFormat4bppIndexed = 1; +constexpr int kFormat8bppIndexed = 2; + /** * @brief Convert SDL_Surface to PNG image data. */