1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_H
8#include "imgui/imgui.h"
46 const CanvasGeometry& geometry,
49 ImDrawList* draw_list,
50 ImGuiMouseButton mouse_button = ImGuiMouseButton_Right);
64 const CanvasGeometry& geometry,
67 ImGuiMouseButton mouse_button = ImGuiMouseButton_Right);
86 const CanvasGeometry& geometry,
89 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
104 const CanvasGeometry& geometry,
105 const gfx::Bitmap& bitmap,
107 ImDrawList* draw_list,
108 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
123 const CanvasGeometry& geometry,
124 const gfx::Tilemap& tilemap,
126 ImDrawList* draw_list,
127 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
142HoverEvent
HandleHover(
const CanvasGeometry& geometry,
float tile_size);
156 const CanvasGeometry& geometry,
157 const HoverEvent& hover,
159 ImDrawList* draw_list,
160 ImU32 color = IM_COL32(255, 255, 255, 80));
177 const CanvasGeometry& geometry,
179 ImVec2 entity_position);
222ImVec2
CanvasToTileGrid(ImVec2 canvas_pos,
float tile_size,
float global_scale);
void RenderHoverPreview(const CanvasGeometry &geometry, const HoverEvent &hover, float tile_size, ImDrawList *draw_list, ImU32 color)
Render hover preview overlay.
TilePaintEvent HandleTilePaintWithPreview(const CanvasGeometry &geometry, const gfx::Bitmap &bitmap, float tile_size, ImDrawList *draw_list, ImGuiMouseButton mouse_button)
Handle tile painter with bitmap preview.
TileSelectionEvent HandleTileSelection(const CanvasGeometry &geometry, int current_map, float tile_size, ImGuiMouseButton mouse_button)
Handle single tile selection (right-click)
ImVec2 CanvasToTileGrid(ImVec2 canvas_pos, float tile_size, float global_scale)
Calculate tile grid indices from canvas position.
TilePaintEvent HandleTilePaint(const CanvasGeometry &geometry, int tile_id, float tile_size, ImGuiMouseButton mouse_button)
Handle tile painting interaction.
ImVec2 GetMouseInCanvasSpace(const CanvasGeometry &geometry)
Get mouse position in canvas space.
ImVec2 AlignToGrid(ImVec2 pos, float grid_step)
Align position to grid.
HoverEvent HandleHover(const CanvasGeometry &geometry, float tile_size)
Update hover state for canvas.
RectSelectionEvent HandleRectangleSelection(const CanvasGeometry &geometry, int current_map, float tile_size, ImDrawList *draw_list, ImGuiMouseButton mouse_button)
Handle rectangle selection interaction.
TilePaintEvent HandleTilemapPaint(const CanvasGeometry &geometry, const gfx::Tilemap &tilemap, int current_tile, ImDrawList *draw_list, ImGuiMouseButton mouse_button)
Handle tilemap painting interaction.
EntityInteractionEvent HandleEntityInteraction(const CanvasGeometry &geometry, int entity_id, ImVec2 entity_position)
Handle entity interaction (hover, click, drag)
bool IsMouseInCanvas(const CanvasGeometry &geometry)
Check if mouse is in canvas bounds.
Main namespace for the application.