color
Get the resolved color for a style. If null fallback to theme base.
If a color with a state (like fill_hover) is null, then the fill color
will be used and adjusted by Theme.adjustColorForState.
Parameters
- self:*const Theme
- *const Theme
- style_name:Style.Name
- Style.Name
- ask:Options.ColorAsk
- Options.ColorAsk
Source
Implementation
pub fn color(self: *const Theme, style_name: Style.Name, ask: Options.ColorAsk) Color {
const cs: Style = switch (style_name) {
.content => return sw: switch (ask) {
.border => self.border,
.fill => self.adjustColorForState(self.fill, ask),
.fill_hover => self.fill_hover orelse continue :sw .fill,
.fill_press => self.fill_press orelse continue :sw .fill,
.text => self.text,
.text_hover => self.text_hover orelse self.text,
.text_press => self.text_press orelse self.text,
},
.control => self.control,
.window => self.window,
.highlight => self.highlight,
.err => self.err,
.app1 => self.app1,
.app2 => self.app2,
.app3 => self.app3,
};
return sw: switch (ask) {
.border => cs.border orelse self.color(.content, ask),
.fill => if (cs.fill) |col| self.adjustColorForState(col, ask) else self.color(.content, ask),
.fill_hover => cs.fill_hover orelse continue :sw .fill,
.fill_press => cs.fill_press orelse continue :sw .fill,
.text => cs.text orelse self.color(.content, ask),
.text_hover => cs.text_hover orelse continue :sw .text,
.text_press => cs.text_press orelse continue :sw .text,
};
}