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"
83 float global_scale,
float tile_size,
84 ImVec2 canvas_size,
bool is_hovered);
98 ImVec2 canvas_p0, ImVec2 scrolling,
float global_scale,
99 float tile_size,
bool is_hovered);
105 ImDrawList* draw_list, ImVec2 canvas_p0,
106 ImVec2 scrolling,
float global_scale,
bool is_hovered);
112 ImVec2 canvas_p0, ImVec2 scrolling,
113 float global_scale,
float tile_size,
bool is_hovered);
119 ImVec2 scrolling,
float tile_size,
bool is_hovered);
132 bool DrawSelectRect(
int current_map, ImDrawList* draw_list, ImVec2 canvas_p0,
133 ImVec2 scrolling,
float global_scale,
float tile_size,
Represents a bitmap image optimized for SNES ROM hacking.
Handles all tile-based interactions for Canvas.
ImVector< ImVec2 > hover_points_
const ImVector< ImVec2 > & GetSelectedPoints() const
Get selected points (for DrawOverlay)
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)
ImVector< ImVec2 > selected_points_
CanvasInteractionHandler()=default
void ClearState()
Clear all interaction state.
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)
const std::vector< ImVec2 > & GetSelectedTiles() const
Get selected tiles from last rectangle selection.
ImVec2 AlignPosToGrid(ImVec2 pos, float grid_step)
ImVec2 GetSelectedTilePosition() const
Get selected tile position (for single selection)
ImVec2 selected_tile_pos_
TileInteractionMode GetMode() const
void SetSelectedTilePosition(ImVec2 pos)
Set selected tile position.
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)
ImVec2 mouse_pos_in_canvas_
ImVec2 GetMousePositionInCanvas() const
Get current mouse position in canvas space.
bool DrawTileSelector(ImDrawList *draw_list, ImVec2 canvas_p0, ImVec2 scrolling, float tile_size, bool is_hovered)
Draw tile selector (single tile selection)
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.
const ImVector< ImVec2 > & GetHoverPoints() const
Get current hover points (for DrawOverlay)
bool IsMouseClicked(ImGuiMouseButton button)
bool IsMouseDragging(ImGuiMouseButton button)
void SetMode(TileInteractionMode mode)
Set the interaction mode.
bool IsMouseReleased(ImGuiMouseButton button)
ImVec2 GetDrawnTilePosition() const
Get last drawn tile position.
bool IsRectSelectActive() const
Check if rectangle selection is active.
bool IsMouseDoubleClicked(ImGuiMouseButton button)
std::vector< ImVec2 > selected_tiles_
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)
ImVec2 GetMousePosition(ImVec2 canvas_p0, ImVec2 scrolling)
void Initialize(const std::string &canvas_id)
Initialize the interaction handler.
TileInteractionMode current_mode_
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.
bool interaction_occurred
std::vector< ImVec2 > selected_tiles