// Filtros: reciben un puntero a la imagen y la cambian ahí mismo. No devuelven nada.
#ifndef FILTERS_H
#define FILTERS_H

#include "image.h"

// Suma amount a cada píxel, sin salirse de 0 a max_value. Ya está hecho: es el modelo.
void brighten(struct image *img, int amount);

// Cada píxel p pasa a max_value - p.
void invert(struct image *img);

// Cada píxel mayor o igual que level pasa a max_value. Los demás, a 0.
void threshold(struct image *img, int level);

// Espejo izquierda-derecha: cada fila queda al revés.
void flip_horizontal(struct image *img);

// Guarda en *min y *max el menor y el mayor píxel en uso, y en *mean su promedio, con
// decimales. La imagen tiene al menos un píxel, y no cambia.
void image_stats(const struct image *img, int *min, int *max, double *mean);

#endif
