Reusable tile selector built on top of Canvas. More...
#include <tile_selector_widget.h>

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 | |
| Canvas * | canvas_ = 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 |
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.
|
strong |
| Enumerator | |
|---|---|
| kSuccess | |
| kInvalidFormat | |
| kOutOfRange | |
Definition at line 42 of file tile_selector_widget.h.
|
explicit |
Definition at line 67 of file tile_selector_widget.cc.
| yaze::gui::TileSelectorWidget::TileSelectorWidget | ( | std::string | widget_id, |
| Config | config ) |
Definition at line 72 of file tile_selector_widget.cc.
| 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().
| 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().

| 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().

|
inline |
Definition at line 54 of file tile_selector_widget.h.
References selected_tile_id_.
Referenced by yaze::editor::Tile16Editor::UpdateBlockset().
|
inline |
Definition at line 55 of file tile_selector_widget.h.
References total_tiles_.
Referenced by DrawFilterBar().
| TileSelectorWidget::RenderResult yaze::gui::TileSelectorWidget::Render | ( | gfx::Bitmap & | atlas, |
| bool | atlas_ready ) |
Definition at line 99 of file tile_selector_widget.cc.
References canvas_, config_, yaze::gui::TileSelectorWidget::Config::display_scale, yaze::gui::TileSelectorWidget::Config::draw_offset, yaze::gui::Canvas::DrawBackground(), yaze::gui::Canvas::DrawBitmap(), yaze::gui::Canvas::DrawContextMenu(), yaze::gui::Canvas::DrawGrid(), DrawHighlight(), yaze::gui::Canvas::DrawOverlay(), DrawTileIdLabels(), HandleInteraction(), yaze::gfx::Bitmap::height(), yaze::gfx::Bitmap::is_active(), IsValidTileId(), pending_scroll_tile_id_, pending_scroll_use_imgui_, ResolveTileAtCursor(), yaze::gui::TileSelectorWidget::Config::show_hover_tooltip, yaze::gui::TileSelectorWidget::Config::show_tile_ids, yaze::gfx::Bitmap::texture(), yaze::gui::TileSelectorWidget::Config::tile_size, TileOrigin(), yaze::gui::TileSelectorWidget::Config::tiles_per_row, total_tiles_, and yaze::gfx::Bitmap::width().
Referenced by yaze::editor::Tile16Editor::UpdateBlockset().
| bool yaze::gui::TileSelectorWidget::DrawFilterBar | ( | ) |
Draw a compact filter/search bar above the tile grid. Returns true if the user jumped to a tile (selection + scroll triggered).
Definition at line 318 of file tile_selector_widget.cc.
References ClearRangeFilter(), filter_buf_, filter_max_buf_, filter_min_buf_, filter_out_of_range_, filter_range_active_, filter_range_error_, filter_range_max_, filter_range_min_, GetMaxTileId(), JumpToTileFromInput(), kInvalidFormat, kOutOfRange, kSuccess, last_jump_result_, ScrollToTile(), SetRangeFilter(), and widget_id_.
Referenced by yaze::editor::Tile16Editor::UpdateBlockset().
| TileSelectorWidget::JumpToTileResult yaze::gui::TileSelectorWidget::JumpToTileFromInput | ( | std::string_view | input | ) |
Parse a tile ID string and jump selection to that tile. Accepted forms:
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().

| 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().

| ImVec2 yaze::gui::TileSelectorWidget::TileOrigin | ( | int | tile_id | ) | const |
Definition at line 287 of file tile_selector_widget.cc.
References config_, yaze::gui::TileSelectorWidget::Config::display_scale, yaze::gui::TileSelectorWidget::Config::draw_offset, IsValidTileId(), yaze::gui::TileSelectorWidget::Config::tile_size, and yaze::gui::TileSelectorWidget::Config::tiles_per_row.
Referenced by Render().

|
inline |
Definition at line 74 of file tile_selector_widget.h.
References filter_range_active_.
|
inline |
Definition at line 75 of file tile_selector_widget.h.
References filter_range_min_.
|
inline |
Definition at line 76 of file tile_selector_widget.h.
References filter_range_max_.
| void yaze::gui::TileSelectorWidget::SetRangeFilter | ( | int | min_id, |
| int | max_id ) |
Definition at line 459 of file tile_selector_widget.cc.
References filter_range_active_, filter_range_error_, filter_range_max_, filter_range_min_, and total_tiles_.
Referenced by DrawFilterBar().
| void yaze::gui::TileSelectorWidget::ClearRangeFilter | ( | ) |
Definition at line 470 of file tile_selector_widget.cc.
References filter_out_of_range_, filter_range_active_, filter_range_error_, filter_range_max_, and filter_range_min_.
Referenced by DrawFilterBar().
|
private |
Definition at line 198 of file tile_selector_widget.cc.
References yaze::gui::BeginTileDragSource(), config_, yaze::gui::TileSelectorWidget::Config::drag_source_map_id, yaze::gui::TileSelectorWidget::Config::enable_drag, IsInFilterRange(), IsValidTileId(), ResolveTileAtCursor(), yaze::gui::TileSelectorWidget::RenderResult::selected_tile, selected_tile_id_, yaze::gui::TileSelectorWidget::RenderResult::selection_changed, yaze::gui::TileSelectorWidget::RenderResult::tile_clicked, yaze::gui::TileSelectorWidget::RenderResult::tile_double_clicked, and yaze::gui::TileSelectorWidget::RenderResult::tile_dragging.
Referenced by Render().

|
private |
Definition at line 232 of file tile_selector_widget.cc.
References canvas_, config_, yaze::gui::TileSelectorWidget::Config::draw_offset, yaze::gui::Canvas::scrolling(), yaze::gui::TileSelectorWidget::Config::tiles_per_row, and yaze::gui::Canvas::zero_point().
Referenced by HandleInteraction(), and Render().

|
private |
Definition at line 256 of file tile_selector_widget.cc.
References canvas_, config_, yaze::gui::TileSelectorWidget::Config::draw_offset, yaze::gui::Canvas::DrawOutlineWithColor(), yaze::gui::TileSelectorWidget::Config::highlight_color, IsValidTileId(), selected_tile_id_, and yaze::gui::TileSelectorWidget::Config::tiles_per_row.
Referenced by Render().

|
private |
Definition at line 272 of file tile_selector_widget.cc.
Referenced by Render().
|
private |
Definition at line 478 of file tile_selector_widget.cc.
References total_tiles_.
Referenced by DrawHighlight(), HandleInteraction(), JumpToTileFromInput(), Render(), ScrollToTile(), SetSelectedTile(), SetTileCount(), and TileOrigin().
|
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().
|
private |
Definition at line 88 of file tile_selector_widget.h.
Referenced by AttachCanvas(), DrawHighlight(), Render(), ResolveTileAtCursor(), and ScrollToTile().
|
private |
Definition at line 89 of file tile_selector_widget.h.
Referenced by DrawHighlight(), HandleInteraction(), Render(), ResolveTileAtCursor(), and TileOrigin().
|
private |
Definition at line 90 of file tile_selector_widget.h.
Referenced by DrawHighlight(), GetSelectedTileID(), HandleInteraction(), JumpToTileFromInput(), SetSelectedTile(), and SetTileCount().
|
private |
Definition at line 91 of file tile_selector_widget.h.
Referenced by GetMaxTileId(), IsValidTileId(), Render(), SetRangeFilter(), and SetTileCount().
|
private |
Definition at line 92 of file tile_selector_widget.h.
Referenced by DrawFilterBar().
|
mutableprivate |
Definition at line 96 of file tile_selector_widget.h.
Referenced by Render(), and ScrollToTile().
|
mutableprivate |
Definition at line 97 of file tile_selector_widget.h.
Referenced by Render(), and ScrollToTile().
|
private |
Definition at line 100 of file tile_selector_widget.h.
Referenced by DrawFilterBar().
|
private |
Definition at line 103 of file tile_selector_widget.h.
Referenced by ClearRangeFilter(), DrawFilterBar(), has_active_range_filter(), IsInFilterRange(), and SetRangeFilter().
|
private |
Definition at line 104 of file tile_selector_widget.h.
Referenced by ClearRangeFilter(), DrawFilterBar(), filter_range_min(), IsInFilterRange(), and SetRangeFilter().
|
private |
Definition at line 105 of file tile_selector_widget.h.
Referenced by ClearRangeFilter(), DrawFilterBar(), filter_range_max(), IsInFilterRange(), and SetRangeFilter().
|
private |
Definition at line 106 of file tile_selector_widget.h.
Referenced by DrawFilterBar().
|
private |
Definition at line 107 of file tile_selector_widget.h.
Referenced by DrawFilterBar().
|
private |
Definition at line 109 of file tile_selector_widget.h.
Referenced by ClearRangeFilter(), DrawFilterBar(), and SetRangeFilter().
|
private |
Definition at line 112 of file tile_selector_widget.h.
Referenced by ClearRangeFilter(), and DrawFilterBar().
|
private |
Definition at line 114 of file tile_selector_widget.h.
Referenced by DrawFilterBar(), JumpToTileFromInput(), SetSelectedTile(), and SetTileCount().