// Muestra una imagen, cuenta sus regiones, pinta una y la muestra otra vez.
// Uso: fill_demo imagen.pgm x y valor
#include <stdio.h>

#include "image.h"
#include "regions.h"

int main(int argc, char *argv[]) {
    int x = 0;
    int y = 0;
    int value = 0;
    if (argc != 5 || sscanf(argv[2], "%6d", &x) != 1 || sscanf(argv[3], "%6d", &y) != 1
        || sscanf(argv[4], "%6d", &value) != 1) {
        printf("uso: fill_demo imagen.pgm x y valor\n");
        return 1;
    }

    Image *img = image_load(argv[1]);
    if (img == NULL) {
        printf("no se pudo leer %s\n", argv[1]);
        return 1;
    }
    if (x < 0 || x >= image_width(img) || y < 0 || y >= image_height(img)
        || value < 0 || value > image_max_value(img)) {
        printf("(%d, %d) o el valor %d están fuera de la imagen\n", x, y, value);
        image_free(img);
        return 1;
    }

    image_show(img);
    printf("regiones: %d\n\n", count_regions(img));
    flood_fill(img, x, y, value);
    image_show(img);
    printf("regiones: %d\n", count_regions(img));
    image_free(img);
    return 0;
}
