Added an align method to label

This commit is contained in:
Sasha Koshka 2023-03-16 15:58:26 -04:00
parent b90ffeb4fd
commit 6258c77f86
2 changed files with 56 additions and 0 deletions

View File

@ -11,6 +11,7 @@ type Label struct {
*core.Core
core core.CoreControl
align textdraw.Align
wrap bool
text string
drawer textdraw.Drawer
@ -121,6 +122,20 @@ func (element *Label) SetWrap (wrap bool) {
}
}
// SetAlign sets the alignment method of the label.
func (element *Label) SetAlign (align textdraw.Align) {
if align == element.align { return }
element.align = align
element.drawer.SetAlign(align)
element.updateMinimumSize()
if element.core.HasImage () {
element.draw()
element.core.DamageAll()
}
}
// SetTheme sets the element's theme.
func (element *Label) SetTheme (new theme.Theme) {
if new == element.theme.Theme { return }

41
examples/align/main.go Normal file
View File

@ -0,0 +1,41 @@
package main
import "git.tebibyte.media/sashakoshka/tomo"
import "git.tebibyte.media/sashakoshka/tomo/textdraw"
import "git.tebibyte.media/sashakoshka/tomo/elements/basic"
import _ "git.tebibyte.media/sashakoshka/tomo/backends/all"
import "git.tebibyte.media/sashakoshka/tomo/elements/containers"
func main () {
tomo.Run(run)
}
func run () {
window, _ := tomo.NewWindow(360, 360)
window.SetTitle("Text alignment")
container := containers.NewDocumentContainer()
scrollContainer := containers.NewScrollContainer(false, true)
scrollContainer.Adopt(container)
window.Adopt(scrollContainer)
left := basicElements.NewLabel(text, true)
center := basicElements.NewLabel(text, true)
right := basicElements.NewLabel(text, true)
justify := basicElements.NewLabel(text, true)
left.SetAlign(textdraw.AlignLeft)
center.SetAlign(textdraw.AlignCenter)
right.SetAlign(textdraw.AlignRight)
justify.SetAlign(textdraw.AlignJustify)
container.Adopt(left)
container.Adopt(center)
container.Adopt(right)
container.Adopt(justify)
window.OnClose(tomo.Stop)
window.Show()
}
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Fermentum et sollicitudin ac orci phasellus egestas tellus rutrum. Aliquam vestibulum morbi blandit cursus risus at ultrices mi."