From f09d855593cc5405937d20571526f81583f0cb8b Mon Sep 17 00:00:00 2001 From: ubq323 Date: Thu, 21 Mar 2024 21:35:15 +0000 Subject: the --- main.ha | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 main.ha (limited to 'main.ha') 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); + }; + + + + +}; -- cgit v1.2.3