summaryrefslogtreecommitdiff
path: root/internal/slider/evaluation.go
blob: 363efe71a1d11d13d30abb5b3b7d8ab9d0d98f96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package slider

func (m Model) Val() int { return m.current }

func (m *Model) Set(v int) {
	m.current = v
	m.fixRange()
}

func (m *Model) Inc(v int) {
	m.current += v
	m.fixRange()
}

func (m *Model) Dec(v int) {
	m.current -= v
	m.fixRange()
}

func (m *Model) Pcnt() float64 {
	return float64(m.current) / float64(m.max)
}

func (m *Model) SetPcnt(p float64) {
	m.current = int(float64(m.max) * p)
	m.fixRange()
}

func (m *Model) IncPcnt(p float64) {
	m.current += int(float64(m.max) * p)
	m.fixRange()
}

func (m *Model) DecPcnt(p float64) {
	m.current -= int(float64(m.max) * p)
	m.fixRange()
}

func (m *Model) fixRange() {
	if m.current > m.max {
		m.current = m.max
	}
	if m.current < 0 {
		m.current = 0
	}
}