aboutsummaryrefslogtreecommitdiff
path: root/main.ha
diff options
context:
space:
mode:
Diffstat (limited to 'main.ha')
-rw-r--r--main.ha62
1 files changed, 62 insertions, 0 deletions
diff --git a/main.ha b/main.ha
new file mode 100644
index 0000000..42d42cf
--- /dev/null
+++ b/main.ha
@@ -0,0 +1,62 @@
+use fmt;
+use sdl2;
+
+export fn main() void = {
+ sdl2::SDL_Init(sdl2::SDL_INIT_VIDEO)!;
+ defer sdl2::SDL_Quit();
+
+ const win = sdl2::SDL_CreateWindow("hi", sdl2::SDL_WINDOWPOS_UNDEFINED, sdl2::SDL_WINDOWPOS_UNDEFINED, 640, 480, sdl2::SDL_WindowFlags::NONE)!;
+ defer sdl2::SDL_DestroyWindow(win);
+
+ const wsurf = sdl2::SDL_GetWindowSurface(win)!;
+ const format = wsurf.format;
+ assert(format.bytesperpixel == 4, "can only work with u32 pixels");
+ fmt::printfln("got format {}. bytes per pixel {}. r{:x} g{:x} b{:x} a{:x}",
+ format.format, format.bytesperpixel, format.rmask, format.gmask, format.bmask, format.amask)!;
+ fmt::printfln("red: {:x} green {:x} blue {:x}",
+ sdl2::SDL_MapRGB(format, 255, 0, 0),
+ sdl2::SDL_MapRGB(format, 0, 255, 0),
+ sdl2::SDL_MapRGB(format, 0, 0, 255))!;
+ fmt::println(wsurf.w * wsurf.h)!;
+
+ const pixels = (wsurf.pixels as *opaque: *[*]u32)[..wsurf.w * wsurf.h];
+
+
+ let quit = false;
+ let n = 0z;
+ for (!quit) {
+ let ev = sdl2::event { ... };
+ for (sdl2::SDL_PollEvent(&ev)! == 1) switch (ev.event_type) {
+ case sdl2::SDL_EventType::QUIT => quit = true;
+ case sdl2::SDL_EventType::KEYDOWN => {
+ const keysym = ev.key.keysym.sym;
+ if (keysym == sdl2::SDL_Keycode::ESCAPE) quit = true;
+ fmt::println("got key", keysym: int)!;
+ };
+ case => void;
+ };
+
+ for (let i = 0z; i < 100; i+=1) {
+ pixels[n] = sdl2::SDL_MapRGB(format, 0, 255, 0);
+ n += 1;
+ };
+
+
+ sdl2::SDL_UpdateWindowSurface(win)!;
+ sdl2::SDL_Delay(1000 / 60);
+
+ // sdl2::SDL_SetRenderDrawColor(render, 50, 50, 50, 255)!;
+ // sdl2::SDL_RenderClear(render)!;
+
+ // rect.x = (sdl2::SDL_GetTicks(): int)/100;
+ // sdl2::SDL_SetRenderDrawColor(render, 255, 0, 0, 0)!;
+ // sdl2::SDL_RenderFillRect(render, &rect)!;
+
+ // sdl2::SDL_RenderPresent(render);
+ // sdl2::SDL_Delay(1000 / 60);
+ };
+
+
+
+
+};