66 lines
1.9 KiB
Julia
66 lines
1.9 KiB
Julia
|
|
const _invisible = RGBA(0,0,0,0)
|
|
|
|
const _themes = KW(
|
|
:default => KW(
|
|
:bg => :white,
|
|
:bglegend => :match,
|
|
:bginside => :match,
|
|
:bgoutside => :match,
|
|
:fg => :auto,
|
|
:fglegend => :match,
|
|
:fggrid => :match,
|
|
:fgaxis => :match,
|
|
:fgtext => :match,
|
|
:fgborder => :match,
|
|
:fgguide => :match,
|
|
)
|
|
)
|
|
|
|
function add_theme(sym::Symbol, theme::KW)
|
|
_themes[sym] = theme
|
|
end
|
|
|
|
# add a new theme, using an existing theme as the base
|
|
function add_theme(sym::Symbol;
|
|
base = :default, # start with this theme
|
|
bg = _themes[base][:bg],
|
|
bglegend = _themes[base][:bglegend],
|
|
bginside = _themes[base][:bginside],
|
|
bgoutside = _themes[base][:bgoutside],
|
|
fg = _themes[base][:fg],
|
|
fglegend = _themes[base][:fglegend],
|
|
fggrid = _themes[base][:fggrid],
|
|
fgaxis = _themes[base][:fgaxis],
|
|
fgtext = _themes[base][:fgtext],
|
|
fgborder = _themes[base][:fgborder],
|
|
fgguide = _themes[base][:fgguide],
|
|
kw...)
|
|
_themes[sym] = merge(KW(
|
|
:bg => bg,
|
|
:bglegend => bglegend,
|
|
:bginside => bginside,
|
|
:bgoutside => bgoutside,
|
|
:fg => fg,
|
|
:fglegend => fglegend,
|
|
:fggrid => fggrid,
|
|
:fgaxis => fgaxis,
|
|
:fgtext => fgtext,
|
|
:fgborder => fgborder,
|
|
:fgguide => fgguide,
|
|
), KW(kw))
|
|
end
|
|
|
|
add_theme(:ggplot2,
|
|
bglegend = _invisible,
|
|
bginside = :lightgray,
|
|
fg = :white,
|
|
fglegend = _invisible,
|
|
fgtext = :gray,
|
|
fgguide = :black
|
|
)
|
|
|
|
function set_theme(sym::Symbol)
|
|
default(; _themes[sym]...)
|
|
end
|