123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- // Copyright 2017 Zack Guo <zack.y.guo@gmail.com>. All rights reserved.
- // Use of this source code is governed by a MIT license that can
- // be found in the LICENSE file.
- package termui
- import "strings"
- /*
- // A ColorScheme represents the current look-and-feel of the dashboard.
- type ColorScheme struct {
- BodyBg Attribute
- BlockBg Attribute
- HasBorder bool
- BorderFg Attribute
- BorderBg Attribute
- BorderLabelTextFg Attribute
- BorderLabelTextBg Attribute
- ParTextFg Attribute
- ParTextBg Attribute
- SparklineLine Attribute
- SparklineTitle Attribute
- GaugeBar Attribute
- GaugePercent Attribute
- LineChartLine Attribute
- LineChartAxes Attribute
- ListItemFg Attribute
- ListItemBg Attribute
- BarChartBar Attribute
- BarChartText Attribute
- BarChartNum Attribute
- MBarChartBar Attribute
- MBarChartText Attribute
- MBarChartNum Attribute
- TabActiveBg Attribute
- }
- // default color scheme depends on the user's terminal setting.
- var themeDefault = ColorScheme{HasBorder: true}
- var themeHelloWorld = ColorScheme{
- BodyBg: ColorBlack,
- BlockBg: ColorBlack,
- HasBorder: true,
- BorderFg: ColorWhite,
- BorderBg: ColorBlack,
- BorderLabelTextBg: ColorBlack,
- BorderLabelTextFg: ColorGreen,
- ParTextBg: ColorBlack,
- ParTextFg: ColorWhite,
- SparklineLine: ColorMagenta,
- SparklineTitle: ColorWhite,
- GaugeBar: ColorRed,
- GaugePercent: ColorWhite,
- LineChartLine: ColorYellow | AttrBold,
- LineChartAxes: ColorWhite,
- ListItemBg: ColorBlack,
- ListItemFg: ColorYellow,
- BarChartBar: ColorRed,
- BarChartNum: ColorWhite,
- BarChartText: ColorCyan,
- MBarChartBar: ColorRed,
- MBarChartNum: ColorWhite,
- MBarChartText: ColorCyan,
- TabActiveBg: ColorMagenta,
- }
- var theme = themeDefault // global dep
- // Theme returns the currently used theme.
- func Theme() ColorScheme {
- return theme
- }
- // SetTheme sets a new, custom theme.
- func SetTheme(newTheme ColorScheme) {
- theme = newTheme
- }
- // UseTheme sets a predefined scheme. Currently available: "hello-world" and
- // "black-and-white".
- func UseTheme(th string) {
- switch th {
- case "helloworld":
- theme = themeHelloWorld
- default:
- theme = themeDefault
- }
- }
- */
- var ColorMap = map[string]Attribute{
- "fg": ColorWhite,
- "bg": ColorDefault,
- "border.fg": ColorWhite,
- "label.fg": ColorGreen,
- "par.fg": ColorYellow,
- "par.label.bg": ColorWhite,
- }
- func ThemeAttr(name string) Attribute {
- return lookUpAttr(ColorMap, name)
- }
- func lookUpAttr(clrmap map[string]Attribute, name string) Attribute {
- a, ok := clrmap[name]
- if ok {
- return a
- }
- ns := strings.Split(name, ".")
- for i := range ns {
- nn := strings.Join(ns[i:len(ns)], ".")
- a, ok = ColorMap[nn]
- if ok {
- break
- }
- }
- return a
- }
- // 0<=r,g,b <= 5
- func ColorRGB(r, g, b int) Attribute {
- within := func(n int) int {
- if n < 0 {
- return 0
- }
- if n > 5 {
- return 5
- }
- return n
- }
- r, b, g = within(r), within(b), within(g)
- return Attribute(0x0f + 36*r + 6*g + b)
- }
|