From 93ec09351af9c082f4cc7e927caa27f6b275f5d3 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Fri, 6 Sep 2024 10:17:37 +0700 Subject: [PATCH] Render text as you type --- tide.odin | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tide.odin b/tide.odin index daf0493..11cd227 100644 --- a/tide.odin +++ b/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) }