// Aplica cada filtro a una imagen, la dibuja y guarda los resultados en build/.
#include <stdio.h>

#include "filters.h"

static int show_and_save(const char title[], struct image img, const char name[]) {
    printf("%s\n", title);
    image_show(img);
    if (!image_save(img, name)) {
        fprintf(stderr, "No se pudo escribir %s\n", name);
        return 0;
    }
    return 1;
}

int main(void) {
    struct image img = image_load("lab/images/sun.pgm");
    if (!image_is_valid(img)) {
        fprintf(stderr, "No se pudo leer lab/images/sun.pgm\n");
        return 1;
    }

    int ok = show_and_save("Original:", img, "build/sun_original.pgm");
    ok = show_and_save("invert:", invert(img), "build/sun_invert.pgm") && ok;
    ok = show_and_save("threshold 100:", threshold(img, 100), "build/sun_threshold.pgm") && ok;
    ok = show_and_save("flip_horizontal:", flip_horizontal(img), "build/sun_flip.pgm") && ok;
    ok = show_and_save("box_blur 2:", box_blur(img, 2), "build/sun_blur.pgm") && ok;
    return ok ? 0 : 1;
}
