yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
canvas_interaction.h
Go to the documentation of this file.
1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_H
3
8#include "imgui/imgui.h"
9
10namespace yaze {
11namespace gui {
12
28// ============================================================================
29// Rectangle Selection (Phase 2.1)
30// ============================================================================
31
45RectSelectionEvent HandleRectangleSelection(
46 const CanvasGeometry& geometry,
47 int current_map,
48 float tile_size,
49 ImDrawList* draw_list,
50 ImGuiMouseButton mouse_button = ImGuiMouseButton_Right);
51
63TileSelectionEvent HandleTileSelection(
64 const CanvasGeometry& geometry,
65 int current_map,
66 float tile_size,
67 ImGuiMouseButton mouse_button = ImGuiMouseButton_Right);
68
69// ============================================================================
70// Tile Painting (Phase 2.2)
71// ============================================================================
72
85TilePaintEvent HandleTilePaint(
86 const CanvasGeometry& geometry,
87 int tile_id,
88 float tile_size,
89 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
90
103TilePaintEvent HandleTilePaintWithPreview(
104 const CanvasGeometry& geometry,
105 const gfx::Bitmap& bitmap,
106 float tile_size,
107 ImDrawList* draw_list,
108 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
109
122TilePaintEvent HandleTilemapPaint(
123 const CanvasGeometry& geometry,
124 const gfx::Tilemap& tilemap,
125 int current_tile,
126 ImDrawList* draw_list,
127 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
128
129// ============================================================================
130// Hover and Preview (Phase 2.3)
131// ============================================================================
132
142HoverEvent HandleHover(const CanvasGeometry& geometry, float tile_size);
143
156 const CanvasGeometry& geometry,
157 const HoverEvent& hover,
158 float tile_size,
159 ImDrawList* draw_list,
160 ImU32 color = IM_COL32(255, 255, 255, 80));
161
162// ============================================================================
163// Entity Interaction (Phase 2.4 - Future)
164// ============================================================================
165
176EntityInteractionEvent HandleEntityInteraction(
177 const CanvasGeometry& geometry,
178 int entity_id,
179 ImVec2 entity_position);
180
181// ============================================================================
182// Helper Functions
183// ============================================================================
184
194ImVec2 AlignToGrid(ImVec2 pos, float grid_step);
195
204ImVec2 GetMouseInCanvasSpace(const CanvasGeometry& geometry);
205
212bool IsMouseInCanvas(const CanvasGeometry& geometry);
213
222ImVec2 CanvasToTileGrid(ImVec2 canvas_pos, float tile_size, float global_scale);
223
224} // namespace gui
225} // namespace yaze
226
227#endif // YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_H
228
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.
Definition controller.cc:20