diff tests/test_font.nim @ 416:73cca428e27a

did: changes
author Sam <sam@basx.dev>
date Sat, 27 Jan 2024 21:08:31 +0700
parents 25db1fa56cb7
children b032768df631
line wrap: on
line diff
--- a/tests/test_font.nim	Sat Jan 27 00:31:11 2024 +0700
+++ b/tests/test_font.nim	Sat Jan 27 21:08:31 2024 +0700
@@ -10,29 +10,32 @@
   # build scene
   var scene = Scene(name: "main")
   # var font = loadFont("DejaVuSans.ttf", lineHeightPixels=90'f32, charset="abcdefghijklmnopqrstuvwxyz ".toRunes)
-  var font = loadFont("DejaVuSans.ttf", lineHeightPixels=180'f32)
-  var textbox = initText(32, font, "", color=newVec4f(1, 0, 0, 1))
-  let fontscale = 0.002
+  var font = loadFont("DejaVuSans.ttf", lineHeightPixels = 250'f32)
+  var textbox = initText(32, font, "_", color = newVec4f(1, 0, 0, 1))
+  let fontscale = 0.001
   scene.add textbox
   textbox.mesh.transform = scale(fontscale, fontscale)
   engine.loadScene(scene)
 
+  let cursor = Rune('_')
   while engine.updateInputs() == Running and not engine.keyIsDown(Escape):
     if engine.windowWasResized():
       var winSize = engine.getWindow().size
       textbox.mesh.transform = scale(fontscale * (winSize[1] / winSize[0]), fontscale)
-    for c in [Key.A, Key.B, Key.C, Key.D, Key.E, Key.F, Key.G, Key.H, Key.I, Key.J, Key.K, Key.L, Key.M, Key.N, Key.O, Key.P, Key.Q, Key.R, Key.S, Key.T, Key.U, Key.V, Key.W, Key.X, Key.Y, Key.Z]:
+    for c in [Key.A, Key.B, Key.C, Key.D, Key.E, Key.F, Key.G, Key.H, Key.I,
+        Key.J, Key.K, Key.L, Key.M, Key.N, Key.O, Key.P, Key.Q, Key.R, Key.S,
+        Key.T, Key.U, Key.V, Key.W, Key.X, Key.Y, Key.Z]:
       if engine.keyWasPressed(c):
         if engine.keyIsDown(ShiftL) or engine.keyIsDown(ShiftR):
-          textbox.text = textbox.text & ($c).toRunes
+          textbox.text = textbox.text[0 ..< ^1] & ($c).toRunes & cursor
         else:
-          textbox.text = textbox.text & ($c).toRunes[0].toLower()
+          textbox.text = textbox.text[0 ..< ^1] & ($c).toRunes[0].toLower() & cursor
     if engine.keyWasPressed(Enter):
-        textbox.text = textbox.text & Rune('\n')
+      textbox.text = textbox.text[0 ..< ^1] & Rune('\n') & cursor
     if engine.keyWasPressed(Space):
-        textbox.text = textbox.text & Rune(' ')
-    if engine.keyWasPressed(Backspace) and textbox.text.len > 0:
-          textbox.text = textbox.text[0 ..< ^1]
+      textbox.text = textbox.text[0 ..< ^1] & Rune(' ') & cursor
+    if engine.keyWasPressed(Backspace) and textbox.text.len > 1:
+      textbox.text = textbox.text[0 ..< ^2] & cursor
     engine.renderScene(scene)
   engine.destroy()