123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- using System.Drawing;
- using System.Windows.Forms;
- namespace FastReport.Utils
- {
- /// <summary>
- /// The style of FastReport user interface.
- /// </summary>
- public enum UIStyle
- {
- /// <summary>
- /// Specifies the Microsoft Visual Studio 2005 style.
- /// </summary>
- VisualStudio2005,
- /// <summary>
- /// Specifies the Microsoft Office 2003 style (blue).
- /// </summary>
- Office2003,
- }
- 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 ToolWindowColors
- {
- public class CaptionColors
- {
- public Color GradientBegin;
- public Color GradientEnd;
- public Color ForeColor = SystemColors.WindowText;
- public Color HighlightButton;
- }
- 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();
- }
- internal class FRColorTable : ProfessionalColorTable
- {
- public WorkspaceColors Workspace { get; } = new WorkspaceColors();
- public ToolWindowColors ToolWindow { get; set; }
- public FRColorTable()
- {
- ToolWindow = Workspace;
- }
- }
- internal class FRVS2005ColorTable : FRColorTable
- {
- public override Color ToolStripBorder
- {
- get { return SeparatorDark; }
- }
- public FRVS2005ColorTable()
- {
- UseSystemColors = true;
- 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.Control;
- 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 = SystemColors.WindowText;
- ToolWindow.Caption.GradientBegin = ToolStripGradientMiddle;
- ToolWindow.Caption.GradientEnd = ToolStripGradientEnd;
- ToolWindow.Caption.HighlightButton = ButtonSelectedHighlight;
- }
- }
- internal class FROffice2003ColorTable : FRColorTable
- {
- private static Color _toolStripDropDownBackground = Color.FromArgb(250, 250, 250);
- private static Color _buttonPressedGradientBegin = Color.FromArgb(248, 181, 106);
- private static Color _buttonPressedGradientEnd = Color.FromArgb(255, 208, 134);
- private static Color _buttonPressedGradientMiddle = Color.FromArgb(251, 140, 60);
- private static Color _buttonSelectedGradientBegin = Color.FromArgb(255, 255, 222);
- private static Color _buttonSelectedGradientEnd = Color.FromArgb(255, 203, 136);
- private static Color _buttonSelectedGradientMiddle = Color.FromArgb(255, 225, 172);
- private static Color _menuItemSelectedGradientBegin = Color.FromArgb(255, 213, 103);
- private static Color _menuItemSelectedGradientEnd = Color.FromArgb(255, 228, 145);
- private static Color _checkBackground = Color.FromArgb(255, 227, 149);
- private static Color _gripDark = Color.FromArgb(111, 157, 217);
- private static Color _gripLight = Color.FromArgb(255, 255, 255);
- private static Color _imageMarginGradientBegin = Color.FromArgb(233, 238, 238);
- private static Color _menuBorder = Color.FromArgb(134, 134, 134);
- private static Color _overflowButtonGradientBegin = Color.FromArgb(167, 204, 251);
- private static Color _overflowButtonGradientEnd = Color.FromArgb(101, 147, 207);
- private static Color _overflowButtonGradientMiddle = Color.FromArgb(167, 204, 251);
- private static Color _menuToolBack = Color.FromArgb(191, 219, 255);
- private static Color _separatorDark = Color.FromArgb(154, 198, 255);
- private static Color _separatorLight = Color.FromArgb(255, 255, 255);
- private static Color _statusStripGradientBegin = Color.FromArgb(215, 229, 247);
- private static Color _statusStripGradientEnd = Color.FromArgb(172, 201, 238);
- private static Color _toolStripBorder = Color.FromArgb(111, 157, 217);
- private static Color _toolStripContentPanelGradientBegin = Color.FromArgb(164, 195, 235);
- private static Color _toolStripGradientBegin = Color.FromArgb(227, 239, 255);
- private static Color _toolStripGradientEnd = Color.FromArgb(152, 186, 230);
- private static Color _toolStripGradientMiddle = Color.FromArgb(222, 236, 255);
- private static Color _buttonSelectedHighlightBorder = Color.FromArgb(121, 153, 194);
- 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 MenuBorder => _menuBorder;
- 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 OverflowButtonGradientBegin => _overflowButtonGradientBegin;
- public override Color OverflowButtonGradientEnd => _overflowButtonGradientEnd;
- public override Color OverflowButtonGradientMiddle => _overflowButtonGradientMiddle;
- 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 ToolStripContentPanelGradientBegin => _toolStripContentPanelGradientBegin;
- public override Color ToolStripContentPanelGradientEnd => _menuToolBack;
- 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 FROffice2003ColorTable()
- {
- Workspace.ForeColor = Color.FromArgb(60, 60, 60);
- Workspace.ControlBackColor = Color.FromArgb(182, 208, 248);
- Workspace.WorkspaceBackColor = Color.FromArgb(144, 153, 174);
- Workspace.GrayColor = Color.FromArgb(145, 180, 230);
- Workspace.SplitterBackColor = Workspace.ControlBackColor;
- Workspace.TabStrip.GradientBegin = ToolStripGradientBegin;
- Workspace.TabStrip.GradientEnd = ToolStripGradientEnd;
- 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 = Workspace.ForeColor;
- ToolWindow.Caption.GradientBegin = Color.FromArgb(154, 188, 234);
- ToolWindow.Caption.GradientEnd = Color.FromArgb(154, 188, 234);
- ToolWindow.Caption.HighlightButton = ButtonSelectedHighlight;
- }
- }
- /// <summary>
- /// Contains conversion methods between FastReport's UIStyle to various enums.
- /// </summary>
- public static class UIStyleUtils
- {
- private static ToolStripProfessionalRenderer FVS2005ToolStripRenderer;
- private static ToolStripProfessionalRenderer FOffice2003ToolStripRenderer;
- private static FRColorTable FVS2005ColorTable;
- private static FRColorTable FOffice2003ColorTable;
- internal const UIStyle DefaultStyle = UIStyle.Office2003;
- /// <summary>
- /// Gets UI style names.
- /// </summary>
- public static readonly string[] UIStyleNames = new string[] {
- "VisualStudio 2005",
- "Office 2003",
- };
- /// <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)
- {
- if (FVS2005ToolStripRenderer == null)
- {
- FVS2005ToolStripRenderer = new ToolStripProfessionalRenderer(GetColorTable(UIStyle.VisualStudio2005));
- // FVS2005ToolStripRenderer.RoundedEdges = false;
- }
- if (FOffice2003ToolStripRenderer == null)
- {
- FOffice2003ToolStripRenderer = new ToolStripProfessionalRenderer(GetColorTable(UIStyle.Office2003));
- // FOffice2003ToolStripRenderer.RoundedEdges = false;
- }
- switch (style)
- {
- case UIStyle.Office2003:
- return FOffice2003ToolStripRenderer;
- default:
- return FVS2005ToolStripRenderer;
- }
- }
- internal static FRColorTable GetColorTable(UIStyle style)
- {
- if (FVS2005ColorTable == null)
- FVS2005ColorTable = new FRVS2005ColorTable();
- if (FOffice2003ColorTable == null)
- FOffice2003ColorTable = new FROffice2003ColorTable();
- switch (style)
- {
- case UIStyle.Office2003:
- return FOffice2003ColorTable;
- default:
- return FVS2005ColorTable;
- }
- }
- internal static Color GetControlColor(UIStyle style) => GetColorTable(style).Workspace.ControlBackColor;
- internal static Color GetGrayColor(UIStyle style) => GetColorTable(style).Workspace.GrayColor;
- }
- }
|