This repository was archived by the owner on Mar 3, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit.c
95 lines (86 loc) · 2.6 KB
/
init.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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* init.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mhedeon <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/02/26 21:16:25 by mhedeon #+# #+# */
/* Updated: 2019/02/28 18:41:57 by mhedeon ### ########.fr */
/* */
/* ************************************************************************** */
#include "rtv1.h"
int init(t_rtv *rtv)
{
rtv->win = NULL;
rtv->tex = NULL;
rtv->ren = NULL;
rtv->buff = NULL;
rtv->obj = NULL;
rtv->light = NULL;
if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
return (error_log("Unable to initialize SDL:"));
if ((rtv->win = SDL_CreateWindow("rtv", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT,
SDL_WINDOW_SHOWN)) == NULL)
return (error_log("Could not create window:"));
if ((rtv->ren = SDL_CreateRenderer(rtv->win, -1, SDL_RENDERER_ACCELERATED |
SDL_RENDERER_PRESENTVSYNC)) == NULL)
return (error_log("Could not create renderer:"));
if ((rtv->tex = SDL_CreateTexture(rtv->ren, SDL_PIXELFORMAT_RGBA8888,
SDL_TEXTUREACCESS_TARGET, SCREEN_WIDTH, SCREEN_HEIGHT)) == NULL)
return (error_log("Could not create texture:"));
if ((rtv->buff = (Uint32 *)malloc(sizeof(Uint32) *
(SCREEN_HEIGHT * SCREEN_WIDTH))) == NULL)
return (error_log("Could not allocate memory for buff"));
clear_buffer(rtv);
return (1);
}
int garbage(t_rtv *rtv)
{
t_object *o_tmp;
t_light *l_tmp;
while (rtv->obj != NULL)
{
o_tmp = rtv->obj;
rtv->obj = rtv->obj->next;
free(o_tmp->data);
free(o_tmp);
}
while (rtv->light != NULL)
{
l_tmp = rtv->light;
rtv->light = rtv->light->next;
free(l_tmp);
}
SDL_DestroyTexture(rtv->tex);
SDL_DestroyRenderer(rtv->ren);
SDL_DestroyWindow(rtv->win);
if (rtv->buff != NULL)
free(rtv->buff);
free(rtv);
SDL_Quit();
return (0);
}
int error_log(char *message)
{
SDL_Log("\x1b[31m%s %s\x1b[0m\n", message, SDL_GetError());
return (0);
}
int matrix_height(char **m)
{
int i;
i = 0;
while (m[i])
i++;
return (i);
}
void matrix_del(char **m)
{
int i;
i = -1;
while (m[++i])
free(m[i]);
free(m[i]);
free(m);
}