feat(tracker): implement basic track display

This commit is contained in:
Matias Lahti
2020-11-08 02:24:27 +02:00
parent 90c3536f3e
commit 77949bdc17
7 changed files with 161 additions and 11 deletions

View File

@ -2,15 +2,34 @@ package tracker
import (
"gioui.org/layout"
"gioui.org/op/paint"
)
func (t *Tracker) Layout(gtx layout.Context) {
layout.Stack{Alignment: layout.NW}.Layout(gtx,
layout.Expanded(func(gtx layout.Context) layout.Dimensions {
paint.Fill(gtx.Ops, black)
return layout.Dimensions{Size: gtx.Constraints.Max}
}),
layout.Flex{Axis: layout.Vertical}.Layout(gtx,
layout.Rigid(t.layoutControls),
layout.Flexed(1, Lowered(t.layoutTracker)),
)
}
func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions {
flexTracks := make([]layout.FlexChild, len(t.song.Tracks))
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,
)))
}
return layout.Flex{Axis: layout.Horizontal}.Layout(gtx,
flexTracks...,
)
}
func (t *Tracker) layoutControls(gtx layout.Context) layout.Dimensions {
gtx.Constraints.Min.Y = 400
gtx.Constraints.Max.Y = 400
return layout.Stack{Alignment: layout.NW}.Layout(gtx,
layout.Expanded(t.QuitButton.Layout),
layout.Stacked(Raised(Label("Hello", white))),
)