Function bodies 52 total
updateBinaryFade method · go · L396-L430 (35 LOC)viz.go
func (m *model) updateBinaryFade() {
h := int(m.remaining.Hours())
min := int(m.remaining.Minutes()) % 60
sec := int(m.remaining.Seconds()) % 60
var digits []int
if h > 0 {
digits = append(digits, h/10, h%10)
}
digits = append(digits, min/10, min%10, sec/10, sec%10)
bitValues := []int{8, 4, 2, 1}
totalBits := len(digits) * 4
currentBits := make([]bool, totalBits)
for di, d := range digits {
for bi, bv := range bitValues {
currentBits[di*4+bi] = d&bv != 0
}
}
if len(m.binaryPrevBits) != totalBits {
m.binaryPrevBits = currentBits
m.binaryOffAt = make([]time.Time, totalBits)
return
}
now := time.Now()
for i := range currentBits {
if m.binaryPrevBits[i] && !currentBits[i] {
m.binaryOffAt[i] = now
}
}
m.binaryPrevBits = currentBits
}renderBinary method · go · L432-L506 (75 LOC)viz.go
func (m model) renderBinary() string {
h := int(m.remaining.Hours())
min := int(m.remaining.Minutes()) % 60
sec := int(m.remaining.Seconds()) % 60
type digitGroup struct {
label string
digits []int
}
var groups []digitGroup
if h > 0 {
groups = append(groups, digitGroup{"H", []int{h / 10, h % 10}})
}
groups = append(groups, digitGroup{"M", []int{min / 10, min % 10}})
groups = append(groups, digitGroup{"S", []int{sec / 10, sec % 10}})
baseColor := m.timerColor()
activeStyle := lipgloss.NewStyle().Foreground(baseColor)
inactiveStyle := lipgloss.NewStyle().Foreground(colorDim)
labelStyle := lipgloss.NewStyle().Foreground(colorDim)
bitValues := []int{8, 4, 2, 1}
var rows [4]strings.Builder
var labelRow strings.Builder
col := 0
for gi, g := range groups {
if gi > 0 {
for r := 0; r < 4; r++ {
rows[r].WriteString(" ")
}
labelRow.WriteString(" ")
}
for di, d := range g.digits {
if di > 0 {
for r := 0; r < 4; r++ {
rows[r].WriteStri‹ prevpage 2 / 2