namespace Terminal.Gui; public partial class View { private ColorScheme _colorScheme; /// The color scheme for this view, if it is not defined, it returns the 's color scheme. public virtual ColorScheme ColorScheme { get { if (_colorScheme is null) { return SuperView?.ColorScheme; } return _colorScheme; } set { if (_colorScheme != value) { _colorScheme = value; if (Border is { } && Border.LineStyle != LineStyle.None && Border.ColorScheme is { }) { Border.ColorScheme = _colorScheme; } SetNeedsDisplay (); } } } /// Determines the current based on the value. /// /// if is or /// if is . If it's /// overridden can return other values. /// public virtual Attribute GetFocusColor () { ColorScheme cs = ColorScheme; if (cs is null) { cs = new (); } return Enabled ? GetColor (cs.Focus) : cs.Disabled; } /// Determines the current based on the value. /// /// if is or /// if is . If it's /// overridden can return other values. /// public virtual Attribute GetHotFocusColor () { ColorScheme cs = ColorScheme ?? new (); return Enabled ? GetColor (cs.HotFocus) : cs.Disabled; } /// Determines the current based on the value. /// /// if is or /// if is . If it's /// overridden can return other values. /// public virtual Attribute GetHotNormalColor () { ColorScheme cs = ColorScheme; if (cs is null) { cs = new (); } return Enabled ? GetColor (cs.HotNormal) : cs.Disabled; } /// Determines the current based on the value. /// /// if is or /// if is . If it's /// overridden can return other values. /// public virtual Attribute GetNormalColor () { ColorScheme cs = ColorScheme; if (cs is null) { cs = new (); } Attribute disabled = new (cs.Disabled.Foreground, cs.Disabled.Background); if (Diagnostics.HasFlag (ViewDiagnosticFlags.Hover) && _hovering) { disabled = new (disabled.Foreground.GetDarkerColor (), disabled.Background.GetDarkerColor ()); } return Enabled ? GetColor (cs.Normal) : disabled; } private Attribute GetColor (Attribute inputAttribute) { Attribute attr = inputAttribute; if (Diagnostics.HasFlag (ViewDiagnosticFlags.Hover) && _hovering) { attr = new (attr.Foreground.GetDarkerColor (), attr.Background.GetDarkerColor ()); } return attr; } }