-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathft_mapiter.c
More file actions
60 lines (55 loc) · 1.8 KB
/
ft_mapiter.c
File metadata and controls
60 lines (55 loc) · 1.8 KB
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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_mapiter.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: ehugh-be <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/01/05 14:28:57 by ehugh-be #+# #+# */
/* Updated: 2019/01/11 04:16:36 by ehugh-be ### ########.fr */
/* */
/* ************************************************************************** */
#include "fdf.h"
void ft_mapiter(t_map *mp, void (*f)(t_vec4 *vec4, void *data), void *data)
{
int i;
t_vec4 *t;
if (!mp || !f)
return ;
i = mp->w * mp->h;
t = (t_vec4*)(mp->vec->data);
while (i--)
{
f(&t[i], data);
if (t[i].x < mp->x_m)
mp->x_m = t[i].x;
if (t[i].x > mp->x)
mp->x = t[i].x;
if (t[i].y < mp->y_m)
mp->y_m = t[i].y;
if (t[i].y > mp->y)
mp->y = t[i].y;
}
}
t_map *ft_mapiter_c(t_map *mp, void (*f)(t_vec4 *, void *), void *data)
{
t_map *map_r;
if (!mp || !(map_r = malloc(sizeof(t_map))))
return (NULL);
ft_memcpy(map_r, mp, sizeof(t_map));
if (!(map_r->vec = malloc(sizeof(t_vector))))
{
free(map_r);
return (NULL);
}
ft_memcpy(map_r->vec, mp->vec, sizeof(t_vector));
if (!(map_r->vec->data = malloc(map_r->vec->cap)))
{
free(map_r);
free(map_r->vec);
return (NULL);
}
ft_memcpy(map_r->vec->data, mp->vec->data, mp->vec->len);
ft_mapiter(map_r, f, data);
return (map_r);
}