Skip to content

Commit 0eaed0c

Browse files
author
Anaelle LECLABART
committed
added arrow control for fractal position
1 parent fcace9b commit 0eaed0c

File tree

6 files changed

+83
-20
lines changed

6 files changed

+83
-20
lines changed

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# By: anleclab <marvin@42.fr> +#+ +:+ +#+ #
77
# +#+#+#+#+#+ +#+ #
88
# Created: 2019/02/15 15:21:21 by anleclab #+# #+# #
9-
# Updated: 2019/02/25 17:43:43 by anleclab ### ########.fr #
9+
# Updated: 2019/02/27 09:05:28 by anleclab ### ########.fr #
1010
# #
1111
# **************************************************************************** #
1212

@@ -26,7 +26,8 @@ SRC = main.c \
2626
color.c \
2727
julia.c \
2828
gradient.c \
29-
burning_ship.c
29+
burning_ship.c \
30+
events_tools.c
3031
SRCSFD = srcs/
3132
OBJSFD = objs/
3233
OBJS = $(addprefix $(OBJSFD),$(SRC:.c=.o))

includes/fractol.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: anleclab <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2019/02/15 15:25:34 by anleclab #+# #+# */
9-
/* Updated: 2019/02/25 18:09:07 by anleclab ### ########.fr */
9+
/* Updated: 2019/02/27 09:19:11 by anleclab ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -113,7 +113,12 @@ void error(char *str, t_fract *fract);
113113
int mouse_event(int button, int x, int y, t_fract *fract);
114114
int close_win(t_fract *fract);
115115
int key_release(int key, t_fract *fract);
116+
int key_press(int key, t_fract *fract);
116117
int mouse_move(int x, int y, t_fract *fract);
118+
int is_arrow(int key);
119+
int is_letter_direction(int key);
120+
void change_julia_param(t_fract *fract, int key);
121+
void move_fractal(t_fract *fract, int key);
117122

118123
t_point coord(t_fract *fract, int x, int y);
119124

includes/keys.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: anleclab <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2019/01/27 17:23:18 by anleclab #+# #+# */
9-
/* Updated: 2019/02/24 15:28:36 by anleclab ### ########.fr */
9+
/* Updated: 2019/02/27 09:17:49 by anleclab ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -29,6 +29,11 @@
2929
# define RIGHT_ARR 124
3030
# define LEFT_ARR 123
3131

32+
# define W 13
33+
# define A 0
34+
# define S 1
35+
# define D 2
36+
3237
/*# define PAD_1 83
3338
# define PAD_2 84
3439
# define PAD_3 85
@@ -38,10 +43,7 @@
3843
# define PAD_8 91
3944
# define PAD_9 92
4045
41-
# define W 13
42-
# define A 0
43-
# define S 1
44-
# define D 2
46+
4547
# define Q 12
4648
# define E 14
4749
# define Z 6

srcs/events.c

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: anleclab <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2019/02/15 16:31:46 by anleclab #+# #+# */
9-
/* Updated: 2019/02/24 16:46:13 by anleclab ### ########.fr */
9+
/* Updated: 2019/02/27 09:25:58 by anleclab ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -63,19 +63,12 @@ int key_release(int key, t_fract *fract)
6363
fract->mode = (fract->mode + 1) % 2;
6464
else if (key == M)
6565
fract->is_active_mouse = (fract->is_active_mouse) ? 0 : 1;
66-
else if (key == SPACE || (fract->name == JULIA && (key == DOWN_ARR
67-
|| key == UP_ARR || key == RIGHT_ARR || key == LEFT_ARR)))
66+
else if (key == SPACE || (fract->name == JULIA && is_letter_direction(key)))
6867
{
6968
if (key == SPACE)
7069
fract->color = (fract->color + 1) % NB_COLOR_SCHEMES;
71-
else if (key == DOWN_ARR)
72-
fract->julia.y -= 0.000001;
73-
else if (key == UP_ARR)
74-
fract->julia.y += 0.000001;
75-
else if (key == LEFT_ARR)
76-
fract->julia.x -= 0.000001;
77-
else if (key == RIGHT_ARR)
78-
fract->julia.x += 0.000001;
70+
else if (is_letter_direction(key))
71+
change_julia_param(fract, key);
7972
if (!draw_fractal(fract))
8073
error("failed to draw fractal", fract);
8174
mlx_put_image_to_window(fract->mlx_ptr, fract->win_ptr, fract->img_ptr,
@@ -101,3 +94,16 @@ int mouse_move(int x, int y, t_fract *fract)
10194
}
10295
return (0);
10396
}
97+
98+
int key_press(int key, t_fract *fract)
99+
{
100+
if (is_arrow(key))
101+
{
102+
move_fractal(fract, key);
103+
if (!draw_fractal(fract))
104+
error("failed to draw fractal", fract);
105+
mlx_put_image_to_window(fract->mlx_ptr, fract->win_ptr, fract->img_ptr,
106+
0, 0);
107+
}
108+
return (0);
109+
}

srcs/events_tools.c

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* events_tools.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: anleclab <marvin@42.fr> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2019/02/27 09:00:02 by anleclab #+# #+# */
9+
/* Updated: 2019/02/27 09:24:45 by anleclab ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "fractol.h"
14+
15+
int is_arrow(int key)
16+
{
17+
return ((key == UP_ARR || key == DOWN_ARR || key == LEFT_ARR
18+
|| key == RIGHT_ARR));
19+
}
20+
21+
int is_letter_direction(int key)
22+
{
23+
return((key == W || key == A || key == S || key == D));
24+
}
25+
26+
void change_julia_param(t_fract *fract, int key)
27+
{
28+
if (key == S)
29+
fract->julia.y -= 0.000001;
30+
else if (key == W)
31+
fract->julia.y += 0.000001;
32+
else if (key == A)
33+
fract->julia.x -= 0.000001;
34+
else if (key == D)
35+
fract->julia.x += 0.000001;
36+
}
37+
38+
void move_fractal(t_fract *fract, int key)
39+
{
40+
if (key == UP_ARR)
41+
fract->y_offset -= 0.1;
42+
else if (key == DOWN_ARR)
43+
fract->y_offset += 0.1;
44+
else if (key == LEFT_ARR)
45+
fract->x_offset -= 0.1;
46+
else if (key == RIGHT_ARR)
47+
fract->y_offset += 0.1;
48+
}

srcs/main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: anleclab <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2019/02/15 15:28:53 by anleclab #+# #+# */
9-
/* Updated: 2019/02/25 17:56:27 by anleclab ### ########.fr */
9+
/* Updated: 2019/02/27 09:21:29 by anleclab ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -81,5 +81,6 @@ int main(int ac, char **av)
8181
mlx_hook(fract.win_ptr, 17, 0, &close_win, &fract);
8282
mlx_hook(fract.win_ptr, 3, 0, &key_release, &fract);
8383
mlx_hook(fract.win_ptr, 6, 0, &mouse_move, &fract);
84+
mlx_hook(fract.win_ptr, 2, 0, &key_press, &fract);
8485
mlx_loop(fract.mlx_ptr);
8586
}

0 commit comments

Comments
 (0)