3
3
// SPDX-License-Identifier: Zlib
4
4
5
5
const std = @import ("std" );
6
- const c = @import ("sdl" ).c ;
7
-
8
- const font_file = @import ("fonts" ).intel_one_mono_regular ;
6
+ const sdl = @import ("sdl" ).c ;
7
+ const font_file = @import ("sdl" ).fonts .intel_one_mono_regular ;
9
8
10
9
pub fn main () ! void {
11
10
var arena = std .heap .ArenaAllocator .init (std .heap .page_allocator );
@@ -14,75 +13,75 @@ pub fn main() !void {
14
13
15
14
//
16
15
17
- if (! c .SDL_Init (c .SDL_INIT_VIDEO )) {
18
- std .log .err ("Unable to initialize SDL: {s}" , .{c .SDL_GetError ()});
16
+ if (! sdl .SDL_Init (sdl .SDL_INIT_VIDEO )) {
17
+ std .log .err ("Unable to initialize SDL: {s}" , .{sdl .SDL_GetError ()});
19
18
return error .SDLInitializationFailed ;
20
19
}
21
- defer c .SDL_Quit ();
20
+ defer sdl .SDL_Quit ();
22
21
23
- if (! c .TTF_Init ()) {
24
- std .log .err ("TTF_Init: {s}" , .{c .SDL_GetError ()});
22
+ if (! sdl .TTF_Init ()) {
23
+ std .log .err ("TTF_Init: {s}" , .{sdl .SDL_GetError ()});
25
24
return error .TTF_Init ;
26
25
}
27
- defer c .SDL_Quit ();
26
+ defer sdl .SDL_Quit ();
28
27
29
- const data_dir_cstr = c .SDL_GetBasePath () orelse {
30
- std .log .err ("SDL_GetBasePath: {s}" , .{c .SDL_GetError ()});
28
+ const data_dir_cstr = sdl .SDL_GetBasePath () orelse {
29
+ std .log .err ("SDL_GetBasePath: {s}" , .{sdl .SDL_GetError ()});
31
30
return error .SDL_GetBasePath ;
32
31
};
33
32
34
33
const data_dir = std .mem .span (data_dir_cstr );
35
34
std .log .debug ("data_dir: {s}\n " , .{data_dir });
36
35
37
36
std .log .debug ("font_file.len: {d}" , .{font_file .len });
38
- const font_buffer = c .SDL_IOFromConstMem (font_file , font_file .len ) orelse {
39
- std .log .err ("SDL_IOFromConstMem: {s}" , .{c .SDL_GetError ()});
37
+ const font_buffer = sdl .SDL_IOFromConstMem (font_file , font_file .len ) orelse {
38
+ std .log .err ("SDL_IOFromConstMem: {s}" , .{sdl .SDL_GetError ()});
40
39
return error .SDL_IOFromConstMem ;
41
40
};
42
41
43
- const font = c .TTF_OpenFontIO (font_buffer , false , 30 ) orelse {
44
- std .log .err ("TTF_OpenFontIO: {s}" , .{c .SDL_GetError ()});
42
+ const font = sdl .TTF_OpenFontIO (font_buffer , false , 30 ) orelse {
43
+ std .log .err ("TTF_OpenFontIO: {s}" , .{sdl .SDL_GetError ()});
45
44
return error .TTF_OpenFontIO ;
46
45
};
47
- defer c .TTF_CloseFont (font );
46
+ defer sdl .TTF_CloseFont (font );
48
47
49
- const window = c .SDL_CreateWindow (
48
+ const window = sdl .SDL_CreateWindow (
50
49
"Example SDL2 window" ,
51
50
400 ,
52
51
400 ,
53
- c .SDL_WINDOW_OPENGL | c .SDL_WINDOW_RESIZABLE ,
52
+ sdl .SDL_WINDOW_OPENGL | sdl .SDL_WINDOW_RESIZABLE ,
54
53
) orelse {
55
- std .log .err ("SDL_CreateWindow: {s}" , .{c .SDL_GetError ()});
54
+ std .log .err ("SDL_CreateWindow: {s}" , .{sdl .SDL_GetError ()});
56
55
return error .SDL_CreateWindow ;
57
56
};
58
- defer c .SDL_DestroyWindow (window );
57
+ defer sdl .SDL_DestroyWindow (window );
59
58
60
- const renderer = c .SDL_CreateRenderer (
59
+ const renderer = sdl .SDL_CreateRenderer (
61
60
window ,
62
61
null ,
63
62
) orelse {
64
- std .log .err ("SDL_CreateRenderer: {s}" , .{c .SDL_GetError ()});
63
+ std .log .err ("SDL_CreateRenderer: {s}" , .{sdl .SDL_GetError ()});
65
64
return error .SDL_CreateRenderer ;
66
65
};
67
- defer c .SDL_DestroyRenderer (renderer );
66
+ defer sdl .SDL_DestroyRenderer (renderer );
68
67
69
68
var quit = false ;
70
69
var text : []const u8 = "" ;
71
70
72
71
while (! quit ) {
73
- const start_time = c .SDL_GetTicks ();
72
+ const start_time = sdl .SDL_GetTicks ();
74
73
75
- var event : c .SDL_Event = undefined ;
74
+ var event : sdl .SDL_Event = undefined ;
76
75
77
- while (c .SDL_PollEvent (& event )) {
76
+ while (sdl .SDL_PollEvent (& event )) {
78
77
switch (event .type ) {
79
- c .SDL_EVENT_QUIT = > {
78
+ sdl .SDL_EVENT_QUIT = > {
80
79
std .log .debug ("exit" , .{});
81
80
quit = true ;
82
81
},
83
- c .SDL_EVENT_KEY_DOWN = > {
82
+ sdl .SDL_EVENT_KEY_DOWN = > {
84
83
switch (event .key .key ) {
85
- c .SDLK_A = > {
84
+ sdl .SDLK_A = > {
86
85
std .log .debug ("a" , .{});
87
86
text = "a" ;
88
87
},
@@ -92,55 +91,55 @@ pub fn main() !void {
92
91
},
93
92
}
94
93
},
95
- c .SDL_EVENT_WINDOW_RESIZED = > {
94
+ sdl .SDL_EVENT_WINDOW_RESIZED = > {
96
95
std .log .debug ("resized" , .{});
97
96
},
98
97
else = > {},
99
98
}
100
99
}
101
100
102
101
// clear screen
103
- if (! c .SDL_SetRenderDrawColor (renderer , 255 , 255 , 255 , 0 )) {
104
- std .log .err ("SDL_SetRenderDrawColor: {s}" , .{c .SDL_GetError ()});
102
+ if (! sdl .SDL_SetRenderDrawColor (renderer , 255 , 255 , 255 , 0 )) {
103
+ std .log .err ("SDL_SetRenderDrawColor: {s}" , .{sdl .SDL_GetError ()});
105
104
return error .SDL_SetRenderDrawColor ;
106
105
}
107
- _ = c .SDL_RenderClear (renderer );
106
+ _ = sdl .SDL_RenderClear (renderer );
108
107
109
108
// render text
110
109
if (! std .mem .eql (u8 , text , "" )) {
111
- const color = c .SDL_Color {
110
+ const color = sdl .SDL_Color {
112
111
.r = 0 ,
113
112
.g = 0 ,
114
113
.b = 0 ,
115
114
.a = @floor (0.87 * 255 ),
116
115
};
117
116
118
117
const c_str = try allocator .dupeZ (u8 , text );
119
- const text_surface = c .TTF_RenderText_Solid (font , c_str , color ) orelse {
120
- std .log .err ("TTF_RenderText_Solid: {s}" , .{c .SDL_GetError ()});
118
+ const text_surface = sdl .TTF_RenderText_Solid (font , c_str , color ) orelse {
119
+ std .log .err ("TTF_RenderText_Solid: {s}" , .{sdl .SDL_GetError ()});
121
120
return error .TTF_RenderText_Solid ;
122
121
};
123
- defer c .SDL_DestroySurface (text_surface );
122
+ defer sdl .SDL_DestroySurface (text_surface );
124
123
125
- const texture = c .SDL_CreateTextureFromSurface (renderer , text_surface ) orelse {
126
- std .log .err ("SDL_CreateTextureFromSurface: {s}" , .{c .SDL_GetError ()});
124
+ const texture = sdl .SDL_CreateTextureFromSurface (renderer , text_surface ) orelse {
125
+ std .log .err ("SDL_CreateTextureFromSurface: {s}" , .{sdl .SDL_GetError ()});
127
126
return error .SDL_CreateTextureFromSurface ;
128
127
};
129
- defer c .SDL_DestroyTexture (texture );
128
+ defer sdl .SDL_DestroyTexture (texture );
130
129
131
- const rect = c .SDL_FRect {
130
+ const rect = sdl .SDL_FRect {
132
131
.x = 42 ,
133
132
.y = 42 ,
134
133
.w = @floatFromInt (text_surface .* .w ),
135
134
.h = @floatFromInt (text_surface .* .h ),
136
135
};
137
136
138
- _ = c .SDL_RenderTexture (renderer , texture , null , & rect );
137
+ _ = sdl .SDL_RenderTexture (renderer , texture , null , & rect );
139
138
}
140
139
141
- _ = c .SDL_RenderPresent (renderer );
140
+ _ = sdl .SDL_RenderPresent (renderer );
142
141
143
- const end_time = c .SDL_GetTicks ();
142
+ const end_time = sdl .SDL_GetTicks ();
144
143
const elapsed = end_time - start_time ;
145
144
146
145
const FRAMES_PER_SECOND = 60 ;
@@ -151,6 +150,6 @@ pub fn main() !void {
151
150
else
152
151
MS_PER_FRAME - elapsed ;
153
152
154
- c .SDL_DelayNS (delay * std .time .ns_per_ms );
153
+ sdl .SDL_DelayNS (delay * std .time .ns_per_ms );
155
154
}
156
155
}
0 commit comments