fractol/src/hooks.c
2017-03-24 19:09:49 +02:00

82 lines
2.3 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* hooks.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/16 18:59:03 by gtertysh #+# #+# */
/* Updated: 2017/03/24 14:02:46 by gtertysh ### ########.fr */
/* */
/* ************************************************************************** */
#include "fractol.h"
int key_hook(int keycode, void *fr)
{
printf("%d\n", keycode);
if (keycode == 53)
quit(fr);
if (keycode == 49)
gradient_hook(fr);
if (keycode == 124)
move_left(fr);
if (keycode == 123)
move_right(fr);
if (keycode == 125)
move_up(fr);
if (keycode == 126)
move_down(fr);
if (keycode == 69)
change_limit_up(fr);
if (keycode == 78)
change_limit_down(fr);
return (0);
}
/*
* beware!! shitcode on lines 48-49.
*/
int mouse_move_hook( int x, int y, void *fr)
{
static int start_x = WIDTH / 2;
int to_render;
t_fractol *fr_p;
to_render = 0;
y = to_render;
printf("x = %d, y = %d\n", x, y);
to_render = y;
fr_p = (t_fractol *)fr;
if (fr_p->frac->com_rl_im_change == 1 &&
fr_p->frac->allow_mouse_change == 1)
to_render = change_real(fr_p, x, &start_x);
else if (fr_p->frac->com_rl_im_change == -1 &&
fr_p->frac->allow_mouse_change == 1)
to_render = change_imagianry(fr_p, x, &start_x);
if (to_render)
{
new_and_clear_image(fr_p);
parallel_fractal(fr_p);
mlx_put_image_to_window(fr_p->mlx, fr_p->win, fr_p->img->ptr, 0, 0);
}
return (0);
}
int mouse_button_hook(int btn, int x, int y, void *fr)
{
printf("x = %d, y = %d, btn = %d\n", x, y, btn);
if (btn == 4)
zoom_in(fr, x, y);
if (btn == 5)
zoom_out(fr);
if (btn == 3)
((t_fractol *)fr)->frac->com_rl_im_change *= -1;
if (btn == 2)
((t_fractol *)fr)->frac->allow_mouse_change *= -1;
if (btn == 1)
reset(fr);
return (0);
}