#pragma once
// Helper minimo para comparar dos imagenes PNG con tolerancia.
// Usa stb_image (vendored en cpp/vendor/stb).

#include <string>

namespace fn_test {

struct PngDiffResult {
    bool   loaded_a = false;
    bool   loaded_b = false;
    int    width_a = 0, height_a = 0;
    int    width_b = 0, height_b = 0;
    long   pixels_total      = 0;
    long   pixels_different  = 0;
    double diff_ratio        = 0.0; // pixels_different / pixels_total
};

// Carga ambos PNG, compara pixel a pixel con `channel_threshold` (0..255) por
// canal RGBA. Si la diferencia de cualquier canal supera el umbral, el pixel
// se marca como distinto. `diff_ratio` = pixels distintos / total.
//
// Si las dimensiones no coinciden devuelve loaded_*=true pero diff_ratio=1.0
// y pixels_total = max(area_a, area_b).
PngDiffResult pixel_diff_ratio(const std::string& path_a,
                               const std::string& path_b,
                               int channel_threshold = 5);

} // namespace fn_test
