zntg/ui/style.go

93 lines
2.1 KiB
Go
Raw Normal View History

package ui
import "image/color"
var defaultDimensions *Dimensions
var defaultFonts *Fonts
var defaultPalette *Palette
var defaultStyle *Style
type Dimensions struct {
ScrollbarWidth float32
TextPadding float32
}
type Fonts struct {
Default string
}
type Palette struct {
// Background is the default background color.
Background color.Color
// Primary is used as a the main contrast color.
Primary color.Color
// PrimaryHighlight is a highlighted version of the main contrast color.
PrimaryHighlight color.Color
// PrimaryBackground is a background version of the main contrast color.
PrimaryBackground color.Color
// ShadedBackground is a darker version of the background color.
ShadedBackground color.Color
// Text is the default text color.
Text color.Color
// TextDisabled is disabled text color.
TextDisabled color.Color
// TextOnPrimary is the text color when used with the main contrast color as background.
TextOnPrimary color.Color
}
type Style struct {
Dimensions *Dimensions
Fonts *Fonts
Palette *Palette
}
func DefaultDimensions() *Dimensions {
if defaultDimensions == nil {
defaultDimensions = &Dimensions{
ScrollbarWidth: 16.,
TextPadding: 8.,
}
}
return defaultDimensions
}
func DefaultFonts() *Fonts {
if defaultFonts == nil {
defaultFonts = &Fonts{
Default: "default",
}
}
return defaultFonts
}
func DefaultPalette() *Palette {
if defaultPalette == nil {
defaultPalette = &Palette{
Background: color.White,
Primary: RGBA(0x3F, 0x51, 0xB5, 0xFF),
PrimaryHighlight: RGBA(0x5C, 0x6B, 0xC0, 0xFF),
PrimaryBackground: RGBA(0x9F, 0xA8, 0xDA, 0xFF),
ShadedBackground: RGBA(0xFA, 0xFA, 0xFA, 0xFF),
Text: color.Black,
TextDisabled: RGBA(0xBD, 0xBD, 0xBD, 0xFF),
TextOnPrimary: color.White,
}
}
return defaultPalette
}
func DefaultStyle() *Style {
if defaultStyle == nil {
defaultStyle = &Style{
Dimensions: DefaultDimensions(),
Fonts: DefaultFonts(),
Palette: DefaultPalette(),
}
}
return defaultStyle
}
func RGBA(r, g, b, a byte) *color.RGBA {
return &color.RGBA{R: r, G: g, B: b, A: a}
}