1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_HANDLER_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_HANDLER_H
7#include "imgui/imgui.h"
84 float global_scale,
float tile_size,
85 ImVec2 canvas_size,
bool is_hovered);
99 ImVec2 canvas_p0, ImVec2 scrolling,
float global_scale,
100 float tile_size,
bool is_hovered);
106 ImDrawList* draw_list, ImVec2 canvas_p0,
107 ImVec2 scrolling,
float global_scale,
bool is_hovered);
113 ImVec2 canvas_p0, ImVec2 scrolling,
114 float global_scale,
float tile_size,
bool is_hovered);
120 ImVec2 scrolling,
float tile_size,
bool is_hovered);
133 bool DrawSelectRect(
int current_map, ImDrawList* draw_list, ImVec2 canvas_p0,
134 ImVec2 scrolling,
float global_scale,
float tile_size,
Represents a bitmap image optimized for SNES ROM hacking.
Handles all tile-based interactions for Canvas.
TileInteractionResult Update(ImVec2 canvas_p0, ImVec2 scrolling, float global_scale, float tile_size, ImVec2 canvas_size, bool is_hovered)
Update interaction state (call once per frame)
bool IsMouseReleased(ImGuiMouseButton button)
void SetSelectedTilePosition(ImVec2 pos)
Set selected tile position.
ImVec2 selected_tile_pos_
TileInteractionMode current_mode_
ImVec2 GetMousePosition(ImVec2 canvas_p0, ImVec2 scrolling)
ImVec2 mouse_pos_in_canvas_
bool IsRectSelectActive() const
Check if rectangle selection is active.
ImVec2 GetDrawnTilePosition() const
Get last drawn tile position.
bool DrawTilePainter(const gfx::Bitmap &bitmap, ImDrawList *draw_list, ImVec2 canvas_p0, ImVec2 scrolling, float global_scale, float tile_size, bool is_hovered)
Draw tile painter (preview + interaction)
bool IsMouseDoubleClicked(ImGuiMouseButton button)
ImVec2 AlignPosToGrid(ImVec2 pos, float grid_step)
bool DrawTilemapPainter(gfx::Tilemap &tilemap, int current_tile, ImDrawList *draw_list, ImVec2 canvas_p0, ImVec2 scrolling, float global_scale, bool is_hovered)
Draw tilemap painter (preview + interaction)
void SetMode(TileInteractionMode mode)
Set the interaction mode.
ImVec2 GetSelectedTilePosition() const
Get selected tile position (for single selection)
const ImVector< ImVec2 > & GetSelectedPoints() const
Get selected points (for DrawOverlay)
CanvasInteractionHandler()=default
const std::vector< ImVec2 > & GetSelectedTiles() const
Get selected tiles from last rectangle selection.
bool DrawSelectRect(int current_map, ImDrawList *draw_list, ImVec2 canvas_p0, ImVec2 scrolling, float global_scale, float tile_size, bool is_hovered)
Draw rectangle selector (multi-tile selection)
bool IsMouseClicked(ImGuiMouseButton button)
bool DrawSolidTilePainter(const ImVec4 &color, ImDrawList *draw_list, ImVec2 canvas_p0, ImVec2 scrolling, float global_scale, float tile_size, bool is_hovered)
Draw solid color painter.
void Initialize(const std::string &canvas_id)
Initialize the interaction handler.
void ClearState()
Clear all interaction state.
ImVector< ImVec2 > selected_points_
ImVec2 GetMousePositionInCanvas() const
Get current mouse position in canvas space.
bool IsMouseDragging(ImGuiMouseButton button)
bool DrawTileSelector(ImDrawList *draw_list, ImVec2 canvas_p0, ImVec2 scrolling, float tile_size, bool is_hovered)
Draw tile selector (single tile selection)
ImVector< ImVec2 > hover_points_
const ImVector< ImVec2 > & GetHoverPoints() const
Get current hover points (for DrawOverlay)
TileInteractionMode GetMode() const
std::vector< ImVec2 > selected_tiles_
TileInteractionMode
Tile interaction mode for canvas.
Main namespace for the application.
Tilemap structure for SNES tile-based graphics management.
Result of a tile interaction operation.
std::vector< ImVec2 > selected_tiles
bool interaction_occurred