diff options
author | ubq323 <ubq323@ubq323.website> | 2024-03-21 21:35:15 +0000 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2024-03-21 21:35:15 +0000 |
commit | f09d855593cc5405937d20571526f81583f0cb8b (patch) | |
tree | 16519799b2aa0c6baa285d2979d0eb93c3b289fe /main.ha |
the
Diffstat (limited to 'main.ha')
-rw-r--r-- | main.ha | 62 |
1 files changed, 62 insertions, 0 deletions
@@ -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); + }; + + + + +}; |