erm/internal/app/darktile/termutil/theme_factory.go

42 lines
813 B
Go
Raw Normal View History

2021-07-30 22:29:20 +00:00
package termutil
import "image/color"
type ThemeFactory struct {
theme *Theme
colourMap map[Colour]color.Color
}
func NewThemeFactory() *ThemeFactory {
return &ThemeFactory{
theme: &Theme{
alpha: 0xff,
colourMap: map[Colour]color.Color{},
},
colourMap: make(map[Colour]color.Color),
}
}
func (t *ThemeFactory) Build() *Theme {
for id, col := range t.colourMap {
r, g, b, _ := col.RGBA()
t.theme.colourMap[id] = color.RGBA{
R: uint8(r / 0xff),
G: uint8(g / 0xff),
B: uint8(b / 0xff),
A: t.theme.alpha,
}
}
return t.theme
}
func (t *ThemeFactory) WithOpacity(opacity float64) *ThemeFactory {
t.theme.alpha = uint8(0xff * opacity)
return t
}
func (t *ThemeFactory) WithColour(key Colour, colour color.Color) *ThemeFactory {
t.colourMap[key] = colour
return t
}