From 1847289fe55b98bb63f9b2eb745d0c58164a2016 Mon Sep 17 00:00:00 2001 From: bloeys Date: Fri, 15 Jul 2022 21:09:32 +0400 Subject: [PATCH] Wrapped text drawing --- glyphs/glyphs.go | 13 +++++++++++++ main.go | 7 ------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/glyphs/glyphs.go b/glyphs/glyphs.go index 360c91e..45421ab 100755 --- a/glyphs/glyphs.go +++ b/glyphs/glyphs.go @@ -90,11 +90,18 @@ func (gr *GlyphRend) DrawTextOpenGLAbs(text []rune, screenPos *gglm.Vec3, color run := &runs[runIndex] prevRune := invalidRune + screenWidthF32 := float32(gr.ScreenWidth) if run.IsLtr { for i := 0; i < len(run.Runes); i++ { gr.drawRune(run, i, prevRune, screenPos, pos, color, lineHeightF32, &bufIndex) prevRune = run.Runes[i] + + //Wrap + if pos.X()+gr.Atlas.SpaceAdvance >= screenWidthF32 { + screenPos.SetY(screenPos.Y() - lineHeightF32) + *pos = *screenPos.Clone() + } } } else { @@ -102,6 +109,12 @@ func (gr *GlyphRend) DrawTextOpenGLAbs(text []rune, screenPos *gglm.Vec3, color for i := len(run.Runes) - 1; i >= 0; i-- { gr.drawRune(run, i, prevRune, screenPos, pos, color, lineHeightF32, &bufIndex) prevRune = run.Runes[i] + + //Wrap + if pos.X()+gr.Atlas.SpaceAdvance >= screenWidthF32 { + screenPos.SetY(screenPos.Y() - lineHeightF32) + *pos = *screenPos.Clone() + } } } diff --git a/main.go b/main.go index a7ad04b..006eedc 100755 --- a/main.go +++ b/main.go @@ -562,13 +562,6 @@ func (p *program) DrawCursor() { } p.rend.Draw(p.gridMesh, gglm.NewTrMatId().Translate(pos).Scale(gglm.NewVec3(0.1*p.GlyphRend.Atlas.SpaceAdvance, p.GlyphRend.Atlas.LineHeight, 1)), p.gridMat) - - // @Debug draw line indicating last char in line - // pos = p.lastCmdCharPos.Clone() - // p.ScreenPosToGridPos(pos) - // p.gridMat.SetUnifVec4("color", gglm.NewVec4(1, 0, 0, 1)) - // p.rend.Draw(p.gridMesh, gglm.NewTrMatId().Translate(pos).Scale(gglm.NewVec3(0.1*p.GlyphRend.Atlas.SpaceAdvance, p.GlyphRend.Atlas.LineHeight, 1)), p.gridMat) - // p.gridMat.SetUnifVec4("color", gglm.NewVec4(1, 1, 1, 1)) } func (p *program) ScreenPosToGridPos(screenPos *gglm.Vec3) {