1#ifndef YAZE_APP_TEST_VISUAL_DIFF_ENGINE_H_
2#define YAZE_APP_TEST_VISUAL_DIFF_ENGINE_H_
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
52 std::string
Format()
const;
57 std::string
ToJson()
const;
143 absl::StatusOr<VisualDiffResult>
ComparePngFiles(
const std::string& path_a,
144 const std::string& path_b);
154 const std::vector<uint8_t>& png_a,
const std::vector<uint8_t>& png_b);
164 const std::vector<uint8_t>& png_data,
const std::string& reference_path);
186 const std::vector<uint8_t>& png_a,
const std::vector<uint8_t>& png_b,
209 const std::string& output_path);
219 static absl::StatusOr<Screenshot>
DecodePng(
220 const std::vector<uint8_t>& png_data);
228 static absl::StatusOr<std::vector<uint8_t>>
EncodePng(
237 static absl::StatusOr<Screenshot>
LoadPng(
const std::string& path);
247 const std::string& path);
302 bool ColorsMatch(
const uint8_t* pixel_a,
const uint8_t* pixel_b)
const;
303 float PixelDifference(
const uint8_t* pixel_a,
const uint8_t* pixel_b)
const;
High-level visual comparison engine for gRPC/MCP integration.
const VisualDiffConfig & GetConfig() const
bool ColorsMatch(const uint8_t *pixel_a, const uint8_t *pixel_b) const
static absl::StatusOr< Screenshot > DecodePng(const std::vector< uint8_t > &png_data)
Decode PNG data to Screenshot.
absl::StatusOr< VisualDiffResult > CompareWithReference(const std::vector< uint8_t > &png_data, const std::string &reference_path)
Compare PNG data against a reference file.
std::vector< uint8_t > GenerateRedHighlightDiff(const Screenshot &a, const Screenshot &b, const VisualDiffResult &result)
absl::StatusOr< VisualDiffResult > CompareRegion(const std::vector< uint8_t > &png_a, const std::vector< uint8_t > &png_b, const ScreenRegion ®ion)
Compare a specific region of two images.
void SetConfig(const VisualDiffConfig &config)
static float CalculateSSIM(const Screenshot &a, const Screenshot &b)
Calculate Structural Similarity Index.
VisualDiffResult ComparePixelExact(const Screenshot &a, const Screenshot &b, const ScreenRegion ®ion)
float PixelDifference(const uint8_t *pixel_a, const uint8_t *pixel_b) const
VisualDiffResult CompareSSIM(const Screenshot &a, const Screenshot &b, const ScreenRegion ®ion)
void MergeNearbyRegions(std::vector< VisualDiffResult::DiffRegion > ®ions)
void SetTolerance(float tolerance)
std::vector< uint8_t > GenerateHeatmapDiff(const Screenshot &a, const Screenshot &b)
static absl::StatusOr< Screenshot > LoadPng(const std::string &path)
Load PNG from file.
absl::StatusOr< VisualDiffResult > ComparePngData(const std::vector< uint8_t > &png_a, const std::vector< uint8_t > &png_b)
Compare two PNG images from raw data.
static absl::Status SavePng(const Screenshot &screenshot, const std::string &path)
Save screenshot to PNG file.
absl::StatusOr< VisualDiffResult > ComparePngFiles(const std::string &path_a, const std::string &path_b)
Compare two PNG files.
VisualDiffResult CompareImpl(const Screenshot &a, const Screenshot &b, const ScreenRegion ®ion)
static absl::StatusOr< std::vector< uint8_t > > EncodePng(const Screenshot &screenshot)
Encode Screenshot to PNG.
VisualDiffResult CompareScreenshots(const Screenshot &a, const Screenshot &b)
Compare two Screenshot objects directly.
std::vector< uint8_t > GenerateSideBySideDiff(const Screenshot &a, const Screenshot &b, const VisualDiffResult &result)
absl::StatusOr< std::vector< uint8_t > > GenerateDiffPng(const Screenshot &a, const Screenshot &b)
Generate a diff image highlighting differences.
std::vector< VisualDiffResult::DiffRegion > FindSignificantRegions(const Screenshot &a, const Screenshot &b, int threshold)
static float CalculateRegionSSIM(const Screenshot &a, const Screenshot &b, const ScreenRegion ®ion)
Calculate SSIM for a specific region.
~VisualDiffEngine()=default
absl::Status SaveDiffImage(const VisualDiffResult &result, const std::string &output_path)
Save diff image to file.
Region of interest for screenshot comparison.
Screenshot data container.
Configuration for visual diff engine.
std::vector< ScreenRegion > ignore_regions
int region_merge_distance
Result of visual comparison with diff image.
std::string ToJson() const
Serialize to JSON for MCP tool output.
std::vector< uint8_t > diff_image_png
std::string diff_description
std::string error_message
std::string Format() const
Format result for human-readable output.
std::vector< DiffRegion > significant_regions