dive-zfs/runtime/ui/viewmodel/layer_set_state.go
2019-12-28 12:28:19 -05:00

37 lines
1.1 KiB
Go

package viewmodel
import "github.com/wagoodman/dive/dive/image"
type LayerSetState struct {
LayerIndex int
Layers []*image.Layer
CompareMode LayerCompareMode
CompareStartIndex int
}
func NewLayerSetState(layers []*image.Layer, compareMode LayerCompareMode) *LayerSetState {
return &LayerSetState{
Layers: layers,
CompareMode: compareMode,
}
}
// getCompareIndexes determines the layer boundaries to use for comparison (based on the current compare mode)
func (state *LayerSetState) GetCompareIndexes() (bottomTreeStart, bottomTreeStop, topTreeStart, topTreeStop int) {
bottomTreeStart = state.CompareStartIndex
topTreeStop = state.LayerIndex
if state.LayerIndex == state.CompareStartIndex {
bottomTreeStop = state.LayerIndex
topTreeStart = state.LayerIndex
} else if state.CompareMode == CompareSingleLayer {
bottomTreeStop = state.LayerIndex - 1
topTreeStart = state.LayerIndex
} else {
bottomTreeStop = state.CompareStartIndex
topTreeStart = state.CompareStartIndex + 1
}
return bottomTreeStart, bottomTreeStop, topTreeStart, topTreeStop
}