123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 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"
- )
- 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)
-
- }
|