Render text as you type
This commit is contained in:
parent
4f1714b0f5
commit
93ec09351a
18
tide.odin
18
tide.odin
@ -91,7 +91,7 @@ sdl_init :: proc() -> (ok: bool) {
|
||||
process_input :: proc() {
|
||||
e: sdl.Event
|
||||
|
||||
state.buffer_dirty = true
|
||||
state.buffer_dirty = false
|
||||
|
||||
for sdl.PollEvent(&e) {
|
||||
#partial switch(e.type) {
|
||||
@ -106,6 +106,10 @@ process_input :: proc() {
|
||||
state.buffer_dirty = true
|
||||
fmt.println("Key Pressed: BACKSPACE")
|
||||
}
|
||||
case .TEXTINPUT:
|
||||
key := string(cstring(raw_data(e.text.text[:])))
|
||||
strings.write_string(&ctx.buffer_text.builder, key)
|
||||
state.buffer_dirty = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -116,11 +120,12 @@ update :: proc() {
|
||||
color := sdl.Color{ 0, 0, 0, 255}
|
||||
|
||||
str := strings.to_cstring(&ctx.buffer_text.builder)
|
||||
ctx.text_surface = ttf.RenderText_Blended(ctx.font, str, color);
|
||||
ctx.text_surface = ttf.RenderUTF8_Blended(ctx.font, str, color);
|
||||
if (ctx.text_surface == nil) {
|
||||
log.errorf(sdl.GetErrorString())
|
||||
os.exit(1)
|
||||
}
|
||||
ctx.ftex = sdl.CreateTextureFromSurface(ctx.renderer, ctx.text_surface);
|
||||
}
|
||||
}
|
||||
|
||||
@ -128,12 +133,13 @@ draw :: proc() {
|
||||
sdl.SetRenderDrawColor(ctx.renderer, 250, 250, 250, 0xff)
|
||||
sdl.RenderClear(ctx.renderer)
|
||||
|
||||
ctx.ftex = sdl.CreateTextureFromSurface(ctx.renderer, ctx.text_surface);
|
||||
|
||||
src := sdl.Rect { 0, 0, ctx.text_surface.w, ctx.text_surface.h }
|
||||
dest := sdl.Rect { 0, 0, ctx.text_surface.w, ctx.text_surface.h }
|
||||
|
||||
sdl.RenderCopy(ctx.renderer, ctx.ftex, &src, &dest)
|
||||
if ctx.ftex != nil {
|
||||
src := sdl.Rect { 0, 0, ctx.text_surface.w, ctx.text_surface.h }
|
||||
dest := sdl.Rect { 0, 0, ctx.text_surface.w, ctx.text_surface.h }
|
||||
sdl.RenderCopy(ctx.renderer, ctx.ftex, &src, &dest)
|
||||
}
|
||||
|
||||
sdl.RenderPresent(ctx.renderer)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user