123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461 |
- using System.Windows.Forms;
- using System.Drawing;
- using System.Collections.Generic;
- using System.Linq;
- #pragma warning disable CS1591
- namespace FastReport.Utils
- {
- /// <summary>
- /// The style of FastReport user interface.
- /// </summary>
- public enum UIStyle
- {
- /// <summary>
- /// The default light gray style.
- /// </summary>
- Light,
-
- /// <summary>
- /// Blue style.
- /// </summary>
- Blue,
- /// <summary>
- /// Light Blue style.
- /// </summary>
- LightBlue,
- /// <summary>
- /// Dark style.
- /// </summary>
- Dark,
- /// <summary>
- /// Custom style
- /// </summary>
- Custom1,
- /// <summary>
- /// Custom style
- /// </summary>
- Custom2,
- /// <summary>
- /// Custom style
- /// </summary>
- Custom3,
- /// <summary>
- /// Custom style
- /// </summary>
- Custom4,
- /// <summary>
- /// Custom style
- /// </summary>
- Custom5
- }
- public class TabStripColors
- {
- public Color GradientBegin;
- public Color GradientEnd;
- public Color Border;
- public int BorderWidth = 1;
- public Color ActiveTabForeground = SystemColors.WindowText;
- public Color ActiveTabBackground = SystemColors.Window;
- public Color InactiveTabForeground;
- }
- public class CaptionColors
- {
- public Color GradientBegin;
- public Color GradientEnd;
- public Color ForeColor = SystemColors.WindowText;
- public Color BorderColor;
- public Color HighlightButton;
- }
- public class ToolWindowColors
- {
- public CaptionColors Caption { get; } = new CaptionColors();
- public TabStripColors TabStrip { get; } = new TabStripColors();
- public Color ControlBackColor;
- }
- public class ZoomControlColors
- {
- public Color GradientBegin;
- public Color GradientEnd;
- public Color Foreground;
- }
- public class WorkspaceColors : ToolWindowColors
- {
- public Color ForeColor;
- public Color WorkspaceBackColor;
- public Color GrayColor;
- public Color SplitterBackColor;
- public ZoomControlColors ZoomControl { get; } = new ZoomControlColors();
- }
- public class RibbonColors
- {
- public Color GradientBegin;
- public Color GradientEnd;
- public Color BorderColor;
- }
- public class FRColorTable : ProfessionalColorTable
- {
- public CaptionColors WindowTitle { get; } = new CaptionColors();
- public WorkspaceColors Workspace { get; } = new WorkspaceColors();
- public ToolWindowColors ToolWindow { get; set; }
- public RibbonColors Ribbon { get; } = new RibbonColors();
- public FRColorTable()
- {
- ToolWindow = Workspace;
- }
- }
- public class LightColorTable : FRColorTable
- {
- private static Color _color = Color.SteelBlue;
- private static Color _color2 = SystemColors.Control;
- public override Color ComboBoxStaticBorder => SystemColors.ControlLight;// Color.Transparent;
- public override Color ButtonCheckedGradientBegin => ButtonSelectedGradientBegin;
- public override Color ButtonCheckedGradientMiddle => ButtonSelectedGradientMiddle;
- public override Color ButtonCheckedGradientEnd => ButtonSelectedGradientEnd;
- public override Color ButtonSelectedHighlightBorder => _color;
- public override Color StatusStripGradientBegin => _color;
- public override Color StatusStripGradientEnd => _color;
- public override Color StatusStripForeground => SystemColors.Window;
- public override Color ToolStripBorder => SeparatorDark;
- public override Color MenuStripGradientBegin => _color2;
- public override Color MenuStripGradientEnd => _color2;
- public override Color ToolStripPanelGradientBegin => _color2;
- public override Color ToolStripPanelGradientEnd => _color2;
- public override Color MenuItemBorder => _color;
- public override Color MenuQATGradientBegin => ToolStripGradientEnd;
- public override Color MenuQATGradientMiddle => ToolStripGradientEnd;
- public override Color MenuQATGradientEnd => ToolStripGradientEnd;
- public LightColorTable()
- {
- UseSystemColors = true;
- WindowTitle.GradientBegin = WindowTitle.GradientEnd = SystemColors.Control;
- WindowTitle.BorderColor = SystemColors.ActiveBorder;
- WindowTitle.HighlightButton = SystemColors.ControlLight;
- Workspace.ForeColor = Color.FromArgb(60, 60, 60);
- Workspace.ControlBackColor = SystemColors.Control;
- Workspace.WorkspaceBackColor = Color.FromArgb(220, 220, 220);
- Workspace.GrayColor = Color.FromArgb(232, 232, 232);
- Workspace.SplitterBackColor = SystemColors.ControlLight;
- Workspace.TabStrip.GradientBegin = Workspace.TabStrip.GradientEnd = SystemColors.Control;
- Workspace.TabStrip.Border = ToolStripBorder;
- Workspace.TabStrip.ActiveTabForeground = SystemColors.WindowText;
- Workspace.TabStrip.InactiveTabForeground = SystemColors.ControlDarkDark;
-
- Workspace.ZoomControl.GradientBegin = StatusStripGradientBegin;
- Workspace.ZoomControl.GradientEnd = StatusStripGradientEnd;
- Workspace.ZoomControl.Foreground = StatusStripForeground;
- ToolWindow.Caption.GradientBegin = ToolStripGradientMiddle;
- ToolWindow.Caption.GradientEnd = ToolStripGradientEnd;
- ToolWindow.Caption.HighlightButton = ButtonSelectedHighlight;
- Ribbon.GradientBegin = Ribbon.GradientEnd = SystemColors.Window;
- Ribbon.BorderColor = ToolStripBorder;
- }
- }
- public class BlueColorTable : LightColorTable
- {
- private static Color _color = Color.FromArgb(220, 230, 242);
- public override Color ComboBoxStaticBorder => ToolStripGradientEnd;
- public override Color ComboBoxDisabledBackground => _color;
- public override Color MenuStripGradientBegin => StatusStripGradientBegin;
- public override Color MenuStripGradientEnd => StatusStripGradientEnd;
- public override Color TopLevelMenuItemForeground => StatusStripForeground;
- public override Color ToolStripPanelGradientBegin => StatusStripGradientBegin;
- public override Color ToolStripPanelGradientEnd => StatusStripGradientEnd;
- public override Color ToolStripGradientBegin => Color.FromArgb(231, 242, 255);
- public override Color ToolStripGradientMiddle => _color;
- public override Color ToolStripGradientEnd => Color.FromArgb(190, 205, 222);
- public override Color ToolStripBorder => Color.FromArgb(150, 165, 180);
- public override Color MenuQATGradientBegin => ToolStripGradientMiddle;
- public override Color MenuQATGradientMiddle => ToolStripGradientMiddle;
- public override Color MenuQATGradientEnd => ToolStripGradientEnd;
- public BlueColorTable()
- {
- WindowTitle.GradientBegin = WindowTitle.GradientEnd = WindowTitle.BorderColor = MenuStripGradientBegin;
- WindowTitle.ForeColor = TopLevelMenuItemForeground;
- WindowTitle.HighlightButton = Color.FromArgb(80, 150, 207);
- Workspace.ControlBackColor = _color;
- Workspace.WorkspaceBackColor = _color;
- Workspace.GrayColor = Color.FromArgb(190, 205, 222);
- Workspace.SplitterBackColor = Color.FromArgb(162, 176, 191);
- Workspace.TabStrip.GradientBegin = Workspace.TabStrip.GradientEnd = _color;
- Workspace.TabStrip.Border = ToolStripBorder;
- ToolWindow.Caption.GradientBegin = //ToolStripGradientBegin;
- ToolWindow.Caption.GradientEnd = Workspace.ControlBackColor;// ToolStripGradientMiddle;
- ToolWindow.Caption.HighlightButton = ButtonCheckedGradientBegin;
- Ribbon.GradientBegin = Ribbon.GradientEnd = ToolStripGradientMiddle;
- Ribbon.BorderColor = ToolStripBorder;
- }
- }
- public class LightBlueColorTable : LightColorTable
- {
- public override Color MenuStripGradientBegin => StatusStripGradientBegin;
- public override Color MenuStripGradientEnd => StatusStripGradientEnd;
- public override Color TopLevelMenuItemForeground => StatusStripForeground;
- public override Color ToolStripGradientBegin => Color.FromArgb(250, 250, 250);
- public override Color ToolStripGradientMiddle => Color.FromArgb(240, 240, 240);
- public override Color ToolStripGradientEnd => Color.FromArgb(234, 234, 234);
- public LightBlueColorTable()
- {
- WindowTitle.GradientBegin = WindowTitle.GradientEnd = WindowTitle.BorderColor = MenuStripGradientBegin;
- WindowTitle.ForeColor = TopLevelMenuItemForeground;
- WindowTitle.HighlightButton = Color.FromArgb(80, 150, 207);
- Workspace.TabStrip.ActiveTabBackground = Workspace.TabStrip.Border = StatusStripGradientBegin;
- Workspace.TabStrip.ActiveTabForeground = SystemColors.Window;
- Workspace.TabStrip.BorderWidth = 2;
- ToolWindow = new ToolWindowColors();
- ToolWindow.TabStrip.GradientBegin = ToolWindow.TabStrip.GradientEnd = SystemColors.Control;
- ToolWindow.TabStrip.Border = ToolStripBorder;
- ToolWindow.TabStrip.ActiveTabForeground = SystemColors.WindowText;
- ToolWindow.TabStrip.InactiveTabForeground = SystemColors.ControlDarkDark;
- ToolWindow.Caption.GradientBegin = ToolWindow.Caption.GradientEnd = ToolStripGradientMiddle;
- //ToolStripGradientEnd;
- ToolWindow.Caption.HighlightButton = ButtonSelectedHighlight;
- ToolWindow.ControlBackColor = SystemColors.Control;
- Ribbon.GradientBegin = Ribbon.GradientEnd = SystemColors.Control;
- Ribbon.BorderColor = ToolStripBorder;
- }
- }
- public class DarkColorTable : FRColorTable
- {
- private static Color _foreground = Color.FromArgb(0, 0, 0);
- private static Color _disabledForeground = Color.FromArgb(128, 128, 128);
- private static Color _comboBoxBackground = Color.FromArgb(255, 255, 255);
- private static Color _comboBoxDisabledBackground = Color.FromArgb(204, 207, 212);
- private static Color _toolStripDropDownBackground = Color.FromArgb(250, 250, 250);
- private static Color _buttonPressedGradientBegin = Color.FromArgb(252, 214, 165);
- private static Color _buttonPressedGradientEnd = Color.FromArgb(250, 230, 150);
- private static Color _buttonPressedGradientMiddle = Color.FromArgb(254, 185, 96);
- private static Color _buttonSelectedGradientBegin = Color.FromArgb(255, 247, 200);
- private static Color _buttonSelectedGradientMiddle = Color.FromArgb(255, 247, 200);
- private static Color _buttonSelectedGradientEnd = Color.FromArgb(255, 219, 89);
- private static Color _buttonSelectedHighlightBorder = Color.FromArgb(112, 112, 112);
- private static Color _menuItemBorder = Color.FromArgb(112, 112, 112);
- private static Color _topLevelMenuItemForeground = Color.FromArgb(255, 255, 255);
- private static Color _topLevelMenuItemDisabledForeground = Color.FromArgb(140, 140, 140);
- private static Color _menuItemSelectedGradientBegin = Color.FromArgb(255, 247, 200);
- private static Color _menuItemSelectedGradientEnd = Color.FromArgb(255, 219, 89);
- private static Color _checkBackground = Color.FromArgb(255, 227, 149);
- private static Color _gripDark = Color.FromArgb(112, 112, 112);
- private static Color _gripLight = Color.FromArgb(214, 214, 214);
- private static Color _imageMarginGradientBegin = Color.FromArgb(238, 238, 238);
- private static Color _menuBorder = Color.FromArgb(134, 134, 134);
- private static Color _menuToolBack = Color.FromArgb(83, 83, 83);
- private static Color _separatorDark = Color.FromArgb(152, 159, 170);
- private static Color _separatorLight = Color.FromArgb(240, 240, 240);
- private static Color _statusStripGradientBegin = Color.FromArgb(70, 70, 70);
- private static Color _statusStripGradientEnd = Color.FromArgb(51, 51, 51);
- private static Color _statusStripForeground = Color.FromArgb(255, 255, 255);
- private static Color _toolStripBorder = Color.FromArgb(76, 83, 92);
- private static Color _toolStripGradientBegin = Color.FromArgb(214, 217, 222);
- private static Color _toolStripGradientMiddle = Color.FromArgb(204, 207, 212);
- private static Color _toolStripGradientEnd = Color.FromArgb(152, 158, 166);
- public override Color Foreground => _foreground;
- public override Color DisabledForeground => _disabledForeground;
- public override Color ComboBoxStaticBorder => ToolStripGradientEnd;
- public override Color ComboBoxBackground => _comboBoxBackground;
- public override Color ComboBoxDisabledBackground => _comboBoxDisabledBackground;
- public override Color TopLevelMenuItemForeground => _topLevelMenuItemForeground;
- public override Color TopLevelMenuItemDisabledForeground => _topLevelMenuItemDisabledForeground;
- public override Color StatusStripForeground => _statusStripForeground;
- public override int StatusStripGradientAngle => 90;
- public override bool StatusStripGradientGlass => true;
- public override bool MenuItemGradientGlass => true;
- public override Color MenuQATGradientBegin => _toolStripGradientBegin;
- public override Color MenuQATGradientMiddle => _toolStripGradientBegin;
- public override Color MenuQATGradientEnd => _toolStripGradientBegin;
- public override Color ButtonCheckedGradientBegin => _buttonPressedGradientBegin;
- public override Color ButtonCheckedGradientEnd => _buttonPressedGradientEnd;
- public override Color ButtonCheckedGradientMiddle => _buttonPressedGradientMiddle;
- public override Color ButtonPressedGradientBegin => _buttonPressedGradientBegin;
- public override Color ButtonPressedGradientEnd => _buttonPressedGradientEnd;
- public override Color ButtonPressedGradientMiddle => _buttonPressedGradientMiddle;
- public override Color ButtonSelectedGradientBegin => _buttonSelectedGradientBegin;
- public override Color ButtonSelectedGradientEnd => _buttonSelectedGradientEnd;
- public override Color ButtonSelectedGradientMiddle => _buttonSelectedGradientMiddle;
- public override Color ButtonSelectedHighlightBorder => _buttonSelectedHighlightBorder;
- public override Color CheckBackground => _checkBackground;
- public override Color GripDark => _gripDark;
- public override Color GripLight => _gripLight;
- public override Color ImageMarginGradientBegin => _imageMarginGradientBegin;
- public override Color ImageMarginGradientMiddle => _imageMarginGradientBegin;
- public override Color ImageMarginGradientEnd => _imageMarginGradientBegin;
- public override Color MenuBorder => _menuBorder;
- public override Color MenuItemBorder => _menuItemBorder;
- public override Color MenuItemPressedGradientBegin => _toolStripGradientBegin;
- public override Color MenuItemPressedGradientEnd => _toolStripGradientEnd;
- public override Color MenuItemPressedGradientMiddle => _toolStripGradientMiddle;
- public override Color MenuItemSelectedGradientBegin => _menuItemSelectedGradientBegin;
- public override Color MenuItemSelectedGradientEnd => _menuItemSelectedGradientEnd;
- public override Color MenuStripGradientBegin => _menuToolBack;
- public override Color MenuStripGradientEnd => _menuToolBack;
- public override Color RaftingContainerGradientBegin => _menuToolBack;
- public override Color RaftingContainerGradientEnd => _menuToolBack;
- public override Color SeparatorDark => _separatorDark;
- public override Color SeparatorLight => _separatorLight;
- public override Color StatusStripGradientBegin => _statusStripGradientBegin;
- public override Color StatusStripGradientEnd => _statusStripGradientEnd;
- public override Color ToolStripBorder => _toolStripBorder;
- public override Color ToolStripDropDownBackground => _toolStripDropDownBackground;
- public override Color ToolStripGradientBegin => _toolStripGradientBegin;
- public override Color ToolStripGradientEnd => _toolStripGradientEnd;
- public override Color ToolStripGradientMiddle => _toolStripGradientMiddle;
- public override Color ToolStripPanelGradientBegin => _menuToolBack;
- public override Color ToolStripPanelGradientEnd => _menuToolBack;
- public DarkColorTable()
- {
- WindowTitle.GradientBegin = WindowTitle.GradientEnd = WindowTitle.BorderColor = MenuStripGradientBegin;
- WindowTitle.ForeColor = TopLevelMenuItemForeground;
- WindowTitle.HighlightButton = Color.FromArgb(100, 100, 100);
- Workspace.ForeColor = Color.FromArgb(240, 240, 240);
- Workspace.ControlBackColor = Color.FromArgb(204, 207, 212);
- Workspace.WorkspaceBackColor = Color.FromArgb(61, 61, 61);
- Workspace.GrayColor = Color.FromArgb(143, 150, 160);
- Workspace.SplitterBackColor = StatusStripGradientBegin;
- Workspace.TabStrip.GradientBegin = Workspace.TabStrip.GradientEnd = Color.FromArgb(83, 83, 83);
- Workspace.TabStrip.Border = ToolStripBorder;
- Workspace.TabStrip.ActiveTabForeground = SystemColors.WindowText;
- Workspace.TabStrip.InactiveTabForeground = Color.FromArgb(255, 255, 255);
-
- Workspace.ZoomControl.GradientBegin = Color.FromArgb(194, 197, 202);
- Workspace.ZoomControl.GradientEnd = Color.FromArgb(61, 61, 61);
- Workspace.ZoomControl.Foreground = Color.FromArgb(255, 255, 255);
- ToolWindow.Caption.GradientBegin = //Color.FromArgb(238, 239, 240);
- ToolWindow.Caption.GradientEnd = Workspace.ControlBackColor; //Color.FromArgb(191, 196, 203);
- ToolWindow.Caption.HighlightButton = ButtonSelectedHighlight;
- Ribbon.GradientBegin = ToolStripGradientMiddle;
- Ribbon.GradientEnd = ToolStripGradientMiddle;
- Ribbon.BorderColor = GripDark;// Color.FromArgb(160, 164, 174);
- }
- }
-
- /// <summary>
- /// Contains conversion methods from FastReport's UIStyle to various enums.
- /// </summary>
- public static class UIStyleUtils
- {
- private class StyleInfo
- {
- public string Name { get; }
- public UIStyle Style { get; }
- public FRColorTable ColorTable { get; }
- public ToolStripProfessionalRenderer Renderer { get; }
- public StyleInfo(string name, UIStyle style, FRColorTable colorTable)
- {
- Name = name;
- Style = style;
- ColorTable = colorTable;
- Renderer = new ToolStripProfessionalRenderer(colorTable);
- }
- }
- private static List<StyleInfo> styles;
- private static List<StyleInfo> Styles
- {
- get
- {
- if (styles == null)
- {
- styles = new List<StyleInfo>()
- {
- new StyleInfo("Light", UIStyle.Light, new LightColorTable()),
- new StyleInfo("Blue", UIStyle.Blue, new BlueColorTable()),
- new StyleInfo("Light Blue", UIStyle.LightBlue, new LightBlueColorTable()),
- new StyleInfo("Dark", UIStyle.Dark, new DarkColorTable()),
- };
- }
- return styles;
- }
- }
- internal const UIStyle DefaultStyle = UIStyle.LightBlue;
- private static StyleInfo GetStyle(UIStyle style) => Styles.Where(s => s.Style == style).FirstOrDefault();
- /// <summary>
- /// Gets UI style names.
- /// </summary>
- public static string[] UIStyleNames => Styles.Select(s => s.Name).ToArray();
- /// <summary>
- /// Returns toolstrip renderer for the given style.
- /// </summary>
- /// <param name="style">UI style.</param>
- /// <returns>The renderer.</returns>
- public static ToolStripProfessionalRenderer GetToolStripRenderer(UIStyle style) => GetStyle(style).Renderer;
- /// <summary>
- /// Adds a new style or replaces existing one.
- /// </summary>
- /// <param name="name">The name of style.</param>
- /// <param name="style">The style index to add.</param>
- /// <param name="colorTable">The color table.</param>
- public static void AddStyle(string name, UIStyle style, FRColorTable colorTable)
- {
- var st = new StyleInfo(name, style, colorTable);
- var s = GetStyle(style);
- if (s != null)
- Styles[Styles.IndexOf(s)] = st;
- else
- Styles.Add(st);
- }
- internal static FRColorTable GetColorTable(UIStyle style) => GetStyle(style).ColorTable;
- internal static Color GetControlColor(UIStyle style) => GetColorTable(style).Workspace.ControlBackColor;
- internal static Color GetGrayColor(UIStyle style) => GetColorTable(style).Workspace.GrayColor;
- }
- }
- #pragma warning restore CS1591
|