code: 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)
  	}
  }
docs: // Repaint draws the control on its View surface