77 lines
2.0 KiB
C
77 lines
2.0 KiB
C
|
/* ************************************************************************** */
|
||
|
/* */
|
||
|
/* ::: :::::::: */
|
||
|
/* post_pro_hub.c :+: :+: :+: */
|
||
|
/* +:+ +:+ +:+ */
|
||
|
/* By: ntrahy <marvin@42.fr> +#+ +:+ +#+ */
|
||
|
/* +#+#+#+#+#+ +#+ */
|
||
|
/* Created: 2016/11/23 04:57:41 by ntrahy #+# #+# */
|
||
|
/* Updated: 2017/01/08 15:30:58 by scebula ### ########.fr */
|
||
|
/* */
|
||
|
/* ************************************************************************** */
|
||
|
|
||
|
#include "rt.h"
|
||
|
|
||
|
t_color img_pull_pixel(int x, int y, t_img *img)
|
||
|
{
|
||
|
t_color c;
|
||
|
|
||
|
if (img->x && img->y)
|
||
|
{
|
||
|
while (x < 0)
|
||
|
x += img->x;
|
||
|
while (y < 0)
|
||
|
y += img->y;
|
||
|
x = x % img->x;
|
||
|
y = y % img->y;
|
||
|
}
|
||
|
c.b = img->data[y * img->sl + x * (img->bpp >> 3)] & 0xFF;
|
||
|
c.g = img->data[y * img->sl + x * (img->bpp >> 3) + 1] & 0xFF00 >> 8;
|
||
|
c.r = img->data[y * img->sl + x * (img->bpp >> 3) + 2] & 0xFF0000 >> 16;
|
||
|
return (c);
|
||
|
}
|
||
|
|
||
|
t_img *img_map_pixel(t_data *d, int (*f)(t_color))
|
||
|
{
|
||
|
int x;
|
||
|
int y;
|
||
|
t_color c;
|
||
|
t_img *img;
|
||
|
|
||
|
img = init_img(d->mlx, d->width, d->height);
|
||
|
x = -1;
|
||
|
while (++x < d->width)
|
||
|
{
|
||
|
y = -1;
|
||
|
while (++y < d->height)
|
||
|
{
|
||
|
c = img_pull_pixel(x, y, d->img);
|
||
|
putpixel(x, y, f(c), img);
|
||
|
}
|
||
|
}
|
||
|
return (img);
|
||
|
}
|
||
|
|
||
|
void img_recolor(t_data *d, int (*f)(t_color))
|
||
|
{
|
||
|
t_img *img;
|
||
|
|
||
|
img = img_map_pixel(d, f);
|
||
|
mlx_clear_window(d->mlx, d->win);
|
||
|
mlx_put_image_to_window(d->mlx, d->win, img->img, 0, 0);
|
||
|
free_img(d->mlx, img);
|
||
|
}
|
||
|
|
||
|
void **init_post_pro(void)
|
||
|
{
|
||
|
void **p_p;
|
||
|
|
||
|
p_p = (void **)ft_memalloc(sizeof(void *) * 5);
|
||
|
p_p[0] = &img_b_n_w;
|
||
|
p_p[1] = &img_sepia;
|
||
|
p_p[2] = &img_negative;
|
||
|
p_p[3] = &img_b_n_w;
|
||
|
p_p[4] = &img_b_n_w;
|
||
|
return (p_p);
|
||
|
}
|