50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
// #import "base.kl"
|
|
#load "gdi32.kl"
|
|
#load "user32.kl"
|
|
|
|
Vec2I :: struct;; x: S32; y: S32
|
|
Vec2 :: struct;; x: F32; y: F32
|
|
|
|
Windows_Bitmap :: struct
|
|
size: Vec2I
|
|
data: *U32
|
|
hdc: HDC
|
|
dib: HBITMAP
|
|
|
|
create_bitmap :: (size: Vec2I, bottom_up: Bool = true): Windows_Bitmap
|
|
result: Windows_Bitmap = {size = size}
|
|
if bottom_up == false
|
|
result.size.y = -result.size.y
|
|
|
|
bminfo := BITMAPINFO{
|
|
BITMAPINFOHEADER{
|
|
biSize = size_of(BITMAPINFOHEADER),
|
|
biWidth = size.x->LONG,
|
|
biHeight = size.y->LONG,
|
|
biPlanes = 1,
|
|
biBitCount = 32,
|
|
biCompression = BI_RGB,
|
|
biXPelsPerMeter = 1,
|
|
biYPelsPerMeter = 1,
|
|
}
|
|
}
|
|
|
|
hdc := GetDC(0)
|
|
result.dib = CreateDIBSection(hdc, &bminfo, DIB_RGB_COLORS, &result.data->**void, 0, 0)
|
|
result.hdc = CreateCompatibleDC(hdc)
|
|
return result
|
|
|
|
|
|
window_procedure :: (hwnd: HWND, msg: UINT, wparam: WPARAM, lparam: LPARAM): LRESULT
|
|
if msg == WM_DESTROY
|
|
pass
|
|
|
|
main :: (argc: int, argv: **char): int
|
|
bitmap := create_bitmap({1280, 720})
|
|
WNDCLASS
|
|
// memory := os.reserve(size = 10000)
|
|
// os.commit(&memory, 1000)
|
|
// os.release(&memory)
|
|
// os.print("Hello world")
|
|
|