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