// Filtros: reciben una copia de la imagen y devuelven la imagen nueva.
#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.
struct image brighten(struct image img, int amount);

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

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

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

// Cada píxel pasa al promedio de la ventana cuadrada de lado 2 * radius + 1 que lo tiene
// al centro. radius no es negativo. En los bordes se promedian solo los píxeles de la
// ventana que están dentro de la imagen. El promedio se trunca con la división entera.
struct image box_blur(struct image img, int radius);

#endif
