1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-09-28 06:06:29 -04:00
OpenDiablo2/d2core/d2gui/label.go
gravestench 783993470e
Lint error cleanup1 (#779)
* fixed lint error in d2app/app.go

* go fmt entire project

* adding doc.go for d2records

* fixed lint issues in d2core/d2map

* fixed lint error in d2interface/palette.go

* fixed lint error in  d2core/d2hero/hero_state_factory.go

* adding dov.go to d2common/d2geom

* fixing lint errors in d2common/d2loader

* adding doc.go to d2common/d2cache

* adding doc files for d2datautils, d2util, d2path

* adding package doc strings for mapgen, in-geam help screen, and tcp client connection

* removed all cuddling lint errors

* changed stamina equality check to '<=' instead of '<'
2020-10-22 01:12:06 -04:00

77 lines
1.3 KiB
Go

package d2gui
import (
"log"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2asset"
)
// Label is renderable text
type Label struct {
widgetBase
renderer d2interface.Renderer
text string
font *d2asset.Font
surface d2interface.Surface
}
func createLabel(renderer d2interface.Renderer, text string, font *d2asset.Font) *Label {
label := &Label{
font: font,
renderer: renderer,
}
err := label.setText(text)
if err != nil {
log.Print(err)
return nil
}
label.SetVisible(true)
return label
}
func (l *Label) render(target d2interface.Surface) error {
return target.Render(l.surface)
}
func (l *Label) getSize() (width, height int) {
return l.surface.GetSize()
}
// GetText returns the label text
func (l *Label) GetText() string {
return l.text
}
// SetText sets the label text
func (l *Label) SetText(text string) error {
if text == l.text {
return nil
}
return l.setText(text)
}
func (l *Label) setText(text string) error {
width, height := l.font.GetTextMetrics(text)
surface, err := l.renderer.NewSurface(width, height, d2enum.FilterNearest)
if err != nil {
return err
}
if err := l.font.RenderText(text, surface); err != nil {
return err
}
l.surface = surface
l.text = text
return nil
}