2019-03-05 20:52:18 +00:00
|
|
|
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 {
|
2019-03-12 18:50:34 +00:00
|
|
|
// 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.
|
2019-03-05 20:52:18 +00:00
|
|
|
PrimaryHighlight color.Color
|
2019-03-12 18:50:34 +00:00
|
|
|
// PrimaryBackground is a background version of the main contrast color.
|
|
|
|
PrimaryBackground color.Color
|
|
|
|
// ShadedBackground is a darker version of the background color.
|
2019-03-05 20:52:18 +00:00
|
|
|
ShadedBackground color.Color
|
2019-03-12 18:50:34 +00:00
|
|
|
// 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
|
2019-03-05 20:52:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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{
|
2019-03-12 18:50:34 +00:00
|
|
|
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,
|
2019-03-05 20:52:18 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
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}
|
|
|
|
}
|