Refactor bitmap handling and remove unused functions for improved clarity
- Simplified pixel format handling by removing the 2BPP format and adjusting related cases. - Eliminated unused texture tracking variables from the Bitmap class. - Removed the ExtractTile8Bitmaps function to streamline bitmap processing and reduce complexity.
This commit is contained in:
@@ -185,10 +185,8 @@ Uint32 GetSnesPixelFormat(int format) {
|
|||||||
case 0:
|
case 0:
|
||||||
return SDL_PIXELFORMAT_INDEX8;
|
return SDL_PIXELFORMAT_INDEX8;
|
||||||
case 1:
|
case 1:
|
||||||
return SNES_PIXELFORMAT_2BPP;
|
|
||||||
case 2:
|
|
||||||
return SNES_PIXELFORMAT_4BPP;
|
return SNES_PIXELFORMAT_4BPP;
|
||||||
case 3:
|
case 2:
|
||||||
return SNES_PIXELFORMAT_8BPP;
|
return SNES_PIXELFORMAT_8BPP;
|
||||||
}
|
}
|
||||||
return SDL_PIXELFORMAT_INDEX8;
|
return SDL_PIXELFORMAT_INDEX8;
|
||||||
@@ -288,8 +286,6 @@ void Bitmap::CreateTexture(SDL_Renderer *renderer) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
texture_in_use_ = true;
|
|
||||||
last_used_time_ = SDL_GetTicks64();
|
|
||||||
UpdateTextureData();
|
UpdateTextureData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,53 +442,5 @@ std::vector<uint8_t> Bitmap::GetPngData() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::vector<gfx::Bitmap> ExtractTile8Bitmaps(const gfx::Bitmap &source_bmp,
|
|
||||||
const gfx::SnesPalette &palette,
|
|
||||||
uint8_t palette_index) {
|
|
||||||
constexpr int kTileCount = 1024;
|
|
||||||
constexpr int kTileSize = 8;
|
|
||||||
std::vector<gfx::Bitmap> tile_bitmaps;
|
|
||||||
tile_bitmaps.reserve(kTileCount);
|
|
||||||
|
|
||||||
std::vector<std::future<gfx::Bitmap>> futures;
|
|
||||||
|
|
||||||
for (int index = 0; index < kTileCount; ++index) {
|
|
||||||
futures.emplace_back(std::async(
|
|
||||||
std::launch::async, [&source_bmp, &palette, palette_index, index]() {
|
|
||||||
std::array<uint8_t, 0x40> tile_data;
|
|
||||||
|
|
||||||
int num_columns = source_bmp.width() / kTileSize;
|
|
||||||
|
|
||||||
for (int ty = 0; ty < kTileSize; ++ty) {
|
|
||||||
for (int tx = 0; tx < kTileSize; ++tx) {
|
|
||||||
int tile_data_pos = tx + (ty * kTileSize);
|
|
||||||
int src_x = (index % num_columns) * kTileSize + tx;
|
|
||||||
int src_y = (index / num_columns) * kTileSize + ty;
|
|
||||||
int gfx_position = src_x + (src_y * 0x100);
|
|
||||||
|
|
||||||
uint8_t value = source_bmp.data()[gfx_position];
|
|
||||||
|
|
||||||
if (value & 0x80) {
|
|
||||||
value -= 0x88;
|
|
||||||
}
|
|
||||||
|
|
||||||
tile_data[tile_data_pos] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gfx::Bitmap tile_bitmap;
|
|
||||||
tile_bitmap.Create(kTileSize, kTileSize, 8, tile_data);
|
|
||||||
tile_bitmap.SetPaletteWithTransparent(palette, palette_index);
|
|
||||||
return tile_bitmap;
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (auto &future : futures) {
|
|
||||||
tile_bitmaps.push_back(future.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
return tile_bitmaps;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace gfx
|
} // namespace gfx
|
||||||
} // namespace yaze
|
} // namespace yaze
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <span>
|
#include <span>
|
||||||
#include <string_view>
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "app/gfx/snes_palette.h"
|
#include "app/gfx/snes_palette.h"
|
||||||
@@ -22,10 +21,6 @@ namespace gfx {
|
|||||||
constexpr Uint32 SNES_PIXELFORMAT_INDEXED =
|
constexpr Uint32 SNES_PIXELFORMAT_INDEXED =
|
||||||
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1);
|
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1);
|
||||||
|
|
||||||
constexpr Uint32 SNES_PIXELFORMAT_2BPP = SDL_DEFINE_PIXELFORMAT(
|
|
||||||
/*type=*/SDL_PIXELTYPE_INDEX8, /*order=*/0,
|
|
||||||
/*layouts=*/0, /*bits=*/2, /*bytes=*/1);
|
|
||||||
|
|
||||||
constexpr Uint32 SNES_PIXELFORMAT_4BPP = SDL_DEFINE_PIXELFORMAT(
|
constexpr Uint32 SNES_PIXELFORMAT_4BPP = SDL_DEFINE_PIXELFORMAT(
|
||||||
/*type=*/SDL_PIXELTYPE_INDEX8, /*order=*/0,
|
/*type=*/SDL_PIXELTYPE_INDEX8, /*order=*/0,
|
||||||
/*layouts=*/0, /*bits=*/4, /*bytes=*/1);
|
/*layouts=*/0, /*bits=*/4, /*bytes=*/1);
|
||||||
@@ -36,9 +31,8 @@ constexpr Uint32 SNES_PIXELFORMAT_8BPP = SDL_DEFINE_PIXELFORMAT(
|
|||||||
|
|
||||||
enum BitmapFormat {
|
enum BitmapFormat {
|
||||||
kIndexed = 0,
|
kIndexed = 0,
|
||||||
k2bpp = 1,
|
k4bpp = 1,
|
||||||
k4bpp = 2,
|
k8bpp = 2,
|
||||||
k8bpp = 3,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#if YAZE_LIB_PNG == 1
|
#if YAZE_LIB_PNG == 1
|
||||||
@@ -183,12 +177,6 @@ class Bitmap {
|
|||||||
bool active_ = false;
|
bool active_ = false;
|
||||||
bool modified_ = false;
|
bool modified_ = false;
|
||||||
|
|
||||||
// Track if this texture is currently in use
|
|
||||||
bool texture_in_use_ = false;
|
|
||||||
|
|
||||||
// Track the last time this texture was used
|
|
||||||
uint64_t last_used_time_ = 0;
|
|
||||||
|
|
||||||
// Pointer to the texture pixels
|
// Pointer to the texture pixels
|
||||||
void *texture_pixels = nullptr;
|
void *texture_pixels = nullptr;
|
||||||
|
|
||||||
@@ -211,13 +199,6 @@ class Bitmap {
|
|||||||
// Type alias for a table of bitmaps
|
// Type alias for a table of bitmaps
|
||||||
using BitmapTable = std::unordered_map<int, gfx::Bitmap>;
|
using BitmapTable = std::unordered_map<int, gfx::Bitmap>;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Extract 8x8 tiles from a source bitmap
|
|
||||||
*/
|
|
||||||
std::vector<gfx::Bitmap> ExtractTile8Bitmaps(const gfx::Bitmap &source_bmp,
|
|
||||||
const gfx::SnesPalette &palette,
|
|
||||||
uint8_t palette_index);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the SDL pixel format for a given bitmap format
|
* @brief Get the SDL pixel format for a given bitmap format
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user