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
23 public:
28 bool has_selection = false;
29 std::vector<ImVec2> selected_tiles;
30 ImVec2 selection_start = {0, 0};
31 ImVec2 selection_end = {0, 0};
32 };
33
37 struct Dimensions {
38 int width_tiles = 0;
39 int height_tiles = 0;
40 int tile_size = 16;
41 };
42
47 int min_x = 0;
48 int min_y = 0;
49 int max_x = 0;
50 int max_y = 0;
51 };
52
53 explicit CanvasAutomationAPI(Canvas* canvas);
54
55 // ============================================================================
56 // Tile Operations
57 // ============================================================================
58
66 bool SetTileAt(int x, int y, int tile_id);
67
74 int GetTileAt(int x, int y) const;
75
81 bool SetTiles(const std::vector<std::tuple<int, int, int>>& tiles);
82
83 // ============================================================================
84 // Selection Operations
85 // ============================================================================
86
92 void SelectTile(int x, int y);
93
101 void SelectTileRect(int x1, int y1, int x2, int y2);
102
108
112 void ClearSelection();
113
114 // ============================================================================
115 // View Operations
116 // ============================================================================
117
124 void ScrollToTile(int x, int y, bool center = false);
125
131 void CenterOn(int x, int y);
132
137 void SetZoom(float zoom);
138
143 float GetZoom() const;
144
145 // ============================================================================
146 // Query Operations
147 // ============================================================================
148
154
160
167 bool IsTileVisible(int x, int y) const;
168
175 bool IsInBounds(int x, int y) const;
176
177 // ============================================================================
178 // Coordinate Conversion
179 // ============================================================================
180
187 ImVec2 TileToCanvas(int x, int y) const;
188
194 ImVec2 CanvasToTile(ImVec2 canvas_pos) const;
195
196 // ============================================================================
197 // Callback Registration (for external integrations)
198 // ============================================================================
199
204 using TilePaintCallback = std::function<bool(int x, int y, int tile_id)>;
206
211 using TileQueryCallback = std::function<int(int x, int y)>;
213
214 private:
218};
219
220} // namespace gui
221} // namespace yaze
222
223#endif // YAZE_APP_GUI_CANVAS_CANVAS_AUTOMATION_API_H
224
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:54
Main namespace for the application.
Canvas dimensions in logical tile units.
Selection state returned by GetSelection().
Visible region in logical tile coordinates.