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, int current_map, float tile_size,
47 ImDrawList* draw_list,
48 ImGuiMouseButton mouse_button = ImGuiMouseButton_Right);
49
61TileSelectionEvent HandleTileSelection(
62 const CanvasGeometry& geometry, int current_map, float tile_size,
63 ImGuiMouseButton mouse_button = ImGuiMouseButton_Right);
64
65// ============================================================================
66// Tile Painting (Phase 2.2)
67// ============================================================================
68
81TilePaintEvent HandleTilePaint(
82 const CanvasGeometry& geometry, int tile_id, float tile_size,
83 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
84
97TilePaintEvent HandleTilePaintWithPreview(
98 const CanvasGeometry& geometry, const gfx::Bitmap& bitmap, float tile_size,
99 ImDrawList* draw_list,
100 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
101
114TilePaintEvent HandleTilemapPaint(
115 const CanvasGeometry& geometry, const gfx::Tilemap& tilemap,
116 int current_tile, ImDrawList* draw_list,
117 ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
118
119// ============================================================================
120// Hover and Preview (Phase 2.3)
121// ============================================================================
122
132HoverEvent HandleHover(const CanvasGeometry& geometry, float tile_size);
133
145void RenderHoverPreview(const CanvasGeometry& geometry, const HoverEvent& hover,
146 float tile_size, ImDrawList* draw_list,
147 ImU32 color = IM_COL32(255, 255, 255, 80));
148
149// ============================================================================
150// Entity Interaction (Phase 2.4 - Future)
151// ============================================================================
152
163EntityInteractionEvent HandleEntityInteraction(const CanvasGeometry& geometry,
164 int entity_id,
165 ImVec2 entity_position);
166
167// ============================================================================
168// Helper Functions
169// ============================================================================
170
180ImVec2 AlignToGrid(ImVec2 pos, float grid_step);
181
190ImVec2 GetMouseInCanvasSpace(const CanvasGeometry& geometry);
191
198bool IsMouseInCanvas(const CanvasGeometry& geometry);
199
208ImVec2 CanvasToTileGrid(ImVec2 canvas_pos, float tile_size, float global_scale);
209
210} // namespace gui
211} // namespace yaze
212
213#endif // YAZE_APP_GUI_CANVAS_CANVAS_INTERACTION_H
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.