button.go
func (b *Button) Draw() {
	if b.hidden {
		return
	}

	b.mtx.RLock()
	defer b.mtx.RUnlock()
	PushAttributes()
	defer PopAttributes()

	x, y := b.Pos()
	w, h := b.Size()

	fg, bg := b.fg, b.bg
	shadow := RealColor(b.shadowColor, b.Style(), ColorButtonShadow)
	if b.disabled {
		fg, bg = RealColor(fg, b.Style(), ColorButtonDisabledText), RealColor(bg, b.Style(), ColorButtonDisabledBack)
	} else if b.Active() {
		fg, bg = RealColor(b.fgActive, b.Style(), ColorButtonActiveText), RealColor(b.bgActive, b.Style(), ColorButtonActiveBack)
	} else {
		fg, bg = RealColor(fg, b.Style(), ColorButtonText), RealColor(bg, b.Style(), ColorButtonBack)
	}

	dy := int((h - 1) / 2)
	SetTextColor(fg)
	shift, text := AlignColorizedText(b.title, w-1, b.align)
	if b.isPressed() == 0 {
		SetBackColor(shadow)
		FillRect(x+1, y+1, w-1, h-1, ' ')
		SetBackColor(bg)
		FillRect(x, y, w-1, h-1, ' ')
		DrawText(x+shift, y+dy, text)
	} else {
		SetBackColor(bg)
		FillRect(x+1, y+1, w-1, h-1, ' ')
		DrawText(x+1+shift, y+1+dy, b.title)
	}
}
func (b *Button) Draw() {
	if b.hidden {
		return
	}

	b.mtx.RLock()
	defer b.mtx.RUnlock()
	PushAttributes()
	defer PopAttributes()

	x, y := b.Pos()
	w, h := b.Size()

	fg, bg := b.fg, b.bg
	shadow := RealColor(b.shadowColor, b.Style(), ColorButtonShadow)
	if b.disabled {
		fg, bg = RealColor(fg, b.Style(), ColorButtonDisabledText), RealColor(bg, b.Style(), ColorButtonDisabledBack)
	} else if b.Active() {
		fg, bg = RealColor(b.fgActive, b.Style(), ColorButtonActiveText), RealColor(b.bgActive, b.Style(), ColorButtonActiveBack)
	} else {
		fg, bg = RealColor(fg, b.Style(), ColorButtonText), RealColor(bg, b.Style(), ColorButtonBack)
	}

	dy := int((h - 1) / 2)
	SetTextColor(fg)
	shift, text := AlignColorizedText(b.title, w-1, b.align)
	if b.isPressed() == 0 {
		SetBackColor(shadow)
		FillRect(x+1, y+1, w-1, h-1, ' ')
		SetBackColor(bg)
		FillRect(x, y, w-1, h-1, ' ')
		DrawText(x+shift, y+dy, text)
	} else {
		SetBackColor(bg)
		FillRect(x+1, y+1, w-1, h-1, ' ')
		DrawText(x+1+shift, y+1+dy, b.title)
	}
}
func ( b * Button ) Draw ( ) { if b . hidden { return } b . mtx . RLock ( ) defer b . mtx . RUnlock ( ) PushAttributes ( ) defer PopAttributes ( ) x , y := b . Pos ( ) w , h := b . Size ( ) fg , bg := b . fg , b . bg shadow := RealColor ( b . shadowColor , b . Style ( ) , ColorButtonShadow ) if b . disabled { fg , bg = RealColor ( fg , b . Style ( ) , ColorButtonDisabledText ) , RealColor ( bg , b . Style ( ) , ColorButtonDisabledBack ) } else if b . Active ( ) { fg , bg = RealColor ( b . fgActive , b . Style ( ) , ColorButtonActiveText ) , RealColor ( b . bgActive , b . Style ( ) , ColorButtonActiveBack ) } else { fg , bg = RealColor ( fg , b . Style ( ) , ColorButtonText ) , RealColor ( bg , b . Style ( ) , ColorButtonBack ) } dy := int ( ( h - 1 ) / 2 ) SetTextColor ( fg ) shift , text := AlignColorizedText ( b . title , w - 1 , b . align ) if b . isPressed ( ) == 0 { SetBackColor ( shadow ) FillRect ( x + 1 , y + 1 , w - 1 , h - 1 , ' ' ) SetBackColor ( bg ) FillRect ( x , y , w - 1 , h - 1 , ' ' ) DrawText ( x + shift , y + dy , text ) } else { SetBackColor ( bg ) FillRect ( x + 1 , y + 1 , w - 1 , h - 1 , ' ' ) DrawText ( x + 1 + shift , y + 1 + dy , b . title ) } }
// Repaint draws the control on its View surface
Repaint draws the control on its View surface