Files
staxrip/Source/UI/ThemeManager.vb
2026-02-16 04:41:07 +01:00

618 lines
34 KiB
VB.net

Imports Microsoft.Win32
Imports StaxRip.SimpleUI
Public NotInheritable Class ThemeManager
Private Const _defaultThemeName = "Darker | Seagreen"
Private Const _defaultProgressHighlightingColorName = "Teal"
Private Const _windowsAccentColorName = "Windows Accent Color"
Private Shared _current As Theme
Private Shared _themes As List(Of Theme)
Private Shared _windowsAccentColor As ColorHSL?
Public Shared ReadOnly Property ColorCategories As Tuple(Of String, Integer, Integer)()
Get
Dim accentColors = If(WindowsAccentColor IsNot Nothing, {New Tuple(Of String, Integer, Integer)(_windowsAccentColorName, WindowsAccentColor.Value.H, -1)}, Nothing)
Dim defaultColors = {
New Tuple(Of String, Integer, Integer)("Red", 358, 50),
New Tuple(Of String, Integer, Integer)("Orange", 25, 355),
New Tuple(Of String, Integer, Integer)("MoonYellow", 48, 355),
New Tuple(Of String, Integer, Integer)("Yellow", 60, 355),
New Tuple(Of String, Integer, Integer)("YellowGreen", 80, 355),
New Tuple(Of String, Integer, Integer)("Green", 100, 355),
New Tuple(Of String, Integer, Integer)("Lime", 120, 355),
New Tuple(Of String, Integer, Integer)("Seagreen", 146, 355),
New Tuple(Of String, Integer, Integer)("TurquoiseGreen", 163, 355),
New Tuple(Of String, Integer, Integer)("Turquoise", 174, 355),
New Tuple(Of String, Integer, Integer)("Teal", 181, 355),
New Tuple(Of String, Integer, Integer)("TealBlue", 194, 355),
New Tuple(Of String, Integer, Integer)("Blue", 205, 355),
New Tuple(Of String, Integer, Integer)("DarkBlue", 220, 355),
New Tuple(Of String, Integer, Integer)("Indigo", 260, 355),
New Tuple(Of String, Integer, Integer)("Violet", 271, 355),
New Tuple(Of String, Integer, Integer)("Purple", 281, 355),
New Tuple(Of String, Integer, Integer)("Magenta", 292, 355),
New Tuple(Of String, Integer, Integer)("Fuchsia", 305, 10),
New Tuple(Of String, Integer, Integer)("Pink", 320, 10),
New Tuple(Of String, Integer, Integer)("Orchid", 330, 10),
New Tuple(Of String, Integer, Integer)("Rose", 340, 40)
}
Return accentColors.Concat(defaultColors).ToArray()
End Get
End Property
Public Shared ReadOnly Property LumaCategories As KeyValuePair(Of String, Single)() = {
New KeyValuePair(Of String, Single)("Black", 0.01),
New KeyValuePair(Of String, Single)("Almost Black", 0.04),
New KeyValuePair(Of String, Single)("Darker", 0.065),
New KeyValuePair(Of String, Single)("Dark", 0.09),
New KeyValuePair(Of String, Single)("Not So Dark", 0.11),
New KeyValuePair(Of String, Single)("Almost Dark", 0.16),
New KeyValuePair(Of String, Single)("Dark Gray", 0.21),
New KeyValuePair(Of String, Single)("Gray", 0.26),
New KeyValuePair(Of String, Single)("Light Gray", 0.33)
}
Public Shared ReadOnly Property CurrentTheme As Theme
Get
If _current Is Nothing Then
If s.ThemeName IsNot Nothing AndAlso Themes.Any(Function(theme) String.Equals(theme.Name, s.ThemeName, StringComparison.InvariantCultureIgnoreCase)) Then
SetCurrentTheme(s.ThemeName)
Else
Dim newTheme = SetCurrentTheme()
s.ThemeName = newTheme.Name
End If
End If
Return _current
End Get
End Property
Public Shared ReadOnly Property DefaultThemeName As String
Get
Return _defaultThemeName
End Get
End Property
Public Shared ReadOnly Property DefaultProgressHighlightingColorName As String
Get
Return _defaultProgressHighlightingColorName
End Get
End Property
Public Shared ReadOnly Property Themes As List(Of Theme)
Get
_themes = If(_themes, LoadDefaults())
Return _themes
End Get
End Property
Public Shared ReadOnly Property WindowsAccentColor As ColorHSL?
Get
If _windowsAccentColor Is Nothing Then
Try
Dim value = Registry.CurrentUser.GetLong("SOFTWARE\Microsoft\Windows\DWM", "AccentColor")
Dim r = CInt((value >> 0) And &HFF)
Dim g = CInt((value >> 8) And &HFF)
Dim b = CInt((value >> 16) And &HFF)
Dim a = CInt((value >> 24) And &HFF)
_windowsAccentColor = Color.FromArgb(a, r, g, b)
Catch ex As Exception
_windowsAccentColor = Nothing
End Try
End If
Return _windowsAccentColor
End Get
End Property
<CodeAnalysis.SuppressMessage("CodeQuality", "IDE0051:Remove unused private members", Justification:="<Pending>")>
Private Sub ThemeManager()
End Sub
Private Shared Function LoadDefaults() As List(Of Theme)
Dim defaults = New List(Of Theme) From {
New Theme("System Colors")
}
For Each lc In LumaCategories
For Each cc In ColorCategories
defaults.Add(New DarkTheme($"{lc.Key} | {cc.Item1}", cc.Item2, cc.Item3, lc.Value))
Next
Next
Return defaults
End Function
Public Shared Function SetCurrentTheme(Optional name As String = _defaultThemeName) As Theme
If String.IsNullOrWhiteSpace(name) Then name = _defaultThemeName
Dim theme = Themes?.Where(Function(x) x.Name.Equals(name, StringComparison.OrdinalIgnoreCase))?.FirstOrDefault()
If theme IsNot Nothing Then
If Not theme.Equals(_current) Then
_current = theme
OnCurrentThemeChanged()
End If
End If
Return _current
End Function
Public Shared Event CurrentThemeChanged(theme As Theme)
Public Shared Function OnCurrentThemeChanged() As Theme
RaiseEvent CurrentThemeChanged(_current)
Return _current
End Function
' -----
' ##### ##### ##### ##### ##### ##### #####
' ----- ----- ----- ----- ----- ----- -----
' ##### ##### ##### ##### ##### ##### #####
' -----
Private Class DarkTheme
Inherits Theme
Private ReadOnly _baseHue As Integer = 0
Private ReadOnly _highlightHue As Integer = 0
Private ReadOnly _backLuma As Single = 0
Private ReadOnly _backLumaDefault As Single = 0.11
Private ReadOnly _accentSat As Single = 0
Private ReadOnly _accentSatDefault As Single = 0.55
Public Overrides ReadOnly Property BaseHue As Integer
Get
Return _baseHue
End Get
End Property
Public Overrides ReadOnly Property HighlightHue As Integer
Get
Return _highlightHue
End Get
End Property
Public Sub New(name As String, Optional hue As Integer = 200, Optional highlightHue As Integer = -1, Optional backLuma As Single = 0.11)
MyBase.New(name)
MyBase._usesSystemColors = False
_baseHue = hue
_highlightHue = Mathf.Clamp(If(highlightHue >= 0, highlightHue, If(_baseHue - 180 < 0, _baseHue + 180, _baseHue - 180)), 0, 359)
_backLuma = Mathf.Clamp01(backLuma)
_accentSat = _accentSatDefault
Dim _backColor As ColorHSL = New ColorHSL(_baseHue, 0.01, _backLuma, 1)
Dim _foreColor As ColorHSL = New ColorHSL(_baseHue, 0.03, 0.7D - (_backLumaDefault - _backLuma), 1)
Dim _accentColor As ColorHSL = New ColorHSL(_baseHue, _accentSat, 0.5025D - (_backLumaDefault - _backLuma / 2), 1)
Dim _backSelectedColor As ColorHSL = New ColorHSL(_baseHue, _accentColor.S - _backLuma / 1.5D, _accentColor.L - _backLumaDefault * 1.75D, 1)
Dim _controlBackColor As ColorHSL = _backColor.AddLuminance(0.025)
Dim _controlBackHighlightColor As ColorHSL = New ColorHSL(_highlightHue, 1 - _backLuma * 1.5D, _controlBackColor.L + 0.125D, 1)
Dim _controlBackSelectedColor As ColorHSL = _controlBackColor.AddSaturation(0.25).AddLuminance(0.25)
Dim _controlBackReadonlyColor As ColorHSL = _backColor.AddLuminance(-0.1)
Dim _controlForeHighlightColor As ColorHSL = _foreColor.AddLuminance(0.2)
Dim _controlForeSelectedColor As ColorHSL = _foreColor.AddLuminance(0.2)
Dim _foreHighlightColor As ColorHSL = _accentColor.SetHue(_highlightHue).AddSaturation(0.5).AddLuminance(0.05)
Dim _foreReadonlyColor As ColorHSL = _foreColor.AddLuminance(-0.2)
Dim _borderColor As ColorHSL = _controlBackColor.AddLuminance(0.15)
Dim _borderFocusedColor As ColorHSL = _borderColor.AddSaturation(0.5).AddLuminance(0.33)
Dim _borderHoverColor As ColorHSL = _borderFocusedColor.AddSaturation(0.1).AddLuminance(0.1)
Dim _dangerBackColor As ColorHSL = _accentColor.AddHue(150).AddLuminance(-0.25)
Dim _dangerForeColor As ColorHSL = _foreHighlightColor
Dim _outputHighlightingBackColor As ColorHSL = New ColorHSL(_baseHue, _backSelectedColor.S - _backLuma / 4, 0.255D - _backLumaDefault + _backLuma / 1.75D, 1)
Dim _outputHighlightingForeColor As ColorHSL = New ColorHSL(_baseHue, 0.66D - _backLumaDefault + _backLuma * 1.5D, 0.94D - _backLumaDefault)
Dim _outputHighlightingStrongForeColor As ColorHSL = New ColorHSL(_baseHue, 0.66D + _backLuma / 2, 0.6D - _backLumaDefault + _backLuma / 2, 1)
General = New GeneralThemeColors() With {
.BackColor = _backColor,
.ControlBackColor = _controlBackColor,
.DangerBackColor = Color.Transparent,
.DangerForeColor = _dangerForeColor,
.ForeColor = _foreColor,
.Controls = New ControlsThemeColors() With {
.Button = New ControlsThemeColors.ButtonThemeColors() With {
.BackColor = _controlBackColor.AddLuminance(0.1),
.BackDisabledColor = .BackColor,
.BackHighlightColor = _controlBackHighlightColor,
.BorderColor = .BackColor.AddLuminance(0.05),
.ForeColor = _foreColor.AddLuminance(0.1),
.ForeDisabledColor = .ForeColor.AddLuminance(-0.33),
.ForeHighlightColor = .ForeColor.AddLuminance(0.15)
},
.ButtonLabel = New ControlsThemeColors.ButtonLabelThemeColors() With {
.BackColor = _backColor,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _accentColor.AddLuminance(0.075),
.ForeHighlightColor = _controlForeHighlightColor,
.LinkForeColor = .ForeColor,
.LinkForeHoverColor = .LinkForeColor.SetSaturation(1).AddLuminance(0.1)
},
.CheckBox = New ControlsThemeColors.CheckBoxThemeColors() With {
.BackColor = Color.Empty,
.BackCheckedColor = .BackColor,
.BackHighlightColor = _controlBackHighlightColor,
.BackHoverColor = .BackColor.AddLuminance(0.1),
.BorderColor = _foreColor.AddLuminance(-0.2),
.BorderCheckedColor = .BorderColor,
.BoxColor = _foreColor,
.BoxCheckedColor = .BoxColor,
.CheckedBackColor = _backColor,
.CheckmarkColor = _controlBackColor,
.ForeColor = _foreColor,
.ForeCheckedColor = .ForeColor.AddLuminance(0.1F),
.ForeDisabledColor = .ForeColor.AddLuminance(-0.2F),
.ForeHighlightColor = _controlForeHighlightColor.AddLuminance(0.15)
},
.ComboBox = New ControlsThemeColors.ComboBoxThemeColors() With {
.BackColor = _backColor.AddLuminance(0.1),
.BackHighlightColor = _controlBackHighlightColor,
.BorderColor = Color.Transparent,
.FlatStyle = FlatStyle.Flat,
.ForeColor = _foreColor,
.ForeHighlightColor = .ForeColor.AddLuminance(0.15)
},
.CommandLineRichTextBox = New ControlsThemeColors.CommandLineRichTextBoxThemeColors() With {
.ParameterBackColor = _controlBackColor,
.ParameterForeColor = _accentColor.SetHue(180).AddSaturation(-0.2).AddLuminance(0.2),
.ParameterFontStyles = {},
.ParameterValueBackColor = .ParameterBackColor,
.ParameterValueForeColor = .ParameterForeColor.SetHue(48),
.ParameterValueFontStyles = {}
},
.CriteriaControl = New ControlsThemeColors.CriteriaControlThemeColors() With {
.BackColor = _controlBackColor,
.ForeColor = _foreColor
},
.FlowLayoutPanel = New ControlsThemeColors.FlowLayoutPanelThemeColors() With {
.BackColor = Color.Transparent,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.FlowPage = New ControlsThemeColors.FlowPageThemeColors() With {
.BackColor = Color.Transparent,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.GridView = New ControlsThemeColors.GridviewThemeColors() With {
.BackColor = _controlBackColor,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor.AddLuminance(-1),
.ForeHighlightColor = _controlForeHighlightColor,
.GridColor = _foreColor
},
.GroupBox = New ControlsThemeColors.GroupBoxThemeColors() With {
.BackColor = Color.Transparent,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.Label = New ControlsThemeColors.LabelThemeColors() With {
.BackColor = Color.Transparent,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.LabelProgressBar = New ControlsThemeColors.LabelProgressBarThemeColors() With {
.BackColor = _controlBackColor,
.ForeColor = _foreColor.AddLuminance(0.1),
.ProgressColor = _backSelectedColor.AddSaturation(0.25).AddLuminance(-0.125)
},
.Line = New ControlsThemeColors.LineThemeColors() With {
.BackColor = Color.Transparent,
.ForeColor = _foreColor,
.LineColor1 = .ForeColor,
.LineColor2 = .ForeColor.AddLuminance(-0.2)
},
.ListBox = New ControlsThemeColors.ListBoxThemeColors() With {
.BackColor = _controlBackColor,
.BackAlternateColor = .BackColor.AddLuminance(0.025),
.BackHighlightColor = _controlBackHighlightColor,
.BackSelectedColor = _backSelectedColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor,
.ForeSelectedColor = _foreColor.AddLuminance(0.25),
.SymbolImageColor = .ForeColor
},
.ListView = New ControlsThemeColors.ListViewThemeColors() With {
.BackColor = _controlBackColor,
.BackAlternateColor = .BackColor.AddLuminance(0.025),
.BackHighlightColor = _controlBackHighlightColor,
.BackSelectedColor = _backSelectedColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor,
.ForeSelectedColor = _foreColor.AddLuminance(0.25),
.SeparatorColor = .BackColor.AddLuminance(0.1),
.SymbolImageColor = .ForeColor
},
.NumEdit = New ControlsThemeColors.NumEditThemeColors() With {
.BackColor = _controlBackColor.AddLuminance(0.1),
.BorderColor = .BackColor,
.BorderSelectedColor = .BackColor,
.UpDownButton = New ControlsThemeColors.NumEditThemeColors.UpDownButtonThemeColors() With {
.BackColor = _backSelectedColor,
.BackHotColor = .BackColor.AddLuminance(0.05),
.BackPressedColor = .BackColor.AddLuminance(0.15),
.BorderColor = _backColor,
.ForeColor = _foreColor.AddLuminance(0.2),
.ForeDisabledColor = .ForeColor.AddLuminance(-0.15)
}
},
.Panel = New ControlsThemeColors.PanelThemeColors() With {
.BackColor = Color.Transparent,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.PropertyGrid = New ControlsThemeColors.PropertyGridThemeColors() With {
.BackColor = _controlBackColor,
.CategoryForeColor = _foreColor,
.CategorySplitterColor = _foreColor,
.CommandsActiveLinkColor = _accentColor,
.CommandsBackColor = _controlBackColor,
.CommandsBorderColor = _foreColor,
.CommandsDisabledLinkColor = _controlBackReadonlyColor,
.CommandsForeColor = _foreColor,
.CommandsLinkColor = _accentColor,
.DisabledItemForeColor = _controlBackReadonlyColor,
.ForeColor = _foreColor,
.HelpBackColor = _controlBackColor,
.HelpBorderColor = _foreColor,
.HelpForeColor = _foreColor,
.LineColor = _controlBackColor,
.SelectedItemWithFocusBackColor = _backSelectedColor,
.SelectedItemWithFocusForeColor = _foreColor,
.ViewBackColor = _backColor,
.ViewBorderColor = _foreColor,
.ViewForeColor = _foreColor
},
.RichTextBox = New ControlsThemeColors.RichTextBoxThemeColors() With {
.BackColor = _controlBackColor,
.BackHighlightColor = _controlBackHighlightColor,
.BackReadonlyColor = _controlBackReadonlyColor,
.BorderColor = _borderColor,
.BorderFocusedColor = _borderFocusedColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.TableLayoutPanel = New ControlsThemeColors.TableLayoutPanelThemeColors() With {
.BackColor = _backColor,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.TabControl = New ControlsThemeColors.TabControlThemeColors() With {
.BackColor = _controlBackColor,
.BackHighlightColor = _controlBackHighlightColor,
.BorderColor = _controlBackColor.AddLuminance(-0.1),
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.TabPage = New ControlsThemeColors.TabPageThemeColors() With {
.BackColor = _controlBackColor,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.TextBox = New ControlsThemeColors.TextBoxThemeColors() With {
.BackColor = _controlBackColor,
.BackHighlightColor = _controlBackHighlightColor,
.BackReadonlyColor = Color.Yellow,
.BorderColor = _borderColor,
.BorderFocusedColor = .BorderColor.AddSaturation(0.2).AddLuminance(0.1),
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.TextEdit = New ControlsThemeColors.TextEditThemeColors() With {
.BackColor = _controlBackColor,
.BackHighlightColor = _controlBackHighlightColor,
.BorderColor = _borderColor,
.BorderFocusedColor = .BorderColor.AddSaturation(0.3).AddLuminance(0.15),
.BorderHoverColor = .BorderFocusedColor.AddSaturation(0.15).AddLuminance(0.075),
.ForeColor = _foreColor,
.ForeHighlightColor = _controlForeHighlightColor
},
.ToggleButtonLabel = New ControlsThemeColors.ToggleButtonLabelThemeColors() With {
.BackColor = _backColor,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _accentColor.AddLuminance(0.075),
.ForeHighlightColor = _controlForeHighlightColor,
.LinkOnForeColor = .ForeColor,
.LinkOffForeColor = .ForeColor.SetSaturation(0.05).AddLuminance(-0.1),
.LinkForeHoverColor = .LinkOnForeColor.SetSaturation(1).AddLuminance(0.1)
},
.ToolStrip = New ControlsThemeColors.ToolStripThemeColors() With {
.MenuStripBackgroundDefaultColor = _controlBackColor.AddLuminance(-0.01),
.MenuStripBackgroundSelectedColor = _backSelectedColor,
.MenuStripTextDefaultColor = _foreColor.AddLuminance(0.1),
.MenuStripTextSelectedColor = _foreColor.AddLuminance(0.2),
.DropdownBackgroundDefaultColor = .MenuStripBackgroundDefaultColor.AddLuminance(0.025),
.DropdownBackgroundSelectedColor = .MenuStripBackgroundSelectedColor,
.DropdownTextDefaultColor = .MenuStripTextDefaultColor,
.DropdownTextSelectedColor = .MenuStripTextSelectedColor,
.SymbolImageColor = .DropdownTextDefaultColor,
.BoxColor = .DropdownBackgroundDefaultColor.SetSaturation(0.1).AddLuminance(0.05),
.BoxSelectedColor = .DropdownBackgroundSelectedColor,
.CheckmarkColor = .DropdownTextSelectedColor.SetSaturation(0.1).AddLuminance(-0.3),
.CheckmarkSelectedColor = .DropdownTextSelectedColor,
.BorderInnerColor = .DropdownBackgroundDefaultColor.AddLuminance(0.3),
.BorderOuterColor = .DropdownBackgroundDefaultColor.AddLuminance(0.15)
},
.TrackBar = New ControlsThemeColors.TrackBarThemeColors() With {
.BackColor = _controlBackColor,
.BackHighlightColor = _controlBackHighlightColor,
.ForeColor = _foreColor,
.ForeHighlightColor = .ForeColor.AddLuminance(0.15)
},
.TreeView = New ControlsThemeColors.TreeViewThemeColors() With {
.BackColor = _controlBackColor,
.BackAlternateColor = .BackColor.AddLuminance(0.025),
.BackExpandableColor = _backSelectedColor.AddSaturation(-0.33).AddLuminance(-0.125),
.BackExpandedColor = _backSelectedColor.AddSaturation(-0.2).AddLuminance(-0.1),
.BackHighlightColor = _controlBackHighlightColor,
.BackSelectedColor = _backSelectedColor,
.ForeColor = _foreColor,
.ForeExpandableColor = _foreColor.AddLuminance(0),
.ForeExpandedColor = _foreColor.AddLuminance(0),
.ForeHighlightColor = _controlForeHighlightColor,
.ForeSelectedColor = _foreColor.AddLuminance(0.25)
},
.VideoRenderer = New ControlsThemeColors.VideoRendererThemeColors() With {
.BackColor = _accentColor.SetSaturation(0.75).SetLuminance(0.15)
}
}
}
AppsForm = New AppsFormThemeColors() With {
.AttentionForeColor = _foreHighlightColor,
.MinorForeColor = _foreHighlightColor.AddHue(30),
.OkayForeColor = _accentColor
}
CodeEditor = New CodeEditorThemeColors() With {
.BackAccentColor = _accentColor.AddSaturation(-0.2).AddLuminance(-0.41),
.ForeColor = _foreColor.AddLuminance(-0.1),
.ForeAccentColor = _accentColor,
.RichTextBoxForeColor = General.Controls.RichTextBox.ForeColor.AddLuminance(-0.3),
.RichTextBoxForeAccentColor = _accentColor,
.RichTextBoxBorderColor = _foreColor,
.RichTextBoxBorderAccentColor = _accentColor.AddLuminance(-0.25)
}
CropForm = New CropFormThemeColors() With {
.BackColor = _backColor,
.BorderColor = .BackColor,
.BorderSelectedColor = _accentColor
}
MainForm = New MainFormThemeColors() With {
.laTipBackColor = Color.Transparent,
.laTipBackHighlightColor = Color.Transparent,
.laTipForeColor = _accentColor.AddSaturation(0.1).AddLuminance(0.1),
.laTipForeHighlightColor = _foreHighlightColor
}
ProcessingForm = New ProcessingFormThemeColors() With {
.BackColor = _backColor,
.ProcessButtonBackColor = .BackColor,
.ProcessButtonBackSelectedColor = _backSelectedColor,
.ProcessButtonForeColor = _foreColor,
.ProcessButtonForeSelectedColor = _foreColor.AddLuminance(0.25),
.OutputHighlighting = New ProcessingFormThemeColors.OutputHighlightingThemeColors() With {
.HeaderBackColor = General.Controls.RichTextBox.BackColor,
.HeaderForeColor = General.Controls.RichTextBox.ForeColor.AddLuminance(0.05),
.HeaderFontStyles = {FontStyle.Bold},
_
.EncoderTitleBackColor = General.Controls.RichTextBox.BackColor,
.EncoderTitleForeColor = _accentColor.AddLuminance(0.1),
.EncoderTitleFontStyles = {},
_
.ParameterBackColor = General.Controls.RichTextBox.BackColor,
.ParameterForeColor = _outputHighlightingForeColor.SetHue(85).AddSaturation(-0.15D + _backLuma / 4).AddLuminance(-0.1D - _backLuma / 12),
.ParameterFontStyles = {FontStyle.Bold},
.ParameterValueBackColor = .ParameterBackColor,
.ParameterValueForeColor = _outputHighlightingForeColor.SetHue(210).AddSaturation(0.1).AddLuminance(-0.05),
.ParameterValueFontStyles = {},
_
.ExeFileBackColor = General.Controls.RichTextBox.BackColor,
.ExeFileForeColor = _outputHighlightingForeColor.SetHue(20),
.ExeFileFontStyles = {},
_
.PipeBackColor = General.Controls.RichTextBox.BackColor,
.PipeForeColor = _outputHighlightingForeColor.SetHue(0).AddLuminance(-0.2),
.PipeFontStyles = {FontStyle.Bold},
_
.MediaFileBackColor = General.Controls.RichTextBox.BackColor,
.MediaFileForeColor = _outputHighlightingForeColor.SetHue(160).AddLuminance(-0.15),
.MediaFileFontStyles = {},
_
.MetadataFileBackColor = General.Controls.RichTextBox.BackColor,
.MetadataFileForeColor = _outputHighlightingForeColor.SetHue(270).AddLuminance(-0.15),
.MetadataFileFontStyles = {},
_
.ScriptFileBackColor = General.Controls.RichTextBox.BackColor,
.ScriptFileForeColor = _outputHighlightingForeColor.SetHue(300).AddSaturation(-0.33).AddLuminance(-0.25D + _backLuma / 2),
.ScriptFileFontStyles = {},
_
.AlternateBackColor = General.Controls.RichTextBox.BackColor.AddLuminance(0.05),
.AlternateForeColor = _foreColor.AddLuminance(0.15),
.AlternateFontStyles = {},
_
.SourceBackColor = _outputHighlightingBackColor.AddSaturation(-_backLuma / 4),
.SourceForeColor = _foreColor,
_
.InfoLabelBackColor = _outputHighlightingBackColor.SetHue(145),
.InfoLabelForeColor = _foreColor,
.InfoTextBackColor = General.Controls.RichTextBox.BackColor,
.InfoTextForeColor = Color.Purple,
_
.WarningLabelBackColor = _outputHighlightingBackColor.SetHue(350),
.WarningLabelForeColor = _outputHighlightingStrongForeColor.SetHue(.WarningLabelBackColor.H).AddLuminance(_backLuma / 2),
.WarningLabelFontStyles = {},
.WarningTextBackColor = General.Controls.RichTextBox.BackColor,
.WarningTextForeColor = _outputHighlightingStrongForeColor.SetHue(.WarningLabelBackColor.H).AddLuminance(-_backLuma / 10),
.WarningTextFontStyles = {FontStyle.Bold},
_
.FramesBackColor = General.Controls.RichTextBox.BackColor,
.FramesForeColor = _outputHighlightingForeColor.SetHue(140).AddLuminance(-0.05),
.FramesFontStyles = {},
.FramesCuttedBackColor = General.Controls.RichTextBox.BackColor,
.FramesCuttedForeColor = _outputHighlightingForeColor.SetHue(50),
.FramesCuttedFontStyles = {},
.FramesCuttedNumberBackColor = General.Controls.RichTextBox.BackColor,
.FramesCuttedNumberForeColor = New ColorHSL(.FramesCuttedForeColor.H - 20, .FramesCuttedForeColor.S + 0.33D, .FramesCuttedForeColor.L - 0.075D),
.FramesCuttedNumberFontStyles = {FontStyle.Bold},
_
.FrameServerBackColor = General.Controls.RichTextBox.BackColor,
.FrameServerForeColor = _outputHighlightingStrongForeColor.SetHue(300).AddSaturation(-0.2),
.FrameServerFontStyles = {FontStyle.Italic, FontStyle.Bold},
_
.EncoderBackColor = General.Controls.RichTextBox.BackColor,
.EncoderForeColor = _outputHighlightingStrongForeColor.SetHue(205).AddLuminance(0.05),
.EncoderFontStyles = {FontStyle.Italic, FontStyle.Bold}
}
}
TaskDialog = New TaskDialogThemeColors() With {
.BackColor = _controlBackColor.AddLuminance(-0.005),
.ForeColor = _foreColor.AddLuminance(0.1),
.Button = New TaskDialogThemeColors.ButtonThemeColors() With {
.BackColor = _controlBackColor.AddLuminance(0.005),
.BorderColor = .BackColor.AddLuminance(0.05),
.ForeColor = _foreColor.AddLuminance(0.1),
.TimeoutBackColor = _controlBackColor.AddSaturation(0.3).AddLuminance(0.1),
.TimeoutForeColor = .ForeColor.AddLuminance(0.1)
},
.CommandButton = New TaskDialogThemeColors.CommandButtonThemeColors() With {
.BackColor = _controlBackColor.AddLuminance(0.005),
.BorderColor = .BackColor.AddLuminance(0.05),
.ForeColor = _foreColor.AddLuminance(0.1)
}
}
VideoComparisonForm = New VideoComparisonFormThemeColors() With {
.BackColor = _backColor,
.TabBackColor = .BackColor.AddLuminance(-0.05)
}
End Sub
Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub
End Class
End Class