yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::gfx::Bitmap Class Reference

Represents a bitmap image optimized for SNES ROM hacking. More...

#include <bitmap.h>

Collaboration diagram for yaze::gfx::Bitmap:

Classes

struct  DirtyRegion
 

Public Member Functions

 Bitmap ()=default
 
 Bitmap (int width, int height, int depth, const std::vector< uint8_t > &data)
 Create a bitmap with the given dimensions and raw pixel data.
 
 Bitmap (int width, int height, int depth, const std::vector< uint8_t > &data, const SnesPalette &palette)
 Create a bitmap with the given dimensions, data, and SNES palette.
 
 Bitmap (const Bitmap &other)
 Copy constructor - creates a deep copy.
 
Bitmapoperator= (const Bitmap &other)
 Copy assignment operator.
 
 Bitmap (Bitmap &&other) noexcept
 Move constructor.
 
Bitmapoperator= (Bitmap &&other) noexcept
 Move assignment operator.
 
 ~Bitmap ()=default
 Destructor.
 
void Create (int width, int height, int depth, std::span< uint8_t > data)
 Create a bitmap with the given dimensions and data.
 
void Create (int width, int height, int depth, const std::vector< uint8_t > &data)
 Create a bitmap with the given dimensions and data.
 
void Create (int width, int height, int depth, int format, const std::vector< uint8_t > &data)
 Create a bitmap with the given dimensions, format, and data.
 
void Reformat (int format)
 Reformat the bitmap to use a different pixel format.
 
void CreateTexture ()
 Creates the underlying SDL_Texture to be displayed.
 
void UpdateTexture ()
 Updates the underlying SDL_Texture when it already exists.
 
void QueueTextureUpdate (IRenderer *renderer)
 Queue texture update for batch processing (improved performance)
 
void UpdateTextureData ()
 Updates the texture data from the surface.
 
void SetPalette (const SnesPalette &palette)
 Set the palette for the bitmap.
 
void SetPaletteWithTransparent (const SnesPalette &palette, size_t index, int length=7)
 Set the palette with a transparent color.
 
void ApplyStoredPalette ()
 Apply the stored palette to the surface (internal helper)
 
void SetPalette (const std::vector< SDL_Color > &palette)
 Set the palette using SDL colors.
 
void WriteToPixel (int position, uint8_t value)
 Write a value to a pixel at the given position.
 
void WriteColor (int position, const ImVec4 &color)
 Write a color to a pixel at the given position.
 
void SetPixel (int x, int y, const SnesColor &color)
 Set a pixel at the given x,y coordinates with SNES color.
 
void Resize (int new_width, int new_height)
 Resize the bitmap to new dimensions (preserves existing data)
 
void InvalidatePaletteCache ()
 Invalidate the palette lookup cache (call when palette changes)
 
uint8_t FindColorIndex (const SnesColor &color)
 Find color index in palette using optimized hash map lookup.
 
bool ValidateDataSurfaceSync ()
 Validate that bitmap data and surface pixels are synchronized.
 
void Get8x8Tile (int tile_index, int x, int y, std::vector< uint8_t > &tile_data, int &tile_data_offset)
 Extract an 8x8 tile from the bitmap (SNES standard tile size)
 
void Get16x16Tile (int tile_x, int tile_y, std::vector< uint8_t > &tile_data, int &tile_data_offset)
 Extract a 16x16 tile from the bitmap (SNES metatile size)
 
const SnesPalettepalette () const
 
SnesPalettemutable_palette ()
 
int width () const
 
int height () const
 
int depth () const
 
auto size () const
 
const uint8_tdata () const
 
std::vector< uint8_t > & mutable_data ()
 
SDL_Surfacesurface () const
 
TextureHandle texture () const
 
const std::vector< uint8_t > & vector () const
 
uint8_t at (int i) const
 
bool modified () const
 
bool is_active () const
 
void set_active (bool active)
 
void set_data (const std::vector< uint8_t > &data)
 
void set_modified (bool modified)
 
void set_texture (TextureHandle texture)
 

Static Private Member Functions

static uint32_t HashColor (const ImVec4 &color)
 Hash a color for cache lookup.
 

Private Attributes

int width_ = 0
 
int height_ = 0
 
int depth_ = 0
 
bool active_ = false
 
bool modified_ = false
 
voidtexture_pixels = nullptr
 
uint8_tpixel_data_ = nullptr
 
gfx::SnesPalette palette_
 
std::vector< uint8_tdata_
 
SDL_Surfacesurface_ = nullptr
 
TextureHandle texture_ = nullptr
 
std::unordered_map< uint32_t, uint8_tcolor_to_index_cache_
 
struct yaze::gfx::Bitmap::DirtyRegion dirty_region_
 

Detailed Description

Represents a bitmap image optimized for SNES ROM hacking.

The Bitmap class provides functionality to create, manipulate, and display bitmap images specifically designed for Link to the Past ROM editing. It supports:

Key Features:

  • SNES-specific pixel formats (4BPP, 8BPP, indexed)
  • Palette management with transparent color support
  • Tile extraction (8x8, 16x16) for ROM tile editing
  • Memory-efficient surface/texture management via Arena
  • Real-time editing with immediate visual feedback

Performance Optimizations:

  • Lazy texture creation (textures only created when needed)
  • Modified flag tracking to avoid unnecessary updates
  • Arena-based resource pooling to reduce allocation overhead
  • Direct pixel data manipulation for fast editing operations

ROM Hacking Specific:

  • SNES color format conversion (15-bit RGB to 8-bit indexed)
  • Tile-based editing for 8x8 and 16x16 SNES tiles
  • Palette index management for ROM palette editing
  • Support for multiple graphics sheets (223 total in YAZE)

Definition at line 66 of file bitmap.h.

Constructor & Destructor Documentation

◆ Bitmap() [1/5]

yaze::gfx::Bitmap::Bitmap ( )
default

◆ Bitmap() [2/5]

yaze::gfx::Bitmap::Bitmap ( int  width,
int  height,
int  depth,
const std::vector< uint8_t > &  data 
)

Create a bitmap with the given dimensions and raw pixel data.

Parameters
widthWidth in pixels (typically 128, 256, or 512 for SNES tilesheets)
heightHeight in pixels (typically 32, 64, or 128 for SNES tilesheets)
depthColor depth in bits per pixel (4, 8, or 16 for SNES)
dataRaw pixel data (indexed color values for SNES graphics)

Definition at line 47 of file bitmap.cc.

References Create(), data(), depth(), height(), and width().

◆ Bitmap() [3/5]

yaze::gfx::Bitmap::Bitmap ( int  width,
int  height,
int  depth,
const std::vector< uint8_t > &  data,
const SnesPalette palette 
)

Create a bitmap with the given dimensions, data, and SNES palette.

Parameters
widthWidth in pixels
heightHeight in pixels
depthColor depth in bits per pixel
dataRaw pixel data (indexed color values)
paletteSNES palette for color mapping (15-bit RGB format)

Definition at line 53 of file bitmap.cc.

References Create(), data(), depth(), height(), palette(), SetPalette(), and width().

◆ Bitmap() [4/5]

yaze::gfx::Bitmap::Bitmap ( const Bitmap other)

Copy constructor - creates a deep copy.

Definition at line 64 of file bitmap.cc.

References active_, yaze::gfx::Arena::AllocateSurface(), data_, depth_, yaze::gfx::Arena::Get(), yaze::gfx::GetSnesPixelFormat(), height_, yaze::gfx::kIndexed, pixel_data_, surface_, vector(), and width_.

Here is the call graph for this function:

◆ Bitmap() [5/5]

yaze::gfx::Bitmap::Bitmap ( Bitmap &&  other)
noexcept

Move constructor.

Definition at line 110 of file bitmap.cc.

◆ ~Bitmap()

yaze::gfx::Bitmap::~Bitmap ( )
default

Destructor.

Member Function Documentation

◆ operator=() [1/2]

Copy assignment operator.

Definition at line 85 of file bitmap.cc.

References active_, yaze::gfx::Arena::AllocateSurface(), data_, depth_, yaze::gfx::Arena::Get(), yaze::gfx::GetSnesPixelFormat(), height_, yaze::gfx::kIndexed, modified_, palette_, pixel_data_, surface_, vector(), and width_.

Here is the call graph for this function:

◆ operator=() [2/2]

Bitmap & yaze::gfx::Bitmap::operator= ( Bitmap &&  other)
noexcept

Move assignment operator.

Definition at line 134 of file bitmap.cc.

References width_.

◆ Create() [1/3]

void yaze::gfx::Bitmap::Create ( int  width,
int  height,
int  depth,
std::span< uint8_t data 
)

◆ Create() [2/3]

void yaze::gfx::Bitmap::Create ( int  width,
int  height,
int  depth,
const std::vector< uint8_t > &  data 
)

Create a bitmap with the given dimensions and data.

Definition at line 167 of file bitmap.cc.

References Create(), data(), depth(), height(), yaze::gfx::kIndexed, and width().

◆ Create() [3/3]

void yaze::gfx::Bitmap::Create ( int  width,
int  height,
int  depth,
int  format,
const std::vector< uint8_t > &  data 
)

Create a bitmap with the given dimensions, format, and data.

Create a bitmap with specified format and data.

Parameters
widthWidth in pixels
heightHeight in pixels
depthColor depth in bits per pixel
formatPixel format (0=indexed, 1=4BPP, 2=8BPP)
dataRaw pixel data

Performance Notes:

  • Uses Arena for efficient surface allocation
  • Copies data to avoid external pointer dependencies
  • Validates data size against surface dimensions
  • Sets active flag for rendering pipeline

Definition at line 186 of file bitmap.cc.

References active_, yaze::gfx::Arena::AllocateSurface(), ApplyStoredPalette(), data(), data_, depth(), depth_, yaze::gfx::SnesPalette::empty(), yaze::gfx::Arena::Get(), yaze::gfx::GetSnesPixelFormat(), height(), height_, palette_, pixel_data_, surface_, vector(), width(), and width_.

◆ Reformat()

void yaze::gfx::Bitmap::Reformat ( int  format)

◆ CreateTexture()

void yaze::gfx::Bitmap::CreateTexture ( )

Creates the underlying SDL_Texture to be displayed.

Definition at line 242 of file bitmap.cc.

References yaze::gfx::Arena::CREATE, yaze::gfx::Arena::Get(), and yaze::gfx::Arena::QueueTextureCommand().

Referenced by yaze::gfx::AtlasRenderer::AddBitmapWithBppOptimization(), and yaze::gfx::RenderTilesBatch().

Here is the call graph for this function:

◆ UpdateTexture()

void yaze::gfx::Bitmap::UpdateTexture ( )

Updates the underlying SDL_Texture when it already exists.

Definition at line 246 of file bitmap.cc.

References yaze::gfx::Arena::Get(), yaze::gfx::Arena::QueueTextureCommand(), and yaze::gfx::Arena::UPDATE.

Referenced by yaze::gui::Canvas::ConvertBitmapFormat(), and yaze::gui::Canvas::UpdateColorPainter().

Here is the call graph for this function:

◆ QueueTextureUpdate()

void yaze::gfx::Bitmap::QueueTextureUpdate ( IRenderer renderer)

Queue texture update for batch processing (improved performance)

Parameters
rendererSDL renderer for texture operations
Note
Use this for better performance when multiple textures need updating

◆ UpdateTextureData()

void yaze::gfx::Bitmap::UpdateTextureData ( )

Updates the texture data from the surface.

◆ SetPalette() [1/2]

void yaze::gfx::Bitmap::SetPalette ( const SnesPalette palette)

◆ SetPaletteWithTransparent()

void yaze::gfx::Bitmap::SetPaletteWithTransparent ( const SnesPalette palette,
size_t  index,
int  length = 7 
)

Set the palette with a transparent color.

Definition at line 303 of file bitmap.cc.

References InvalidatePaletteCache(), palette(), palette_, yaze::gfx::SnesPalette::size(), surface_, and vector().

Referenced by yaze::gui::CanvasUtils::ApplyPaletteGroup(), yaze::gui::PaletteWidget::ApplyROMPalette(), and yaze::editor::Tile16Editor::PreviewPaletteChange().

Here is the call graph for this function:

◆ ApplyStoredPalette()

void yaze::gfx::Bitmap::ApplyStoredPalette ( )

Apply the stored palette to the surface (internal helper)

Definition at line 252 of file bitmap.cc.

References yaze::gfx::SnesPalette::empty(), InvalidatePaletteCache(), palette_, yaze::gfx::SnesPalette::size(), surface_, and vector().

Referenced by Create(), and SetPalette().

Here is the call graph for this function:

◆ SetPalette() [2/2]

void yaze::gfx::Bitmap::SetPalette ( const std::vector< SDL_Color > &  palette)

Set the palette using SDL colors.

Definition at line 366 of file bitmap.cc.

References palette(), yaze::gfx::SnesPalette::size(), surface_, and vector().

Here is the call graph for this function:

◆ WriteToPixel()

◆ WriteColor()

void yaze::gfx::Bitmap::WriteColor ( int  position,
const ImVec4 color 
)

Write a color to a pixel at the given position.

Definition at line 424 of file bitmap.cc.

References active_, yaze::gfx::ConvertRgbToSnes(), data_, modified_, pixel_data_, surface_, and vector().

Referenced by yaze::gui::Canvas::DrawTileOnBitmap().

Here is the call graph for this function:

◆ SetPixel()

void yaze::gfx::Bitmap::SetPixel ( int  x,
int  y,
const SnesColor color 
)

Set a pixel at the given x,y coordinates with SNES color.

Set a pixel at the given coordinates with SNES color.

Parameters
xX coordinate (0 to width-1)
yY coordinate (0 to height-1)
colorSNES color (15-bit RGB format)
Note
Automatically finds closest palette index and marks bitmap as modified
Parameters
xX coordinate (0 to width-1)
yY coordinate (0 to height-1)
colorSNES color (15-bit RGB format)

Performance Notes:

  • Bounds checking for safety
  • O(1) palette lookup using hash map cache (100x faster than linear search)
  • Dirty region tracking for efficient texture updates
  • Direct pixel data manipulation for speed

Optimizations Applied:

  • Hash map palette lookup instead of linear search
  • Dirty region tracking to minimize texture update area

Definition at line 519 of file bitmap.cc.

References yaze::gfx::Bitmap::DirtyRegion::AddPoint(), data_, dirty_region_, FindColorIndex(), height_, modified_, pixel_data_, surface_, vector(), and width_.

Referenced by yaze::cli::Tile16ProposalGenerator::GenerateDiff(), yaze::zelda3::DungeonObjectEditor::RenderLayerVisualization(), yaze::zelda3::DungeonObjectEditor::RenderSelectionHighlight(), and yaze::gfx::TEST_F().

Here is the call graph for this function:

◆ Resize()

void yaze::gfx::Bitmap::Resize ( int  new_width,
int  new_height 
)

Resize the bitmap to new dimensions (preserves existing data)

Parameters
new_widthNew width in pixels
new_heightNew height in pixels
Note
Expands with black pixels, crops excess data

Definition at line 547 of file bitmap.cc.

References active_, yaze::gfx::Arena::AllocateSurface(), data_, depth_, yaze::gfx::Arena::Get(), yaze::gfx::GetSnesPixelFormat(), height_, yaze::gfx::kIndexed, modified_, pixel_data_, surface_, vector(), and width_.

Here is the call graph for this function:

◆ InvalidatePaletteCache()

void yaze::gfx::Bitmap::InvalidatePaletteCache ( )

Invalidate the palette lookup cache (call when palette changes)

Note
This must be called whenever the palette is modified to maintain cache consistency
This must be called whenever the palette is modified to maintain cache consistency

Performance Notes:

  • Clears existing cache to force rebuild
  • Rebuilds cache with current palette colors
  • O(n) operation but only called when palette changes

Definition at line 617 of file bitmap.cc.

References color_to_index_cache_, HashColor(), palette_, yaze::gfx::SnesPalette::size(), and vector().

Referenced by ApplyStoredPalette(), and SetPaletteWithTransparent().

Here is the call graph for this function:

◆ FindColorIndex()

uint8_t yaze::gfx::Bitmap::FindColorIndex ( const SnesColor color)

Find color index in palette using optimized hash map lookup.

Parameters
colorSNES color to find index for
Returns
Palette index (0 if not found)
Note
O(1) lookup time vs O(n) linear search
Parameters
colorSNES color to find index for
Returns
Palette index (0 if not found)
Note
O(1) lookup time vs O(n) linear search

Performance Notes:

  • Hash map lookup for O(1) performance
  • 100x faster than linear search for large palettes
  • Falls back to index 0 if color not found

Definition at line 638 of file bitmap.cc.

References color_to_index_cache_, HashColor(), yaze::gfx::SnesColor::rgb(), and vector().

Referenced by SetPixel(), and yaze::gfx::TEST_F().

Here is the call graph for this function:

◆ ValidateDataSurfaceSync()

bool yaze::gfx::Bitmap::ValidateDataSurfaceSync ( )

Validate that bitmap data and surface pixels are synchronized.

Returns
true if synchronized, false if there are issues
Note
This method helps debug surface synchronization problems

Definition at line 665 of file bitmap.cc.

References data_, surface_, and vector().

Here is the call graph for this function:

◆ Get8x8Tile()

void yaze::gfx::Bitmap::Get8x8Tile ( int  tile_index,
int  x,
int  y,
std::vector< uint8_t > &  tile_data,
int tile_data_offset 
)

Extract an 8x8 tile from the bitmap (SNES standard tile size)

Parameters
tile_indexIndex of the tile in the tilesheet
xX offset within the tile (0-7)
yY offset within the tile (0-7)
tile_dataOutput buffer for tile pixel data (64 bytes for 8x8)
tile_data_offsetCurrent offset in tile_data buffer
Note
Used for ROM tile editing and tile extraction

Definition at line 468 of file bitmap.cc.

References data_, height_, vector(), and width_.

Here is the call graph for this function:

◆ Get16x16Tile()

void yaze::gfx::Bitmap::Get16x16Tile ( int  tile_x,
int  tile_y,
std::vector< uint8_t > &  tile_data,
int tile_data_offset 
)

Extract a 16x16 tile from the bitmap (SNES metatile size)

Parameters
tile_xX coordinate of tile in tilesheet
tile_yY coordinate of tile in tilesheet
tile_dataOutput buffer for tile pixel data (256 bytes for 16x16)
tile_data_offsetCurrent offset in tile_data buffer
Note
Used for ROM metatile editing and large tile extraction

Definition at line 484 of file bitmap.cc.

References data_, vector(), and width_.

Referenced by yaze::gfx::UpdateTile16().

Here is the call graph for this function:

◆ palette()

◆ mutable_palette()

◆ width()

int yaze::gfx::Bitmap::width ( ) const
inline

Definition at line 253 of file bitmap.h.

References width_.

Referenced by yaze::gfx::AtlasRenderer::AddBitmap(), yaze::gfx::AtlasRenderer::AddBitmapWithBppOptimization(), Bitmap(), Bitmap(), yaze::gui::BppComparisonTool::CalculateMetrics(), yaze::editor::Tile16Editor::CommitChangesToOverworld(), yaze::gfx::anonymous_namespace{tilemap.cc}::ComposeAndPlaceTilePart(), yaze::gfx::ComposeTile16(), yaze::gui::Canvas::ConvertBitmapFormat(), Create(), Create(), Create(), yaze::gfx::BackgroundBuffer::DrawBackground(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmapGroup(), yaze::gui::DrawBitmapViewer(), yaze::gfx::BackgroundBuffer::DrawFloor(), yaze::gui::Canvas::DrawTilemapPainter(), yaze::gui::canvas::CanvasInteractionHandler::DrawTilemapPainter(), yaze::gui::Canvas::DrawTileOnBitmap(), yaze::zelda3::ObjectDrawer::DrawTileToBitmap(), yaze::gui::BppComparisonTool::GenerateComparisons(), yaze::gui::Canvas::GetCurrentBppFormat(), yaze::gfx::GetTilemapData(), yaze::editor::Tile16Editor::Initialize(), yaze::editor::Tile16Editor::LoadTile8(), yaze::gfx::ModifyTile16(), yaze::gfx::AtlasRenderer::PackBitmap(), yaze::gfx::TextureAtlas::PackBitmap(), yaze::gui::canvas::CanvasModals::RenderAdvancedPropertiesModal(), yaze::gui::BppFormatUI::RenderAnalysisPanel(), yaze::gui::canvas::CanvasContextMenu::RenderBitmapOperationsMenu(), yaze::gui::BppFormatUI::RenderConversionPreview(), yaze::gui::BppFormatUI::RenderFormatSelector(), yaze::zelda3::DungeonObjectEditor::RenderLayerVisualization(), yaze::gui::canvas::CanvasModals::RenderScalingControlsModal(), yaze::zelda3::DungeonObjectEditor::RenderSelectionHighlight(), yaze::gfx::RenderTile16(), yaze::editor::Tile16Editor::SetCurrentTile(), yaze::gui::Canvas::SetZoomToFit(), yaze::gui::Canvas::ShowAdvancedCanvasProperties(), yaze::gui::PaletteWidget::ShowColorAnalysis(), yaze::gui::Canvas::ShowScalingControls(), yaze::gui::TableCanvasPipeline(), yaze::gfx::AtlasRenderer::UpdateBitmap(), yaze::editor::Tile16Editor::UpdateBlocksetBitmap(), yaze::editor::Tile16Editor::UpdateOverworldTilemap(), yaze::gui::BppConversionDialog::UpdatePreview(), yaze::gfx::UpdateTile16(), and yaze::editor::Tile16Editor::UpdateTile16Edit().

◆ height()

int yaze::gfx::Bitmap::height ( ) const
inline

Definition at line 254 of file bitmap.h.

References height_.

Referenced by yaze::gfx::AtlasRenderer::AddBitmap(), yaze::gfx::AtlasRenderer::AddBitmapWithBppOptimization(), Bitmap(), Bitmap(), yaze::gui::BppComparisonTool::CalculateMetrics(), yaze::gui::Canvas::ConvertBitmapFormat(), Create(), Create(), Create(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmapGroup(), yaze::gui::DrawBitmapViewer(), yaze::gfx::BackgroundBuffer::DrawFloor(), yaze::gui::Canvas::DrawTilemapPainter(), yaze::gui::canvas::CanvasInteractionHandler::DrawTilemapPainter(), yaze::zelda3::ObjectDrawer::DrawTileToBitmap(), yaze::gui::BppComparisonTool::GenerateComparisons(), yaze::gui::Canvas::GetCurrentBppFormat(), yaze::gfx::GetTilemapData(), yaze::editor::Tile16Editor::Initialize(), yaze::editor::Tile16Editor::LoadTile8(), yaze::gfx::AtlasRenderer::PackBitmap(), yaze::gfx::TextureAtlas::PackBitmap(), yaze::gui::canvas::CanvasModals::RenderAdvancedPropertiesModal(), yaze::gui::BppFormatUI::RenderAnalysisPanel(), yaze::gui::canvas::CanvasContextMenu::RenderBitmapOperationsMenu(), yaze::gui::BppFormatUI::RenderConversionPreview(), yaze::gui::BppFormatUI::RenderFormatSelector(), yaze::zelda3::DungeonObjectEditor::RenderLayerVisualization(), yaze::gui::canvas::CanvasModals::RenderScalingControlsModal(), yaze::zelda3::DungeonObjectEditor::RenderSelectionHighlight(), yaze::gfx::RenderTile16(), yaze::gui::Canvas::SetZoomToFit(), yaze::gui::Canvas::ShowAdvancedCanvasProperties(), yaze::gui::PaletteWidget::ShowColorAnalysis(), yaze::gui::Canvas::ShowScalingControls(), yaze::gui::TableCanvasPipeline(), yaze::gfx::AtlasRenderer::UpdateBitmap(), and yaze::gui::BppConversionDialog::UpdatePreview().

◆ depth()

◆ size()

◆ data()

◆ mutable_data()

◆ surface()

◆ texture()

◆ vector()

◆ at()

uint8_t yaze::gfx::Bitmap::at ( int  i) const
inline

Definition at line 262 of file bitmap.h.

References data_.

◆ modified()

bool yaze::gfx::Bitmap::modified ( ) const
inline

Definition at line 263 of file bitmap.h.

References modified_.

Referenced by yaze::editor::Tile16Editor::CommitChangesToBlockset(), and set_modified().

◆ is_active()

bool yaze::gfx::Bitmap::is_active ( ) const
inline

Definition at line 264 of file bitmap.h.

References active_.

Referenced by yaze::gfx::AtlasRenderer::AddBitmap(), yaze::gfx::AtlasRenderer::AddBitmapWithBppOptimization(), yaze::editor::OverworldEditor::CheckForCurrentMap(), yaze::editor::Tile16Editor::ClearTile16(), yaze::editor::Tile16Editor::CommitChangesToOverworld(), yaze::gfx::CreateTilemap(), yaze::gfx::BackgroundBuffer::DrawBackground(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawBitmapGroup(), yaze::gfx::BackgroundBuffer::DrawFloor(), yaze::editor::MessageEditor::DrawMessagePreview(), yaze::editor::OverworldEditor::DrawOverworldEdits(), yaze::editor::OverworldEditor::DrawTile16Selector(), yaze::gui::Canvas::DrawTilemapPainter(), yaze::gui::canvas::CanvasInteractionHandler::DrawTilemapPainter(), yaze::gui::Canvas::DrawTilePainter(), yaze::gui::canvas::CanvasInteractionHandler::DrawTilePainter(), yaze::zelda3::ObjectDrawer::DrawTileToBitmap(), yaze::editor::Tile16Editor::DrawToCurrentTile16(), yaze::editor::Tile16Editor::FlipTile16Horizontal(), yaze::editor::Tile16Editor::FlipTile16Vertical(), yaze::gfx::GetTilemapData(), yaze::editor::OverworldEditor::LoadGraphics(), yaze::editor::Tile16Editor::LoadTile8(), yaze::gfx::TextureAtlas::PackBitmap(), yaze::editor::Tile16Editor::PreviewPaletteChange(), yaze::editor::Tile16Editor::RefreshAllPalettes(), yaze::editor::OverworldEditor::RefreshTile16Blockset(), yaze::gui::TileSelectorWidget::Render(), yaze::gfx::RenderTile(), yaze::gfx::RenderTile16(), yaze::gfx::RenderTilesBatch(), yaze::editor::OverworldEditor::RenderUpdatedMapBitmap(), yaze::editor::Tile16Editor::RotateTile16(), yaze::editor::Tile16Editor::SaveTile16ToROM(), yaze::editor::Tile16Editor::SaveUndoState(), yaze::editor::Tile16Editor::set_palette(), yaze::gui::Canvas::SetZoomToFit(), yaze::gui::PaletteWidget::ShowColorAnalysis(), yaze::gui::TableCanvasPipeline(), yaze::editor::Tile16Editor::UpdateBlocksetBitmap(), yaze::editor::Tile16Editor::UpdateOverworldTilemap(), yaze::gfx::UpdateTile16(), yaze::editor::Tile16Editor::UpdateTile16Edit(), and yaze::gfx::UpdateTilemap().

◆ set_active()

void yaze::gfx::Bitmap::set_active ( bool  active)
inline

Definition at line 265 of file bitmap.h.

References active_.

◆ set_data()

void yaze::gfx::Bitmap::set_data ( const std::vector< uint8_t > &  data)

◆ set_modified()

◆ set_texture()

void yaze::gfx::Bitmap::set_texture ( TextureHandle  texture)
inline

Definition at line 268 of file bitmap.h.

References texture(), and texture_.

Here is the call graph for this function:

◆ HashColor()

uint32_t yaze::gfx::Bitmap::HashColor ( const ImVec4 color)
staticprivate

Hash a color for cache lookup.

Parameters
colorImVec4 color to hash
Returns
32-bit hash value
Parameters
colorImVec4 color to hash
Returns
32-bit hash value

Performance Notes:

  • Simple hash combining RGBA components
  • Fast integer operations for cache key generation
  • Collision-resistant for typical SNES palette sizes

Definition at line 597 of file bitmap.cc.

References vector().

Referenced by FindColorIndex(), and InvalidatePaletteCache().

Here is the call graph for this function:

Member Data Documentation

◆ width_

int yaze::gfx::Bitmap::width_ = 0
private

◆ height_

int yaze::gfx::Bitmap::height_ = 0
private

Definition at line 273 of file bitmap.h.

Referenced by Bitmap(), Create(), Get8x8Tile(), height(), operator=(), Reformat(), Resize(), and SetPixel().

◆ depth_

int yaze::gfx::Bitmap::depth_ = 0
private

Definition at line 274 of file bitmap.h.

Referenced by Bitmap(), Create(), depth(), operator=(), Reformat(), and Resize().

◆ active_

bool yaze::gfx::Bitmap::active_ = false
private

◆ modified_

bool yaze::gfx::Bitmap::modified_ = false
private

◆ texture_pixels

void* yaze::gfx::Bitmap::texture_pixels = nullptr
private

Definition at line 280 of file bitmap.h.

◆ pixel_data_

uint8_t* yaze::gfx::Bitmap::pixel_data_ = nullptr
private

◆ palette_

◆ data_

◆ surface_

◆ texture_

TextureHandle yaze::gfx::Bitmap::texture_ = nullptr
private

Definition at line 295 of file bitmap.h.

Referenced by set_texture(), and texture().

◆ color_to_index_cache_

std::unordered_map<uint32_t, uint8_t> yaze::gfx::Bitmap::color_to_index_cache_
private

Definition at line 298 of file bitmap.h.

Referenced by FindColorIndex(), and InvalidatePaletteCache().

◆ dirty_region_

struct yaze::gfx::Bitmap::DirtyRegion yaze::gfx::Bitmap::dirty_region_
private

Referenced by SetPixel().


The documentation for this class was generated from the following files: