sampler-fork/console/palette.go

74 lines
1.9 KiB
Go
Raw Normal View History

package console
2019-01-31 23:40:05 +00:00
import (
"fmt"
2019-03-14 03:01:44 +00:00
ui "github.com/gizak/termui/v3"
2019-01-31 23:40:05 +00:00
)
type Theme string
const (
ThemeDark Theme = "dark"
ThemeLight Theme = "light"
)
const (
ColorOlive ui.Color = 178
ColorDeepSkyBlue ui.Color = 39
2019-02-12 03:49:57 +00:00
ColorDeepPink ui.Color = 198
ColorCian ui.Color = 43
ColorOrange ui.Color = 166
ColorPurple ui.Color = 129
ColorGreen ui.Color = 64
ColorDarkRed ui.Color = 88
ColorBlueViolet ui.Color = 57
2019-03-11 03:43:47 +00:00
ColorDarkGrey ui.Color = 238
ColorLightGrey ui.Color = 254
2019-02-25 00:08:36 +00:00
ColorGrey ui.Color = 242
ColorWhite ui.Color = 15
2019-02-11 02:51:55 +00:00
ColorBlack ui.Color = 0
2019-02-25 00:08:36 +00:00
ColorClear ui.Color = -1
)
const (
2019-03-08 04:04:46 +00:00
MenuColorBackground ui.Color = 235
2019-02-25 00:08:36 +00:00
MenuColorText ui.Color = 255
2019-01-31 23:40:05 +00:00
)
type Palette struct {
2019-03-28 23:56:46 +00:00
ContentColors []ui.Color
GradientColors []ui.Color
BaseColor ui.Color
MediumColor ui.Color
ReverseColor ui.Color
2019-01-31 23:40:05 +00:00
}
func GetPalette(theme Theme) Palette {
switch theme {
case ThemeDark:
return Palette{
2019-03-28 23:56:46 +00:00
ContentColors: []ui.Color{ColorOlive, ColorDeepSkyBlue, ColorDeepPink, ColorWhite, ColorGrey, ColorGreen, ColorOrange, ColorCian, ColorPurple},
2019-04-01 03:02:58 +00:00
GradientColors: []ui.Color{39, 44, 47, 82, 148, 185, 209, 203, 198, 196, 125},
2019-03-28 23:56:46 +00:00
BaseColor: ColorWhite,
MediumColor: ColorDarkGrey,
ReverseColor: ColorBlack,
}
2019-01-31 23:40:05 +00:00
case ThemeLight:
return Palette{
2019-03-28 23:56:46 +00:00
ContentColors: []ui.Color{ColorBlack, ColorDarkRed, ColorBlueViolet, ColorGrey, ColorGreen},
2019-04-01 03:02:58 +00:00
GradientColors: []ui.Color{250, 248, 246, 244, 242, 240, 238, 236, 234, 232, 16},
2019-03-28 23:56:46 +00:00
BaseColor: ColorBlack,
MediumColor: ColorLightGrey,
ReverseColor: ColorWhite,
}
2019-01-31 23:40:05 +00:00
default:
panic(fmt.Sprintf("Following theme is not supported: %v", theme))
}
}
2019-04-01 03:02:58 +00:00
// selects gradient color for cur item (out of max items)
func (palette *Palette) GetGradientColor(cur int, max int) ui.Color {
ratio := float64(len(palette.GradientColors)) / float64(max)
return palette.GradientColors[int(ratio*float64(cur))]
}