1
0
Fork 0
auts/isotest/draw.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)
}