104 lines
2.6 KiB
Go
104 lines
2.6 KiB
Go
package ui
|
|
|
|
import "image/color"
|
|
|
|
var defaultDimensions *Dimensions
|
|
var defaultFonts *Fonts
|
|
var defaultPalette *Palette
|
|
var defaultStyle *Style
|
|
|
|
type Dimensions struct {
|
|
OutlineWidth float32
|
|
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
|
|
// PrimaryDark is a foreground version of the main contrast color.
|
|
PrimaryDark color.Color
|
|
// PrimaryHighlight is a light version of the main contrast color.
|
|
PrimaryHighlight color.Color
|
|
// PrimaryLight is a background version of the main contrast color.
|
|
PrimaryLight 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
|
|
// TextNegative is the text color associated with a negative event.
|
|
TextNegative color.Color
|
|
// TextOnPrimary is the text color when used with the main contrast color as background.
|
|
TextOnPrimary color.Color
|
|
// TextPositive is the text color associated with a positive event.
|
|
TextPositive color.Color
|
|
}
|
|
|
|
type Style struct {
|
|
Dimensions *Dimensions
|
|
Fonts *Fonts
|
|
Palette *Palette
|
|
}
|
|
|
|
func DefaultDimensions() *Dimensions {
|
|
if defaultDimensions == nil {
|
|
defaultDimensions = &Dimensions{
|
|
OutlineWidth: 2.,
|
|
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),
|
|
PrimaryDark: RGBA(0x00, 0x28, 0x84, 0xFF),
|
|
PrimaryHighlight: RGBA(0xE8, 0xEA, 0xF6, 0xFF),
|
|
PrimaryLight: RGBA(0x75, 0x7C, 0xE8, 0xFF),
|
|
ShadedBackground: RGBA(0xFA, 0xFA, 0xFA, 0xFF),
|
|
Text: color.Black,
|
|
TextDisabled: RGBA(0xBD, 0xBD, 0xBD, 0xFF),
|
|
TextNegative: RGBA(0xFF, 0x43, 0x36, 0xFF),
|
|
TextOnPrimary: color.White,
|
|
TextPositive: RGBA(0x4C, 0xAF, 0x50, 0xFF),
|
|
}
|
|
}
|
|
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}
|
|
}
|