-
Notifications
You must be signed in to change notification settings - Fork 0
/
fractol_keys_hooks.c
158 lines (151 loc) · 4.48 KB
/
fractol_keys_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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* fractol_keys_hooks.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rpohlen <rpohlen@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/12/23 18:35:07 by rpohlen #+# #+# */
/* Updated: 2022/06/12 15:38:41 by rpohlen ### ########.fr */
/* */
/* ************************************************************************** */
#include "fractol.h"
/* --------------------------------------------------------------------- *\
| key_hook
|
| List of keys :
| 65505 shift zoom in
| 61 = zoom in
| 65507 ctrl zoom out
| 45 - zoom out
| 65362 upper arrow move up
| 119 w move up
| 65364 down arrow move down
| 115 s move down
| 65361 left arrow move left
| 97 a move left
| 65363 right arrow move right
| 100 d move right
| 114 r reset view
| 101 e next color
| 113 q prev color
| 99 c toggle smooth coloring
| 56 8 increase max iter by 1
| 55 7 decrease max iter by 1
| 54 6 increase max iter by 10
| 53 5 decrease max iter by 10
| 52 3 increase max iter by 100
| 51 4 decrease max iter by 100
| 50 2 increase max iter by 1000
| 49 1 decrease max iter by 1000
| 65289 tab enable auto iter
| 122 z decrease zoom strength
| 120 x increase zoom strength
| 105 i display info
| 32 spacebar render ssaa filter
| 118 v decrease ssaa strength
| 98 b increase ssaa strength
| 65293 return toggle julia shift mode
| 65307 esc close window
\* --------------------------------------------------------------------- */
static int key_hook3(int key, t_fract *fract)
{
if (key == 50)
more_iter(fract, 1000);
else if (key == 49)
less_iter(fract, 1000);
else if (key == 65289)
enable_autoiter(fract);
else if (key == 122)
decrease_zoom_strength(fract);
else if (key == 120)
increase_zoom_strength(fract);
else if (key == 105)
print_info(*fract);
else if (key == 32)
apply_ssaa_filter(fract);
else if (key == 118)
decrease_ssaa_strength(fract);
else if (key == 98)
increase_ssaa_strength(fract);
else if (key == 65293)
toggle_shift_mode(fract);
else if (key == 65307)
exit_program(*fract);
return (0);
}
static int key_hook2(int key, t_fract *fract)
{
if (key == 114)
reset_view(fract);
else if (key == 101)
next_color(fract);
else if (key == 113)
prev_color(fract);
else if (key == 99)
toggle_smooth_colors(fract);
else if (key == 56)
more_iter(fract, 1);
else if (key == 55)
less_iter(fract, 1);
else if (key == 54)
more_iter(fract, 10);
else if (key == 53)
less_iter(fract, 10);
else if (key == 52)
more_iter(fract, 100);
else if (key == 51)
less_iter(fract, 100);
else
return (key_hook3(key, fract));
return (0);
}
int key_hook(int key, t_fract *fract)
{
int x;
int y;
if (key == 65505 || key == 61)
{
mlx_mouse_get_pos(fract->mlx, fract->win, &x, &y);
zoom_in(fract, x, y);
}
else if (key == 65507 || key == 45)
{
mlx_mouse_get_pos(fract->mlx, fract->win, &x, &y);
zoom_out(fract, x, y);
}
else if (key == 65362 || key == 119)
move_view(fract, 'u', MOVE_MOD);
else if (key == 65364 || key == 115)
move_view(fract, 'd', MOVE_MOD);
else if (key == 65361 || key == 97)
move_view(fract, 'l', MOVE_MOD);
else if (key == 65363 || key == 100)
move_view(fract, 'r', MOVE_MOD);
else
return (key_hook2(key, fract));
return (0);
}
/* --------------------------------------------------------------------- *\
| mouse_hook
|
| List of mouse buttons :
| 1 left mouse button zoom in
| 4 mousewheel up zoom in
| 3 right mouse button zoom out
| 5 mousewheel down zoom out
\* --------------------------------------------------------------------- */
int mouse_hook(int key, int x, int y, t_fract *fract)
{
if (key == 1 || key == 4)
zoom_in(fract, x, y);
else if (key == 3 || key == 5)
zoom_out(fract, x, y);
return (0);
}
// Fires when the red X is clicked - causes program exit
int clientmsg_hook(t_fract *fract)
{
exit_program(*fract);
return (0);
}