8 : config_(), total_tiles_(config_.total_tiles), widget_id_(std::move(widget_id)) {}
11 : config_(config), total_tiles_(config.total_tiles), widget_id_(std::move(widget_id)) {}
36 const int tile_display_size =
41 const ImVec2 content_size(
47 ImGui::SetCursorPos(ImVec2(0, 0));
48 ImGui::Dummy(content_size);
49 ImGui::SetCursorPos(ImVec2(0, 0));
56 const ImVec2 window_size = ImGui::GetWindowSize();
57 float scroll_x = target.x - (window_size.x / 2.0f) + (tile_display_size / 2.0f);
58 float scroll_y = target.y - (window_size.y / 2.0f) + (tile_display_size / 2.0f);
59 scroll_x = std::max(0.0f, scroll_x);
60 scroll_y = std::max(0.0f, scroll_y);
61 ImGui::SetScrollX(scroll_x);
62 ImGui::SetScrollY(scroll_y);
92 int tile_display_size) {
95 if (!ImGui::IsItemHovered()) {
99 const bool clicked = ImGui::IsMouseClicked(ImGuiMouseButton_Left);
100 const bool double_clicked =
101 ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left);
103 if (clicked || double_clicked) {
124 const ImVec2 screen_pos = ImGui::GetIO().MousePos;
132 if (local.x < 0.0f || local.y < 0.0f) {
136 const int column =
static_cast<int>(local.x / tile_display_size);
137 const int row =
static_cast<int>(local.y / tile_display_size);
154 tile_display_size, tile_display_size,
174 return ImVec2(-1, -1);
176 const int tile_display_size =
Represents a bitmap image optimized for SNES ROM hacking.
Modern, robust canvas for drawing and manipulating graphics.
void DrawBitmap(Bitmap &bitmap, int border_offset, float scale)
void DrawOutlineWithColor(int x, int y, int w, int h, ImVec4 color)
void DrawBackground(ImVec2 canvas_size=ImVec2(0, 0))
void DrawGrid(float grid_step=64.0f, int tile_id_offset=8)
Graphical User Interface (GUI) components for the application.