feat(tracker): Add a matrix showing track sequences

This commit is contained in:
vsariola
2021-01-02 17:40:53 +02:00
parent c68d9d3bf5
commit 06c006086b
6 changed files with 94 additions and 6 deletions

View File

@ -9,6 +9,13 @@ import (
func (t *Tracker) Layout(gtx layout.Context) {
layout.Flex{Axis: layout.Vertical}.Layout(gtx,
layout.Rigid(t.layoutControls),
layout.Rigid(Lowered(t.layoutPatterns(
t.song.Tracks,
t.ActiveTrack,
t.DisplayPattern,
t.CursorColumn,
t.PlayPattern,
))),
layout.Flexed(1, Lowered(t.layoutTracker)),
)
}
@ -17,13 +24,17 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions {
flexTracks := make([]layout.FlexChild, len(t.song.Tracks))
t.playRowPatMutex.RLock()
defer t.playRowPatMutex.RUnlock()
playRow := int(t.PlayRow)
if t.DisplayPattern != t.PlayPattern {
playRow = -1
}
for i, trk := range t.song.Tracks {
flexTracks[i] = layout.Rigid(Lowered(t.layoutTrack(
t.song.Patterns[trk.Sequence[t.DisplayPattern]],
t.ActiveTrack == i,
t.CursorRow,
t.CursorColumn,
int(t.PlayRow),
playRow,
)))
}
return layout.Flex{Axis: layout.Horizontal}.Layout(gtx,
@ -32,8 +43,8 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions {
}
func (t *Tracker) layoutControls(gtx layout.Context) layout.Dimensions {
gtx.Constraints.Min.Y = 400
gtx.Constraints.Max.Y = 400
gtx.Constraints.Min.Y = 200
gtx.Constraints.Max.Y = 200
return layout.Stack{Alignment: layout.NW}.Layout(gtx,
layout.Expanded(t.QuitButton.Layout),
layout.Stacked(Raised(Label(fmt.Sprintf("Current octave: %v", t.CurrentOctave), white))),