Programmatic interface for controlling canvas operations. More...
#include <canvas_automation_api.h>
Classes | |
struct | Dimensions |
Canvas dimensions in logical tile units. More... | |
struct | SelectionState |
Selection state returned by GetSelection(). More... | |
struct | VisibleRegion |
Visible region in logical tile coordinates. More... | |
Public Types | |
using | TilePaintCallback = std::function< bool(int x, int y, int tile_id)> |
Set callback for tile painting operations. Allows external systems (CLI, AI agents) to implement custom tile logic. | |
using | TileQueryCallback = std::function< int(int x, int y)> |
Set callback for tile querying operations. Allows external systems to provide tile data. | |
Public Member Functions | |
CanvasAutomationAPI (Canvas *canvas) | |
bool | SetTileAt (int x, int y, int tile_id) |
Paint a single tile at logical coordinates. | |
int | GetTileAt (int x, int y) const |
Query tile ID at logical coordinates. | |
bool | SetTiles (const std::vector< std::tuple< int, int, int > > &tiles) |
Paint multiple tiles in a batch operation. | |
void | SelectTile (int x, int y) |
Select a single tile. | |
void | SelectTileRect (int x1, int y1, int x2, int y2) |
Select a rectangular region of tiles. | |
SelectionState | GetSelection () const |
Query current selection state. | |
void | ClearSelection () |
Clear current selection. | |
void | ScrollToTile (int x, int y, bool center=false) |
Scroll canvas to make tile visible. | |
void | CenterOn (int x, int y) |
Center canvas view on a specific tile. | |
void | SetZoom (float zoom) |
Set canvas zoom level. | |
float | GetZoom () const |
Get current zoom level. | |
Dimensions | GetDimensions () const |
Get canvas dimensions in logical tile units. | |
VisibleRegion | GetVisibleRegion () const |
Get currently visible tile region. | |
bool | IsTileVisible (int x, int y) const |
Check if a tile is currently visible. | |
bool | IsInBounds (int x, int y) const |
Check if coordinates are within canvas bounds. | |
ImVec2 | TileToCanvas (int x, int y) const |
Convert logical tile coordinates to canvas pixel coordinates. | |
ImVec2 | CanvasToTile (ImVec2 canvas_pos) const |
Convert canvas pixel coordinates to logical tile coordinates. | |
void | SetTilePaintCallback (TilePaintCallback callback) |
void | SetTileQueryCallback (TileQueryCallback callback) |
Private Attributes | |
Canvas * | canvas_ |
TilePaintCallback | tile_paint_callback_ |
TileQueryCallback | tile_query_callback_ |
Programmatic interface for controlling canvas operations.
Enables z3ed CLI, AI agents, GUI automation, and remote control via gRPC. All operations work with logical tile coordinates, independent of zoom/scroll.
Definition at line 22 of file canvas_automation_api.h.
using yaze::gui::CanvasAutomationAPI::TilePaintCallback = std::function<bool(int x, int y, int tile_id)> |
Set callback for tile painting operations. Allows external systems (CLI, AI agents) to implement custom tile logic.
Definition at line 204 of file canvas_automation_api.h.
using yaze::gui::CanvasAutomationAPI::TileQueryCallback = std::function<int(int x, int y)> |
Set callback for tile querying operations. Allows external systems to provide tile data.
Definition at line 211 of file canvas_automation_api.h.
|
explicit |
Definition at line 11 of file canvas_automation_api.cc.
bool yaze::gui::CanvasAutomationAPI::SetTileAt | ( | int | x, |
int | y, | ||
int | tile_id | ||
) |
Paint a single tile at logical coordinates.
x | Logical X coordinate (tile units) |
y | Logical Y coordinate (tile units) |
tile_id | Tile ID to paint |
Definition at line 17 of file canvas_automation_api.cc.
References canvas_, IsInBounds(), yaze::gui::Canvas::mutable_points(), tile_paint_callback_, and TileToCanvas().
Referenced by SetTiles().
int yaze::gui::CanvasAutomationAPI::GetTileAt | ( | int | x, |
int | y | ||
) | const |
Query tile ID at logical coordinates.
x | Logical X coordinate |
y | Logical Y coordinate |
Definition at line 33 of file canvas_automation_api.cc.
References IsInBounds(), and tile_query_callback_.
bool yaze::gui::CanvasAutomationAPI::SetTiles | ( | const std::vector< std::tuple< int, int, int > > & | tiles | ) |
Paint multiple tiles in a batch operation.
tiles | Vector of (x, y, tile_id) tuples |
Definition at line 46 of file canvas_automation_api.cc.
References SetTileAt().
void yaze::gui::CanvasAutomationAPI::SelectTile | ( | int | x, |
int | y | ||
) |
Select a single tile.
x | Logical X coordinate |
y | Logical Y coordinate |
Definition at line 61 of file canvas_automation_api.cc.
References canvas_, IsInBounds(), yaze::gui::Canvas::mutable_selected_points(), and TileToCanvas().
void yaze::gui::CanvasAutomationAPI::SelectTileRect | ( | int | x1, |
int | y1, | ||
int | x2, | ||
int | y2 | ||
) |
Select a rectangular region of tiles.
x1 | Top-left X coordinate (logical) |
y1 | Top-left Y coordinate (logical) |
x2 | Bottom-right X coordinate (logical) |
y2 | Bottom-right Y coordinate (logical) |
Definition at line 72 of file canvas_automation_api.cc.
References canvas_, IsInBounds(), yaze::gui::Canvas::mutable_selected_points(), and TileToCanvas().
CanvasAutomationAPI::SelectionState yaze::gui::CanvasAutomationAPI::GetSelection | ( | ) | const |
Query current selection state.
Definition at line 89 of file canvas_automation_api.cc.
References canvas_, CanvasToTile(), yaze::gui::CanvasAutomationAPI::SelectionState::has_selection, yaze::gui::Canvas::selected_points(), yaze::gui::CanvasAutomationAPI::SelectionState::selected_tiles, yaze::gui::CanvasAutomationAPI::SelectionState::selection_end, and yaze::gui::CanvasAutomationAPI::SelectionState::selection_start.
void yaze::gui::CanvasAutomationAPI::ClearSelection | ( | ) |
Clear current selection.
Definition at line 124 of file canvas_automation_api.cc.
References canvas_, and yaze::gui::Canvas::mutable_selected_points().
void yaze::gui::CanvasAutomationAPI::ScrollToTile | ( | int | x, |
int | y, | ||
bool | center = false |
||
) |
Scroll canvas to make tile visible.
x | Logical X coordinate |
y | Logical Y coordinate |
center | If true, center the tile; otherwise just ensure visibility |
Definition at line 132 of file canvas_automation_api.cc.
References canvas_, yaze::gui::Canvas::canvas_size(), CenterOn(), IsInBounds(), IsTileVisible(), yaze::gui::Canvas::scrolling(), yaze::gui::Canvas::set_scrolling(), and TileToCanvas().
void yaze::gui::CanvasAutomationAPI::CenterOn | ( | int | x, |
int | y | ||
) |
Center canvas view on a specific tile.
x | Logical X coordinate |
y | Logical Y coordinate |
Definition at line 161 of file canvas_automation_api.cc.
References canvas_, yaze::gui::Canvas::canvas_size(), IsInBounds(), yaze::gui::Canvas::set_scrolling(), and TileToCanvas().
Referenced by ScrollToTile().
void yaze::gui::CanvasAutomationAPI::SetZoom | ( | float | zoom | ) |
Set canvas zoom level.
zoom | Zoom factor (0.25 to 4.0, default 1.0) |
Definition at line 176 of file canvas_automation_api.cc.
References canvas_, and yaze::gui::Canvas::set_global_scale().
float yaze::gui::CanvasAutomationAPI::GetZoom | ( | ) | const |
Get current zoom level.
Definition at line 182 of file canvas_automation_api.cc.
References canvas_, and yaze::gui::Canvas::global_scale().
CanvasAutomationAPI::Dimensions yaze::gui::CanvasAutomationAPI::GetDimensions | ( | ) | const |
Get canvas dimensions in logical tile units.
Definition at line 190 of file canvas_automation_api.cc.
References canvas_, yaze::gui::Canvas::canvas_size(), yaze::gui::Canvas::global_scale(), yaze::gui::Canvas::grid_size(), yaze::gui::CanvasAutomationAPI::Dimensions::height_tiles, yaze::gui::k16x16, yaze::gui::k32x32, yaze::gui::k64x64, yaze::gui::k8x8, yaze::gui::CanvasAutomationAPI::Dimensions::tile_size, and yaze::gui::CanvasAutomationAPI::Dimensions::width_tiles.
Referenced by CanvasToTile(), GetVisibleRegion(), IsInBounds(), and TileToCanvas().
CanvasAutomationAPI::VisibleRegion yaze::gui::CanvasAutomationAPI::GetVisibleRegion | ( | ) | const |
Get currently visible tile region.
Definition at line 221 of file canvas_automation_api.cc.
References canvas_, yaze::gui::Canvas::canvas_size(), CanvasToTile(), GetDimensions(), yaze::gui::Canvas::global_scale(), yaze::gui::CanvasAutomationAPI::Dimensions::height_tiles, yaze::gui::CanvasAutomationAPI::VisibleRegion::max_x, yaze::gui::CanvasAutomationAPI::VisibleRegion::max_y, yaze::gui::CanvasAutomationAPI::VisibleRegion::min_x, yaze::gui::CanvasAutomationAPI::VisibleRegion::min_y, yaze::gui::Canvas::scrolling(), yaze::gui::CanvasAutomationAPI::Dimensions::tile_size, and yaze::gui::CanvasAutomationAPI::Dimensions::width_tiles.
Referenced by IsTileVisible().
bool yaze::gui::CanvasAutomationAPI::IsTileVisible | ( | int | x, |
int | y | ||
) | const |
Check if a tile is currently visible.
x | Logical X coordinate |
y | Logical Y coordinate |
Definition at line 246 of file canvas_automation_api.cc.
References GetVisibleRegion(), IsInBounds(), yaze::gui::CanvasAutomationAPI::VisibleRegion::max_x, yaze::gui::CanvasAutomationAPI::VisibleRegion::max_y, yaze::gui::CanvasAutomationAPI::VisibleRegion::min_x, and yaze::gui::CanvasAutomationAPI::VisibleRegion::min_y.
Referenced by ScrollToTile().
bool yaze::gui::CanvasAutomationAPI::IsInBounds | ( | int | x, |
int | y | ||
) | const |
Check if coordinates are within canvas bounds.
x | Logical X coordinate |
y | Logical Y coordinate |
Definition at line 256 of file canvas_automation_api.cc.
References GetDimensions(), yaze::gui::CanvasAutomationAPI::Dimensions::height_tiles, and yaze::gui::CanvasAutomationAPI::Dimensions::width_tiles.
Referenced by CenterOn(), GetTileAt(), IsTileVisible(), ScrollToTile(), SelectTile(), SelectTileRect(), and SetTileAt().
ImVec2 yaze::gui::CanvasAutomationAPI::TileToCanvas | ( | int | x, |
int | y | ||
) | const |
Convert logical tile coordinates to canvas pixel coordinates.
x | Logical X coordinate |
y | Logical Y coordinate |
Definition at line 269 of file canvas_automation_api.cc.
References canvas_, GetDimensions(), yaze::gui::Canvas::global_scale(), and yaze::gui::CanvasAutomationAPI::Dimensions::tile_size.
Referenced by CenterOn(), ScrollToTile(), SelectTile(), SelectTileRect(), SetTileAt(), and yaze::test::TEST_F().
ImVec2 yaze::gui::CanvasAutomationAPI::CanvasToTile | ( | ImVec2 | canvas_pos | ) | const |
Convert canvas pixel coordinates to logical tile coordinates.
canvas_pos | Canvas pixel position |
Definition at line 279 of file canvas_automation_api.cc.
References canvas_, GetDimensions(), yaze::gui::Canvas::global_scale(), and yaze::gui::CanvasAutomationAPI::Dimensions::tile_size.
Referenced by GetSelection(), and GetVisibleRegion().
void yaze::gui::CanvasAutomationAPI::SetTilePaintCallback | ( | TilePaintCallback | callback | ) |
Definition at line 293 of file canvas_automation_api.cc.
References tile_paint_callback_.
Referenced by yaze::editor::OverworldEditor::SetupCanvasAutomation().
void yaze::gui::CanvasAutomationAPI::SetTileQueryCallback | ( | TileQueryCallback | callback | ) |
Definition at line 297 of file canvas_automation_api.cc.
References tile_query_callback_.
|
private |
Definition at line 215 of file canvas_automation_api.h.
Referenced by CanvasToTile(), CenterOn(), ClearSelection(), GetDimensions(), GetSelection(), GetVisibleRegion(), GetZoom(), ScrollToTile(), SelectTile(), SelectTileRect(), SetTileAt(), SetZoom(), and TileToCanvas().
|
private |
Definition at line 216 of file canvas_automation_api.h.
Referenced by SetTileAt(), and SetTilePaintCallback().
|
private |
Definition at line 217 of file canvas_automation_api.h.
Referenced by GetTileAt(), and SetTileQueryCallback().