yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
visual_service_impl.h
Go to the documentation of this file.
1#ifndef YAZE_APP_SERVICE_VISUAL_SERVICE_IMPL_H_
2#define YAZE_APP_SERVICE_VISUAL_SERVICE_IMPL_H_
3
5
6#ifdef YAZE_WITH_GRPC
7
8#include <memory>
9#include <string>
10
11#include "absl/status/status.h"
12#include "grpcpp/impl/service_type.h"
13
14namespace yaze {
15
16// Forward declarations for proto types
17namespace proto {
18class ComparePngDataRequest;
19class ComparePngDataResponse;
20class ComparePngFilesRequest;
21class ComparePngFilesResponse;
22class CompareWithReferenceRequest;
23class CompareWithReferenceResponse;
24class CompareRegionRequest;
25class CompareRegionResponse;
26class GenerateDiffImageRequest;
27class GenerateDiffImageResponse;
28class RunRegressionTestRequest;
29class RunRegressionTestResponse;
30class ListReferenceImagesRequest;
31class ListReferenceImagesResponse;
32class SaveReferenceImageRequest;
33class SaveReferenceImageResponse;
34class AnalyzeScreenshotRequest;
35class AnalyzeScreenshotResponse;
36class VerifyVisualConditionRequest;
37class VerifyVisualConditionResponse;
38} // namespace proto
39
40namespace test {
41class VisualDiffEngine;
42class AIVisionVerifier;
43} // namespace test
44
54class VisualServiceImpl {
55 public:
56 VisualServiceImpl();
57 ~VisualServiceImpl();
58
59 // Configure reference image directory
60 void SetReferenceImageDir(const std::string& path);
61 const std::string& GetReferenceImageDir() const { return reference_dir_; }
62
63 // Optionally set AI vision verifier for analysis tools
64 void SetAIVisionVerifier(test::AIVisionVerifier* verifier);
65
66 // --- Visual Comparison Operations ---
67
71 absl::Status ComparePngData(const proto::ComparePngDataRequest* request,
72 proto::ComparePngDataResponse* response);
73
77 absl::Status ComparePngFiles(const proto::ComparePngFilesRequest* request,
78 proto::ComparePngFilesResponse* response);
79
83 absl::Status CompareWithReference(
84 const proto::CompareWithReferenceRequest* request,
85 proto::CompareWithReferenceResponse* response);
86
90 absl::Status CompareRegion(const proto::CompareRegionRequest* request,
91 proto::CompareRegionResponse* response);
92
93 // --- Diff Image Generation ---
94
98 absl::Status GenerateDiffImage(const proto::GenerateDiffImageRequest* request,
99 proto::GenerateDiffImageResponse* response);
100
101 // --- Visual Regression Testing ---
102
106 absl::Status RunRegressionTest(const proto::RunRegressionTestRequest* request,
107 proto::RunRegressionTestResponse* response);
108
112 absl::Status ListReferenceImages(
113 const proto::ListReferenceImagesRequest* request,
114 proto::ListReferenceImagesResponse* response);
115
119 absl::Status SaveReferenceImage(
120 const proto::SaveReferenceImageRequest* request,
121 proto::SaveReferenceImageResponse* response);
122
123 // --- AI Visual Analysis ---
124
128 absl::Status AnalyzeScreenshot(const proto::AnalyzeScreenshotRequest* request,
129 proto::AnalyzeScreenshotResponse* response);
130
134 absl::Status VerifyVisualCondition(
135 const proto::VerifyVisualConditionRequest* request,
136 proto::VerifyVisualConditionResponse* response);
137
138 private:
139 // Get or create diff engine
140 test::VisualDiffEngine& GetDiffEngine();
141
142 // Reference image directory
143 std::string reference_dir_;
144
145 // Diff engine (lazy initialized)
146 std::unique_ptr<test::VisualDiffEngine> diff_engine_;
147
148 // AI vision verifier (optional, not owned)
149 test::AIVisionVerifier* vision_verifier_ = nullptr;
150};
151
161std::unique_ptr<grpc::Service> CreateVisualServiceGrpc(VisualServiceImpl* impl);
162
163} // namespace yaze
164
165#endif // YAZE_WITH_GRPC
166#endif // YAZE_APP_SERVICE_VISUAL_SERVICE_IMPL_H_