73 lines
1.3 KiB
V
73 lines
1.3 KiB
V
module main
|
|
|
|
import nsauzede.vsdl2
|
|
import nsauzede.vsdl2.image as img
|
|
|
|
struct Drawer {
|
|
mut:
|
|
w int
|
|
h int
|
|
|
|
ctx &Context
|
|
|
|
// Sdl
|
|
renderer voidptr
|
|
}
|
|
|
|
fn new_drawer(mut ctx Context) &Drawer {
|
|
println("new_drawer()")
|
|
|
|
d := &Drawer{
|
|
ctx: ctx
|
|
}
|
|
|
|
// Update ctx
|
|
ctx.drawer = d
|
|
|
|
return d
|
|
}
|
|
|
|
fn (mut d Drawer) init(w, h int, renderer voidptr) {
|
|
// XXX fixme?
|
|
//d.renderer = d.ctx.app.renderer
|
|
d.w = w
|
|
d.h = h
|
|
d.renderer = renderer
|
|
}
|
|
|
|
// Load image as tex
|
|
fn (mut d Drawer) load_image_tex(path string) voidptr {
|
|
sdl_img := img.load(path)
|
|
mut tex := voidptr(0)
|
|
|
|
if !isnil(sdl_img) {
|
|
tex = vsdl2.create_texture_from_surface(d.renderer, sdl_img)
|
|
}
|
|
|
|
return tex
|
|
}
|
|
|
|
fn (mut d Drawer) draw_image() {
|
|
|
|
}
|
|
|
|
fn (mut d Drawer) draw_tex(tex voidptr, px, py int) {
|
|
if isnil(tex) {
|
|
println("tex is nil")
|
|
pp(2)
|
|
//return
|
|
}
|
|
texw := 0
|
|
texh := 0
|
|
C.SDL_QueryTexture(tex, 0, 0, &texw, &texh)
|
|
//dstrect := vsdl2.Rect { (d.w / 2) - (texw / 2), 20, texw, texh }
|
|
dstrect := vsdl2.Rect { px, py, texw, texh }
|
|
// Currently we can't seem to use vsdl2.render_copy when we need to pass a nil pointer (eg: srcrect to be NULL)
|
|
//vsdl2.render_copy(g.sdl.renderer, tv_logo, 0, &dstrect)
|
|
C.SDL_RenderCopy(d.renderer, tex, voidptr(0), voidptr(&dstrect))
|
|
}
|
|
|
|
fn (mut d Drawer) clear() {
|
|
C.SDL_RenderClear(d.renderer)
|
|
}
|