2018-12-06 23:49:04 +08:00

112 lines
2.2 KiB
Go

package UI
import (
//"fmt"
"github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf"
"github.com/cuu/gogame/surface"
"github.com/cuu/gogame/rect"
"github.com/cuu/gogame/color"
"github.com/cuu/gogame/font"
"github.com/cuu/gogame/draw"
)
type LabelInterface interface {
Init( text string, font_obj *ttf.Font,col *color.Color )
SetCanvasHWND( canvas *sdl.Surface)
Coord() (int,int)
Size() (int,int)
NewCoord(x,y int)
NewSize(w,h int)
SetColor(col *color.Color )
GetText() string
SetText(text string)
Draw()
DrawCenter(bold bool)
}
type Label struct {
Widget
Text string
FontObj *ttf.Font
Color *color.Color
CanvasHWND *sdl.Surface
// TextSurf *sdl.Surface
}
func NewLabel() *Label {
l := &Label{}
l.Color = &color.Color{83,83,83,255}
return l
}
func (self *Label) Init(text string, font_obj *ttf.Font,col *color.Color ) {
if col != nil {
self.Color = col
}
self.Text = text
self.FontObj = font_obj
self.Width,self.Height = font.Size(self.FontObj, self.Text)
}
func (self *Label) SetCanvasHWND( canvas *sdl.Surface) {
self.CanvasHWND = canvas
}
func (self *Label) Coord() (int,int) {
return self.PosX,self.PosY
}
func (self *Label) Size() (int,int) {
return self.Width,self.Height
}
func (self *Label) NewCoord(x,y int) {
self.PosX = x
self.PosY = y
}
func (self *Label) SetColor(col *color.Color){
if col != nil {
self.Color = col
}
}
func (self *Label) GetText() string {
return self.Text
}
func (self *Label) SetText(text string) {
self.Text = text
self.Width,self.Height = font.Size(self.FontObj, self.Text)
}
func (self *Label) DrawCenter(bold bool) { // default bold is false
font.SetBold(self.FontObj,bold)
my_text := font.Render(self.FontObj,self.Text, true, self.Color, nil)
rect_ := draw.MidRect(self.PosX,self.PosY,self.Width,self.Height,Width,Height)
surface.Blit(self.CanvasHWND,my_text,rect_,nil)
}
func (self *Label) Draw() {
font.SetBold(self.FontObj,false) // avoing same font tangling set_bold to others
my_text := font.Render(self.FontObj,self.Text, true, self.Color, nil)
rect_ := rect.Rect(self.PosX,self.PosY,self.Width,self.Height)
surface.Blit(self.CanvasHWND,my_text,&rect_,nil)
}