-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhooks.c
82 lines (76 loc) · 2.62 KB
/
hooks.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* hooks.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fvieira <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/08 13:15:37 by fvieira #+# #+# */
/* Updated: 2022/12/08 13:15:42 by fvieira ### ########.fr */
/* */
/* ************************************************************************** */
#include "fractol.h"
void ft_zoom(double x, double y, t_fractal *fractal)
{
fractal->x = (x / fractal->zoom) - (x / (fractal->zoom * 1.3));
fractal->y = (y / fractal->zoom) - (y / (fractal->zoom * 1.3));
fractal->zoom *= 1.3;
fractal->iterations++;
}
void ft_dezoom(double x, double y, t_fractal *fractal)
{
fractal->x = (x / fractal->zoom) - (x / (fractal->zoom / 1.3));
fractal->y = (y / fractal->zoom) - (y / (fractal->zoom / 1.3));
fractal->zoom /= 1.3;
fractal->iterations--;
}
int close_game(t_fractal *fractal)
{
freeall(fractal);
exit(EXIT_SUCCESS);
return (EXIT_SUCCESS);
}
int key_hook(int keycode, t_fractal *fractal)
{
if (keycode == ESC)
close_game(fractal);
else if (keycode == LEFT)
fractal->xarrow -= 30;
else if (keycode == DOWN)
fractal->yarrow += 30;
else if (keycode == RIGHT)
fractal->xarrow += 30;
else if (keycode == UP)
fractal->yarrow -= 30;
else if (keycode == PLUS)
fractal->color += 100;
else if (keycode == MINUS)
fractal->color -= 100;
else if (keycode == R)
{
ft_printf("Reset time!\n");
julia_param(fractal, fractal->name);
}
else if (keycode == Z)
fractal->zoom = 1;
if (keycode != ESC)
fractalsetup(fractal);
return (0);
}
int mouse_hook(int key_code, int x, int y, t_fractal *fractal)
{
if (key_code == 1 && !ft_strncmp(fractal->name, "julia", 5))
{
fractal->c.x = ((double) x / fractal->width * 4 - 2);
fractal->c.y = ((double) y / fractal->height * 3 - 1.5);
fractal->zoom = 1;
}
else if (key_code == 4)
ft_zoom(((double) x / fractal->width * 1000 - 500),
((double) y / fractal->height * 1000 - 500), fractal);
else if (key_code == 5)
ft_dezoom(((double) x / fractal->width * 1000 - 500),
((double) y / fractal->height * 1000 - 500), fractal);
fractalsetup(fractal);
return (0);
}