Re: Help Wrapping TTF_Font for EuSDL[SOLVED SORTA]
- Posted by Icy_Viking
Aug 01, 2019
--wrapper code
public constant xTTF_RenderText_Solid = define_c_func(ttf,"+TTF_RenderText_Solid",{C_POINTER,C_POINTER,C_UINT,C_UINT,C_UINT,C_UINT},C_POINTER)
--SDLColor is a struct, so it is declared as 4 separate C_UINT's (r,g,b,u) u means unused
public function TTF_RenderText_Solid(atom font,sequence text,atom r,atom g,atom b,atom u)
atom str = allocate_string(text,1)
return c_func(xTTF_RenderText_Solid,{font,str,r,g,b,u})
end function
--Hello world appears as one big font covering most of the screen
without warning
include std/machine.e
include EuSDL2.ew
include EuSDLTTF.ew
include flags.e
atom x = SDL_Init(SDL_INIT_VIDEO)
atom win = SDL_CreateWindow("Font Example",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,640,480,SDL_WINDOW_SHOWN)
atom ren = SDL_CreateRenderer(win,-1,SDL_RENDERER_ACCELERATED)
atom running = 1
atom key = 0
atom f = TTF_Init()
if f = 1 then
puts(1,"Failed to init TTF!\n")
abort(0)
end if
f = TTF_OpenFont("arial.ttf",10)
procedure calc_rect(atom rect,integer sx,integer sy,integer tx,integer ty)
poke4(rect,sx)
poke4(rect+4,sy)
poke4(rect+8,tx)
poke4(rect+12,ty)
end procedure
atom w = 0
atom he = 0
atom drect = allocate(10)
calc_rect(drect,10,10,w,he)
atom h = TTF_RenderText_Solid(f,"Hello World",255,255,0,0)
atom ht = SDL_CreateTextureFromSurface(ren,h)
SDL_QueryTexture(ht,0,0,w,he)
while running = 1 do
SDL_PumpEvents()
key = SDL_GetKeyboardState(key)
if peek(key+SDL_SCANCODE_ESCAPE) > 0 then
running = 0
end if
SDL_RenderClear(ren)
SDL_RenderCopy(ren,ht,0,0) --putting drect as the last parameter doesen't show anything, leaving it as 0 shows "hello world"
SDL_RenderPresent(ren)
end while
SDL_DestroyRenderer(ren)
SDL_DestroyWindow(win)
TTF_CloseFont(f)
SDL_DestroyTexture(ht)
SDL_FreeSurface(h)
TTF_Quit()
SDL_Quit()
Not Categorized, Please Help
|
|