mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-16 02:42:22 -07:00
31 lines
650 B
Odin
31 lines
650 B
Odin
type Bitmap: struct {
|
|
width, height: i32,
|
|
comp: i32,
|
|
data: []u8,
|
|
}
|
|
|
|
make_bitmap :: proc(filename: string) -> Bitmap {
|
|
stbi_load :: proc(filename: ^u8, x, y, comp: ^i32, req_comp: i32) -> ^u8 #foreign
|
|
|
|
c_buf: [1024]u8
|
|
bytes := filename as []byte
|
|
str_len := copy(c_buf[:], bytes)
|
|
|
|
b: Bitmap
|
|
pixels := stbi_load(^c_buf[0], ^b.width, ^b.height, ^b.comp, 4)
|
|
len := (b.width*b.height*b.comp) as int
|
|
b.data = slice_ptr(pixels, len)
|
|
|
|
return b
|
|
}
|
|
|
|
destroy_bitmap :: proc(b: ^Bitmap) {
|
|
stbi_image_free :: proc(retval_from_stbi_load: rawptr) #foreign
|
|
|
|
stbi_image_free(^b.data[0])
|
|
b.data = b.data[:0]
|
|
b.width = 0
|
|
b.height = 0
|
|
b.comp = 0
|
|
}
|