yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
canvas_automation_api.h
Go to the documentation of this file.
1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_AUTOMATION_API_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_AUTOMATION_API_H
3
4#include <functional>
5#include <tuple>
6#include <vector>
7
8#include "imgui/imgui.h"
9
10namespace yaze {
11namespace gui {
12
13// Forward declaration
14class Canvas;
15
24 public:
29 bool has_selection = false;
30 std::vector<ImVec2> selected_tiles;
31 ImVec2 selection_start = {0, 0};
32 ImVec2 selection_end = {0, 0};
33 };
34
38 struct Dimensions {
39 int width_tiles = 0;
40 int height_tiles = 0;
41 int tile_size = 16;
42 };
43
48 int min_x = 0;
49 int min_y = 0;
50 int max_x = 0;
51 int max_y = 0;
52 };
53
54 explicit CanvasAutomationAPI(Canvas* canvas);
55
56 // ============================================================================
57 // Tile Operations
58 // ============================================================================
59
67 bool SetTileAt(int x, int y, int tile_id);
68
75 int GetTileAt(int x, int y) const;
76
82 bool SetTiles(const std::vector<std::tuple<int, int, int>>& tiles);
83
84 // ============================================================================
85 // Selection Operations
86 // ============================================================================
87
93 void SelectTile(int x, int y);
94
102 void SelectTileRect(int x1, int y1, int x2, int y2);
103
109
113 void ClearSelection();
114
115 // ============================================================================
116 // View Operations
117 // ============================================================================
118
125 void ScrollToTile(int x, int y, bool center = false);
126
132 void CenterOn(int x, int y);
133
138 void SetZoom(float zoom);
139
144 float GetZoom() const;
145
146 // ============================================================================
147 // Query Operations
148 // ============================================================================
149
155
161
168 bool IsTileVisible(int x, int y) const;
169
176 bool IsInBounds(int x, int y) const;
177
178 // ============================================================================
179 // Coordinate Conversion
180 // ============================================================================
181
188 ImVec2 TileToCanvas(int x, int y) const;
189
195 ImVec2 CanvasToTile(ImVec2 canvas_pos) const;
196
197 // ============================================================================
198 // Callback Registration (for external integrations)
199 // ============================================================================
200
205 using TilePaintCallback = std::function<bool(int x, int y, int tile_id)>;
207
212 using TileQueryCallback = std::function<int(int x, int y)>;
214
215 private:
219};
220
221} // namespace gui
222} // namespace yaze
223
224#endif // YAZE_APP_GUI_CANVAS_CANVAS_AUTOMATION_API_H
Programmatic interface for controlling canvas operations.
bool IsTileVisible(int x, int y) const
Check if a tile is currently visible.
void SetTileQueryCallback(TileQueryCallback callback)
void SetTilePaintCallback(TilePaintCallback callback)
bool IsInBounds(int x, int y) const
Check if coordinates are within canvas bounds.
bool SetTileAt(int x, int y, int tile_id)
Paint a single tile at logical coordinates.
std::function< bool(int x, int y, int tile_id)> TilePaintCallback
Set callback for tile painting operations. Allows external systems (CLI, AI agents) to implement cust...
void ClearSelection()
Clear current selection.
void SetZoom(float zoom)
Set canvas zoom level.
void SelectTileRect(int x1, int y1, int x2, int y2)
Select a rectangular region of tiles.
VisibleRegion GetVisibleRegion() const
Get currently visible tile region.
Dimensions GetDimensions() const
Get canvas dimensions in logical tile units.
SelectionState GetSelection() const
Query current selection state.
void CenterOn(int x, int y)
Center canvas view on a specific tile.
ImVec2 CanvasToTile(ImVec2 canvas_pos) const
Convert canvas pixel coordinates to logical tile coordinates.
float GetZoom() const
Get current zoom level.
bool SetTiles(const std::vector< std::tuple< int, int, int > > &tiles)
Paint multiple tiles in a batch operation.
ImVec2 TileToCanvas(int x, int y) const
Convert logical tile coordinates to canvas pixel coordinates.
std::function< int(int x, int y)> TileQueryCallback
Set callback for tile querying operations. Allows external systems to provide tile data.
void SelectTile(int x, int y)
Select a single tile.
int GetTileAt(int x, int y) const
Query tile ID at logical coordinates.
void ScrollToTile(int x, int y, bool center=false)
Scroll canvas to make tile visible.
Modern, robust canvas for drawing and manipulating graphics.
Definition canvas.h:150
Canvas dimensions in logical tile units.
Selection state returned by GetSelection().
Visible region in logical tile coordinates.