sdl - Nim and SDL2 trouble with Rect -


i have following nim+official libsdl2 wrapper code

import sdl2  discard sdl2.init(init_everything)  let   window = createwindow("tic-tac-toe", sdl_windowpos_centered, sdl_windowpos_centered, 600, 390, sdl_window_shown)   renderer = createrenderer(window, -1, renderer_accelerated or renderer_presentvsync or renderer_targettexture)  proc loadimage(file: string): textureptr =   let loadedimage = loadbmp(file)   let texture = createtexturefromsurface(renderer, loadedimage)   freesurface(loadedimage)   return texture  proc applysurface(x: cint, y: cint, tex: textureptr, rend: rendererptr) =   var pos: rect   pos.x = x   pos.y = y   querytexture(tex, nil, nil, pos.w, pos.h)   copy(rend, tex, nil, pos)  let   background = loadimage("resources/bg.bmp")  clear(renderer) applysurface(0, 0, background, renderer) present(renderer)  var   evt = sdl2.defaultevent   rungame = true  while rungame:   while pollevent(evt):     if evt.kind == quitevent:       rungame = false       break  destroy window 

and there error during compilation:

source.nim(19, 15) error: type mismatch: got (textureptr, nil, nil, cint, cint) expected 1 of:  sdl2.querytexture(texture: textureptr, format: ptr uint32, access: ptr cint, w: ptr cint, h: ptr cint) 

same 20th line:

source.nim(20, 7) error: type mismatch: got (rendererptr, textureptr, nil, rect) expected 1 of:  system.copy(s: string, first: int) system.copy(s: string, first: int, last: int) sdl2.copy(renderer: rendererptr, texture: textureptr, srcrect: ptr rect, dstrect: ptr rect) 

if replace pos nil in copy() , comment querytexture(), okay. please, me solve problem.

your problem procs require ptr respective data types, not data itself. instance ptr cint required, passing plain cint. have take addr of cint ptr cint. example:

var w = pos.w var h = pos.h querytexture(tex, nil, nil, w.addr, h.addr) 

note in order "take address" need variable of var type (for details on see this question). since pos var, pos.w.addr , pos.h.addr should work. have take pos.addr last parameter of copy.


Comments

Popular posts from this blog

facebook - android ACTION_SEND to share with specific application only -

python - Creating a new virtualenv gives a permissions error -

javascript - cocos2d-js draw circle not instantly -