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

Reusable tile selector built on top of Canvas. More...

#include <tile_selector_widget.h>

Collaboration diagram for yaze::gui::TileSelectorWidget:

Classes

struct  Config
 
struct  RenderResult
 

Public Types

enum class  JumpToTileResult { kSuccess = 0 , kInvalidFormat , kOutOfRange }
 

Public Member Functions

 TileSelectorWidget (std::string widget_id)
 
 TileSelectorWidget (std::string widget_id, Config config)
 
void AttachCanvas (Canvas *canvas)
 
void SetTileCount (int total_tiles)
 
void SetSelectedTile (int tile_id)
 
int GetSelectedTileID () const
 
int GetMaxTileId () const
 
RenderResult Render (gfx::Bitmap &atlas, bool atlas_ready)
 
bool DrawFilterBar ()
 
JumpToTileResult JumpToTileFromInput (std::string_view input)
 
void ScrollToTile (int tile_id, bool use_imgui_scroll=true)
 
ImVec2 TileOrigin (int tile_id) const
 
bool has_active_range_filter () const
 
int filter_range_min () const
 
int filter_range_max () const
 
void SetRangeFilter (int min_id, int max_id)
 
void ClearRangeFilter ()
 

Private Member Functions

RenderResult HandleInteraction (int tile_display_size)
 
int ResolveTileAtCursor (int tile_display_size) const
 
void DrawHighlight (int tile_display_size) const
 
void DrawTileIdLabels (int tile_display_size) const
 
bool IsValidTileId (int tile_id) const
 
bool IsInFilterRange (int tile_id) const
 

Private Attributes

Canvascanvas_ = nullptr
 
Config config_ {}
 
int selected_tile_id_ = 0
 
int total_tiles_ = 0
 
std::string widget_id_
 
int pending_scroll_tile_id_ = -1
 
bool pending_scroll_use_imgui_ = true
 
char filter_buf_ [8] = {}
 
bool filter_range_active_ = false
 
int filter_range_min_ = 0
 
int filter_range_max_ = 0
 
char filter_min_buf_ [8] = {}
 
char filter_max_buf_ [8] = {}
 
bool filter_range_error_ = false
 
bool filter_out_of_range_ = false
 
JumpToTileResult last_jump_result_ = JumpToTileResult::kSuccess
 

Detailed Description

Reusable tile selector built on top of Canvas.

Minimal mutable state, designed for reuse across editors and automation.

Definition at line 19 of file tile_selector_widget.h.

Member Enumeration Documentation

◆ JumpToTileResult

Enumerator
kSuccess 
kInvalidFormat 
kOutOfRange 

Definition at line 42 of file tile_selector_widget.h.

Constructor & Destructor Documentation

◆ TileSelectorWidget() [1/2]

yaze::gui::TileSelectorWidget::TileSelectorWidget ( std::string widget_id)
explicit

Definition at line 67 of file tile_selector_widget.cc.

◆ TileSelectorWidget() [2/2]

yaze::gui::TileSelectorWidget::TileSelectorWidget ( std::string widget_id,
Config config )

Definition at line 72 of file tile_selector_widget.cc.

Member Function Documentation

◆ AttachCanvas()

void yaze::gui::TileSelectorWidget::AttachCanvas ( Canvas * canvas)

Definition at line 77 of file tile_selector_widget.cc.

References canvas_.

Referenced by yaze::editor::Tile16Editor::Initialize().

◆ SetTileCount()

void yaze::gui::TileSelectorWidget::SetTileCount ( int total_tiles)

Definition at line 81 of file tile_selector_widget.cc.

References IsValidTileId(), kOutOfRange, kSuccess, last_jump_result_, selected_tile_id_, and total_tiles_.

Referenced by yaze::editor::Tile16Editor::Initialize().

Here is the call graph for this function:

◆ SetSelectedTile()

void yaze::gui::TileSelectorWidget::SetSelectedTile ( int tile_id)

Definition at line 92 of file tile_selector_widget.cc.

References IsValidTileId(), kSuccess, last_jump_result_, and selected_tile_id_.

Referenced by yaze::editor::Tile16Editor::LoadLayoutFromScratch(), and yaze::editor::Tile16Editor::UpdateBlockset().

Here is the call graph for this function:

◆ GetSelectedTileID()

int yaze::gui::TileSelectorWidget::GetSelectedTileID ( ) const
inline

Definition at line 54 of file tile_selector_widget.h.

References selected_tile_id_.

Referenced by yaze::editor::Tile16Editor::UpdateBlockset().

◆ GetMaxTileId()

int yaze::gui::TileSelectorWidget::GetMaxTileId ( ) const
inline

Definition at line 55 of file tile_selector_widget.h.

References total_tiles_.

Referenced by DrawFilterBar().

◆ Render()

◆ DrawFilterBar()

bool yaze::gui::TileSelectorWidget::DrawFilterBar ( )

◆ JumpToTileFromInput()

TileSelectorWidget::JumpToTileResult yaze::gui::TileSelectorWidget::JumpToTileFromInput ( std::string_view input)

Parse a tile ID string and jump selection to that tile. Accepted forms:

  • Hex (default): "1A", "0x1A"
  • Decimal (explicit): "d:26" Returns a parse/result status for UI and automation.

Definition at line 299 of file tile_selector_widget.cc.

References IsValidTileId(), kInvalidFormat, kOutOfRange, kSuccess, last_jump_result_, ScrollToTile(), and selected_tile_id_.

Referenced by DrawFilterBar().

Here is the call graph for this function:

◆ ScrollToTile()

void yaze::gui::TileSelectorWidget::ScrollToTile ( int tile_id,
bool use_imgui_scroll = true )

Definition at line 276 of file tile_selector_widget.cc.

References canvas_, IsValidTileId(), pending_scroll_tile_id_, and pending_scroll_use_imgui_.

Referenced by DrawFilterBar(), and JumpToTileFromInput().

Here is the call graph for this function:

◆ TileOrigin()

ImVec2 yaze::gui::TileSelectorWidget::TileOrigin ( int tile_id) const

◆ has_active_range_filter()

bool yaze::gui::TileSelectorWidget::has_active_range_filter ( ) const
inline

Definition at line 74 of file tile_selector_widget.h.

References filter_range_active_.

◆ filter_range_min()

int yaze::gui::TileSelectorWidget::filter_range_min ( ) const
inline

Definition at line 75 of file tile_selector_widget.h.

References filter_range_min_.

◆ filter_range_max()

int yaze::gui::TileSelectorWidget::filter_range_max ( ) const
inline

Definition at line 76 of file tile_selector_widget.h.

References filter_range_max_.

◆ SetRangeFilter()

void yaze::gui::TileSelectorWidget::SetRangeFilter ( int min_id,
int max_id )

◆ ClearRangeFilter()

void yaze::gui::TileSelectorWidget::ClearRangeFilter ( )

◆ HandleInteraction()

◆ ResolveTileAtCursor()

int yaze::gui::TileSelectorWidget::ResolveTileAtCursor ( int tile_display_size) const
private

◆ DrawHighlight()

void yaze::gui::TileSelectorWidget::DrawHighlight ( int tile_display_size) const
private

◆ DrawTileIdLabels()

void yaze::gui::TileSelectorWidget::DrawTileIdLabels ( int tile_display_size) const
private

Definition at line 272 of file tile_selector_widget.cc.

Referenced by Render().

◆ IsValidTileId()

bool yaze::gui::TileSelectorWidget::IsValidTileId ( int tile_id) const
private

◆ IsInFilterRange()

bool yaze::gui::TileSelectorWidget::IsInFilterRange ( int tile_id) const
private

Definition at line 482 of file tile_selector_widget.cc.

References filter_range_active_, filter_range_max_, and filter_range_min_.

Referenced by HandleInteraction().

Member Data Documentation

◆ canvas_

Canvas* yaze::gui::TileSelectorWidget::canvas_ = nullptr
private

◆ config_

Config yaze::gui::TileSelectorWidget::config_ {}
private

◆ selected_tile_id_

int yaze::gui::TileSelectorWidget::selected_tile_id_ = 0
private

◆ total_tiles_

int yaze::gui::TileSelectorWidget::total_tiles_ = 0
private

◆ widget_id_

std::string yaze::gui::TileSelectorWidget::widget_id_
private

Definition at line 92 of file tile_selector_widget.h.

Referenced by DrawFilterBar().

◆ pending_scroll_tile_id_

int yaze::gui::TileSelectorWidget::pending_scroll_tile_id_ = -1
mutableprivate

Definition at line 96 of file tile_selector_widget.h.

Referenced by Render(), and ScrollToTile().

◆ pending_scroll_use_imgui_

bool yaze::gui::TileSelectorWidget::pending_scroll_use_imgui_ = true
mutableprivate

Definition at line 97 of file tile_selector_widget.h.

Referenced by Render(), and ScrollToTile().

◆ filter_buf_

char yaze::gui::TileSelectorWidget::filter_buf_[8] = {}
private

Definition at line 100 of file tile_selector_widget.h.

Referenced by DrawFilterBar().

◆ filter_range_active_

bool yaze::gui::TileSelectorWidget::filter_range_active_ = false
private

◆ filter_range_min_

int yaze::gui::TileSelectorWidget::filter_range_min_ = 0
private

◆ filter_range_max_

int yaze::gui::TileSelectorWidget::filter_range_max_ = 0
private

◆ filter_min_buf_

char yaze::gui::TileSelectorWidget::filter_min_buf_[8] = {}
private

Definition at line 106 of file tile_selector_widget.h.

Referenced by DrawFilterBar().

◆ filter_max_buf_

char yaze::gui::TileSelectorWidget::filter_max_buf_[8] = {}
private

Definition at line 107 of file tile_selector_widget.h.

Referenced by DrawFilterBar().

◆ filter_range_error_

bool yaze::gui::TileSelectorWidget::filter_range_error_ = false
private

Definition at line 109 of file tile_selector_widget.h.

Referenced by ClearRangeFilter(), DrawFilterBar(), and SetRangeFilter().

◆ filter_out_of_range_

bool yaze::gui::TileSelectorWidget::filter_out_of_range_ = false
private

Definition at line 112 of file tile_selector_widget.h.

Referenced by ClearRangeFilter(), and DrawFilterBar().

◆ last_jump_result_

JumpToTileResult yaze::gui::TileSelectorWidget::last_jump_result_ = JumpToTileResult::kSuccess
private

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