1#ifndef YAZE_APP_CORE_SERVICE_CANVAS_AUTOMATION_SERVICE_H_
2#define YAZE_APP_CORE_SERVICE_CANVAS_AUTOMATION_SERVICE_H_
4#include "grpcpp/impl/service_type.h"
9#include <unordered_map>
11#include "absl/status/status.h"
31class SetTilesResponse;
32class SelectTileRequest;
33class SelectTileResponse;
34class SelectTileRectRequest;
35class SelectTileRectResponse;
36class GetSelectionRequest;
37class GetSelectionResponse;
38class ClearSelectionRequest;
39class ClearSelectionResponse;
40class ScrollToTileRequest;
41class ScrollToTileResponse;
43class CenterOnResponse;
48class GetDimensionsRequest;
49class GetDimensionsResponse;
50class GetVisibleRegionRequest;
51class GetVisibleRegionResponse;
52class IsTileVisibleRequest;
53class IsTileVisibleResponse;
65class CanvasAutomationServiceImpl {
67 CanvasAutomationServiceImpl() =
default;
70 void RegisterCanvas(
const std::string& canvas_id, gui::Canvas* canvas);
73 void RegisterOverworldEditor(
const std::string& canvas_id,
74 editor::OverworldEditor* editor);
77 absl::Status SetTile(
const proto::SetTileRequest* request,
78 proto::SetTileResponse* response);
80 absl::Status GetTile(
const proto::GetTileRequest* request,
81 proto::GetTileResponse* response);
83 absl::Status SetTiles(
const proto::SetTilesRequest* request,
84 proto::SetTilesResponse* response);
86 absl::Status SelectTile(
const proto::SelectTileRequest* request,
87 proto::SelectTileResponse* response);
89 absl::Status SelectTileRect(
const proto::SelectTileRectRequest* request,
90 proto::SelectTileRectResponse* response);
92 absl::Status GetSelection(
const proto::GetSelectionRequest* request,
93 proto::GetSelectionResponse* response);
95 absl::Status ClearSelection(
const proto::ClearSelectionRequest* request,
96 proto::ClearSelectionResponse* response);
98 absl::Status ScrollToTile(
const proto::ScrollToTileRequest* request,
99 proto::ScrollToTileResponse* response);
101 absl::Status CenterOn(
const proto::CenterOnRequest* request,
102 proto::CenterOnResponse* response);
104 absl::Status SetZoom(
const proto::SetZoomRequest* request,
105 proto::SetZoomResponse* response);
107 absl::Status GetZoom(
const proto::GetZoomRequest* request,
108 proto::GetZoomResponse* response);
110 absl::Status GetDimensions(
const proto::GetDimensionsRequest* request,
111 proto::GetDimensionsResponse* response);
113 absl::Status GetVisibleRegion(
const proto::GetVisibleRegionRequest* request,
114 proto::GetVisibleRegionResponse* response);
116 absl::Status IsTileVisible(
const proto::IsTileVisibleRequest* request,
117 proto::IsTileVisibleResponse* response);
120 gui::Canvas* GetCanvas(
const std::string& canvas_id);
121 editor::OverworldEditor* GetOverworldEditor(
const std::string& canvas_id);
124 std::unordered_map<std::string, gui::Canvas*> canvases_;
127 std::unordered_map<std::string, editor::OverworldEditor*> overworld_editors_;
140std::unique_ptr<grpc::Service> CreateCanvasAutomationServiceGrpc(
141 CanvasAutomationServiceImpl* impl);
void RegisterCanvas(const char *canvas_name, const std::string &description="")
Register a canvas widget after BeginChild or similar.
Main namespace for the application.