DotNet 4.8.1 build of DotNetBar

This commit is contained in:
2025-02-07 10:35:23 -05:00
parent 33439b63a0
commit 6b0a5d60f4
2609 changed files with 989814 additions and 7 deletions

View File

@@ -0,0 +1,402 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Globalization;
using System.Reflection;
using System.Collections;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
public class MetroColorTable
{
/// <summary>
/// Gets or sets the background color.
/// </summary>
public Color CanvasColor = Color.White;
/// <summary>
/// Gets or sets the canvas light shade color. This property is not directly used but it is provided for reference.
/// </summary>
public Color CanvasColorShadeLight = Color.White;
/// <summary>
/// Gets or sets the canvas lighter shade color. This property is not directly used but it is provided for reference.
/// </summary>
public Color CanvasColorShadeLighter = Color.White;
/// <summary>
/// Gets or sets the foreground color.
/// </summary>
public Color ForeColor = Color.Black;
/// <summary>
/// Gets or sets the base metro color.
/// </summary>
public Color BaseColor = Color.Black;
/// <summary>
/// Gets or sets background color of edit controls.
/// </summary>
public Color EditControlBackColor;
/// <summary>
/// Gets or sets the color table for MetroAppForm.
/// </summary>
public MetroAppFormColorTable MetroAppForm = new MetroAppFormColorTable();
/// <summary>
/// Gets or sets the color table for MetroForm.
/// </summary>
public MetroFormColorTable MetroForm = new MetroFormColorTable();
/// <summary>
/// Gets or sets the color table for MetroTab.
/// </summary>
public MetroTabColorTable MetroTab = new MetroTabColorTable();
/// <summary>
/// Gets or sets color table for MetroStatusBar.
/// </summary>
public MetroStatusBarColorTable MetroStatusBar = new MetroStatusBarColorTable();
/// <summary>
/// Gets or sets color table for MetroToolbar.
/// </summary>
public MetroToolbarColorTable MetroToolbar = new MetroToolbarColorTable();
/// <summary>
/// Gets or sets the color table used by MetroTile items.
/// </summary>
public MetroTileColorTable MetroTile = new MetroTileColorTable();
/// <summary>
/// Gets or sets the metro-part colors that define the metro UI color scheme. These colors are provided for you reference and reuse in your app.
/// </summary>
public MetroPartColors MetroPartColors = new MetroPartColors();
}
/// <summary>
/// Represents class that defines parameters for Metro style color scheme.
/// </summary>
[TypeConverterAttribute(typeof(MetroColorGeneratorParametersConverter))]
public struct MetroColorGeneratorParameters
{
#region Implementation
/// <summary>
/// Initializes a new instance of the MetroStyleParameters class.
/// </summary>
/// <param name="canvasColor">Canvas color.</param>
/// <param name="baseColor">Base color.</param>
public MetroColorGeneratorParameters(Color canvasColor, Color baseColor)
{
if (canvasColor.IsEmpty) canvasColor = DefaultCanvasColor;
if (baseColor.IsEmpty) baseColor = DefaultBaseColor;
_CanvasColor = canvasColor;
_BaseColor = baseColor;
_ThemeName = "";
}
/// <summary>
/// Initializes a new instance of the MetroColorGeneratorParameters structure.
/// </summary>
/// <param name="canvasColor">Canvas color.</param>
/// <param name="baseColor">Base color.</param>
/// <param name="themeName">User friendly theme name.</param>
public MetroColorGeneratorParameters(Color canvasColor, Color baseColor, string themeName)
{
_CanvasColor = canvasColor;
_BaseColor = baseColor;
_ThemeName = themeName;
}
/// <summary>
/// Returns array of all predefined Metro color themes.
/// </summary>
/// <returns></returns>
public static MetroColorGeneratorParameters[] GetAllPredefinedThemes()
{
Type t = typeof(MetroColorGeneratorParameters);
PropertyInfo[] members = t.GetProperties(BindingFlags.Public | BindingFlags.Static);
List<MetroColorGeneratorParameters> themes = new List<MetroColorGeneratorParameters>();
foreach (PropertyInfo mem in members)
{
if (mem.PropertyType == t)
{
themes.Add((MetroColorGeneratorParameters)mem.GetValue(null, null));
}
}
return themes.ToArray();
}
private static readonly Color DefaultCanvasColor = Color.White;
private Color _CanvasColor;
/// <summary>
/// Gets or sets the color of the Metro canvas.
/// </summary>
[Category("Columns"), Description("Indicates color of the metro Canvas.")]
public Color CanvasColor
{
get { return _CanvasColor; }
set { _CanvasColor = value; }
}
/// <summary>
/// Gets whether property should be serialized.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeCanvasColor()
{
return _CanvasColor != DefaultCanvasColor;
}
/// <summary>
/// Resets property to its default value.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public void ResetCanvasColor()
{
this.CanvasColor = DefaultCanvasColor;
}
private static readonly Color DefaultBaseColor = ColorScheme.GetColor("FFA31A");
private Color _BaseColor;
/// <summary>
/// Gets or sets the base color for the Metro style.
/// </summary>
[Category("Columns"), Description("Indicates base color of the Metro style.")]
public Color BaseColor
{
get { return _BaseColor; }
set { _BaseColor = value; }
}
/// <summary>
/// Gets whether property should be serialized.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeBaseColor()
{
return _BaseColor != DefaultBaseColor;
}
/// <summary>
/// Resets property to its default value.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public void ResetBaseColor()
{
this.BaseColor = DefaultBaseColor;
}
private string _ThemeName;
/// <summary>
/// Gets or sets the user friendly theme name.
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string ThemeName
{
get { return _ThemeName; }
set { _ThemeName = value; }
}
#endregion
#region Static Color Schemes
public static MetroColorGeneratorParameters Default { get { return new MetroColorGeneratorParameters(Color.White, ColorScheme.GetColor("2B579A"), "Default"); } }
public static MetroColorGeneratorParameters Purple { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("6A3889"), "Purple"); } }
public static MetroColorGeneratorParameters Red { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("CF4926"), "Red"); } }
public static MetroColorGeneratorParameters Green { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("217346"), "Green"); } }
public static MetroColorGeneratorParameters Blue { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("0072C6"), "Blue"); } }
public static MetroColorGeneratorParameters DarkPurple { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("80397B"), "DarkPurple"); } }
public static MetroColorGeneratorParameters RedAmplified { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("D24726"), "RedAmplified"); } }
public static MetroColorGeneratorParameters ForestGreen { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("077568"), "ForestGreen"); } }
public static MetroColorGeneratorParameters Brown { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor(0xE7DEC0), ColorScheme.GetColor("6D4320"), "Brown");}}
public static MetroColorGeneratorParameters DarkRed { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("F2F2F2"), ColorScheme.GetColor("A4373A"), "Dark Red"); } }
public static MetroColorGeneratorParameters Orange { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("ED8E00"), "Orange"); } }
public static MetroColorGeneratorParameters BlackMaroon { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("1C190F"), ColorScheme.GetColor("8A2F25"), "Black Maroon");}}
public static MetroColorGeneratorParameters BlackSky { get { return new MetroColorGeneratorParameters(Color.Black, ColorScheme.GetColor("00A7FF"), "Black Sky");}}
public static MetroColorGeneratorParameters BlackClouds { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("000000"), ColorScheme.GetColor("9B96A3"), "Black Clouds");}}
public static MetroColorGeneratorParameters BlackLilac { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("191919"), ColorScheme.GetColor("D8CAFF"), "Black Lilac");}}
public static MetroColorGeneratorParameters Bordeaux { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("F2EBDC"), ColorScheme.GetColor("960E00"), "Bordeaux");}}
public static MetroColorGeneratorParameters Rust { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("B4B48D"), ColorScheme.GetColor("A94D2D"), "Rust");}}
public static MetroColorGeneratorParameters Espresso { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("AB9667"), ColorScheme.GetColor("383025"), "Espresso");}}
public static MetroColorGeneratorParameters PowderRed { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("D0D9D6"), ColorScheme.GetColor("BF0404"), "Powder Red");}}
public static MetroColorGeneratorParameters BlueishBrown { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("D5D5E0"), ColorScheme.GetColor("3D1429"), "Blueish Brown");}}
public static MetroColorGeneratorParameters SilverGreen { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("F2F2F2"), ColorScheme.GetColor("588C3F"), "Silver Green");}}
public static MetroColorGeneratorParameters MaroonSilver { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("260B01"), ColorScheme.GetColor("F2F2F2"), "Maroon Silver");}}
public static MetroColorGeneratorParameters SkyGreen { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("BDD5D0"), ColorScheme.GetColor("04ADBF"), "Sky Green");}}
public static MetroColorGeneratorParameters DarkBrown { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("D9B573"), ColorScheme.GetColor("261105"), "Dark Brown");}}
public static MetroColorGeneratorParameters Latte { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("B18D5A"), ColorScheme.GetColor("851A1D"), "Latte");}}
public static MetroColorGeneratorParameters Cherry { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("DECDAE"), ColorScheme.GetColor("5A0D12"), "Cherry");}}
public static MetroColorGeneratorParameters GrayOrange { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("E8E8DC"), ColorScheme.GetColor("FF8600"), "Gray Orange");}}
public static MetroColorGeneratorParameters EarlyRed { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FCFCF0"), ColorScheme.GetColor("C93C00"), "Early Red");}}
public static MetroColorGeneratorParameters EarlyMaroon { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FCFCF0"), ColorScheme.GetColor("730046"), "Early Maroon");}}
public static MetroColorGeneratorParameters EarlyOrange { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FCFCF0"), ColorScheme.GetColor("E88801"), "Early Orange");}}
public static MetroColorGeneratorParameters SilverBlues { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("dcdcdc"), ColorScheme.GetColor("002395"), "Silver Blues");}}
public static MetroColorGeneratorParameters RetroBlue { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FEFEFE"), ColorScheme.GetColor("3E788F"), "Retro Blue");}}
public static MetroColorGeneratorParameters LatteRed { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("A77A51"), ColorScheme.GetColor("8C170D"), "Latte Red");}}
public static MetroColorGeneratorParameters LatteDarkSteel { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("A77A51"), ColorScheme.GetColor("2C2D40"), "Latte Dark Steel");}}
public static MetroColorGeneratorParameters SimplyBlue { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("E2E2E2"), ColorScheme.GetColor("215BA6"), "Simply Blue");}}
public static MetroColorGeneratorParameters WashedBlue { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("B8CDD1"), ColorScheme.GetColor("B4090A"), "Washed Blue");}}
public static MetroColorGeneratorParameters WashedWhite { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FEFFF8"), ColorScheme.GetColor("92AAB1"), "Washed White");}}
public static MetroColorGeneratorParameters NapaRed { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("F2F2F2"), ColorScheme.GetColor("A64B29"), "Napa Red");}}
public static MetroColorGeneratorParameters Magenta { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("7F3B78"), "Magenta"); } }
public static MetroColorGeneratorParameters DarkBlue { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("2B569A"), "Dark Blue"); } }
public static MetroColorGeneratorParameters VisualStudio2012Light { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("EFEFF2"), ColorScheme.GetColor("007ACC"), "Visual Studio 2012 Light"); } }
public static MetroColorGeneratorParameters VisualStudio2012Dark { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("2D2D30"), ColorScheme.GetColor("007ACC"), "Visual Studio 2012 Dark"); } }
public static MetroColorGeneratorParameters Office2016Blue { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("0173C7"), "Office 2016 Blue"); } }
public static MetroColorGeneratorParameters Office2016DarkBlue { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("2A579A"), "Office 2016 Dark Blue"); } }
public static MetroColorGeneratorParameters Office2016Green { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("227447"), "Office 2016 Green"); } }
public static MetroColorGeneratorParameters Office2016Orange { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("B7472A"), "Office 2016 Orange"); } }
public static MetroColorGeneratorParameters Office2016Red { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("A4373A"), "Office 2016 Red"); } }
public static MetroColorGeneratorParameters Office2016Purple { get { return new MetroColorGeneratorParameters(ColorScheme.GetColor("FFFFFF"), ColorScheme.GetColor("80397B"), "Office 2016 Purple"); } }
#endregion
}
#region MetroColorGeneratorParameters
public class MetroColorGeneratorParametersConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return ((sourceType == typeof(string)) || base.CanConvertFrom(context, sourceType));
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return ((destinationType == typeof(InstanceDescriptor)) || base.CanConvertTo(context, destinationType));
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string str = value as string;
if (str == null)
{
return base.ConvertFrom(context, culture, value);
}
string str2 = str.Trim();
if (str2.Length == 0)
{
return null;
}
if (culture == null)
{
culture = CultureInfo.CurrentCulture;
}
char ch = culture.TextInfo.ListSeparator[0];
string[] strArray = str2.Split(new char[] { ch });
if (strArray.Length != 2)
{
throw new ArgumentException("String parsing failed due to incorrect format.");
}
MetroColorGeneratorParameters colorParams = new MetroColorGeneratorParameters();
TypeConverter converter = TypeDescriptor.GetConverter(typeof(Color));
colorParams.CanvasColor = (Color)converter.ConvertFromString(context, culture, strArray[0]);
colorParams.BaseColor = (Color)converter.ConvertFromString(context, culture, strArray[1]);
return colorParams;
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (destinationType == null)
{
throw new ArgumentNullException("destinationType");
}
if (value is MetroColorGeneratorParameters)
{
if (destinationType == typeof(string))
{
MetroColorGeneratorParameters colorParams = (MetroColorGeneratorParameters)value;
if (culture == null)
{
culture = CultureInfo.CurrentCulture;
}
string separator = culture.TextInfo.ListSeparator + " ";
//TypeConverter converter = TypeDescriptor.GetConverter(typeof(Color));
string[] strArray = new string[2];
int num = 0;
strArray[num++] = ColorToString(culture, colorParams.CanvasColor); // converter.ConvertToString(context, culture, colorParams.CanvasColor);
strArray[num++] = ColorToString(culture, colorParams.BaseColor); // converter.ConvertToString(context, culture, colorParams.BaseColor);
return string.Join(separator, strArray);
}
if (destinationType == typeof(InstanceDescriptor))
{
MetroColorGeneratorParameters colorParams = (MetroColorGeneratorParameters)value;
ConstructorInfo constructor = typeof(MetroColorGeneratorParameters).GetConstructor(new Type[] { typeof(Color), typeof(Color) });
if (constructor != null)
{
return new InstanceDescriptor(constructor, new object[] { colorParams.CanvasColor, colorParams.BaseColor });
}
}
}
return base.ConvertTo(context, culture, value, destinationType);
}
private static string ColorToString(CultureInfo culture, Color color)
{
string[] strArray;
if (color == Color.Empty)
{
return string.Empty;
}
if (color.IsKnownColor)
{
return color.Name;
}
if (color.IsNamedColor)
{
return ("'" + color.Name + "'");
}
if (culture == null)
{
culture = CultureInfo.CurrentCulture;
}
string separator = "";
int num = 0;
if (color.A < 0xff)
{
strArray = new string[4];
strArray[num++] = color.A.ToString("X2");
}
else
{
strArray = new string[3];
}
strArray[num++] = color.R.ToString("X2");
strArray[num++] = color.G.ToString("X2");
strArray[num++] = color.B.ToString("X2");
return "#" + string.Join(separator, strArray);
}
public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues)
{
if (propertyValues == null)
{
throw new ArgumentNullException("propertyValues");
}
object canvasColor = propertyValues["CanvasColor"];
object baseColor = propertyValues["BaseColor"];
if (canvasColor == null || !(canvasColor is Color) || baseColor==null || !(baseColor is Color))
{
throw new ArgumentException("Invalid property value entry");
}
return new MetroColorGeneratorParameters((Color)canvasColor, (Color)baseColor);
}
public override bool GetCreateInstanceSupported(ITypeDescriptorContext context)
{
return true;
}
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
{
return TypeDescriptor.GetProperties(typeof(MetroColorGeneratorParameters), attributes).Sort(new string[] { "CanvasColor", "BaseColor" });
}
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
{
return true;
}
}
#endregion
}

View File

@@ -0,0 +1,318 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using DevComponents.DotNetBar.Rendering;
using DevComponents.DotNetBar.Metro.Helpers;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
/// <summary>
/// Initializes the Metro UI color table based on colors specified.
/// </summary>
internal class MetroColorTableInitializer
{
public static MetroColorTable CreateColorTable(MetroColorGeneratorParameters colorParams)
{
return CreateColorTable(colorParams.CanvasColor, colorParams.BaseColor);
}
public static MetroColorTable CreateColorTable(Color canvasColor, Color baseColor)
{
MetroColorTable metroTable = new MetroColorTable();
Office2007ColorTable officeMetroColorTable = new Office2007ColorTable();
CreateColors(metroTable, officeMetroColorTable, canvasColor, baseColor);
if (StyleManager.IsMetro(StyleManager.Style))
((Office2007Renderer)GlobalManager.Renderer).ColorTable = officeMetroColorTable;
return metroTable;
}
private const double DEGREE = 1d / 360;
private static double GetHue(double hue, int addDegrees)
{
hue += addDegrees * DEGREE;
if (hue > 1)
hue -= 1;
else if (hue < 0)
hue += 1;
return hue;
}
private static double GetComplementSaturation(double saturation)
{
if (saturation == 1) return 1;
if (saturation < .81d)
return saturation + .1d;
if (saturation < .91d)
return saturation + .05d;
return saturation + (.99d - saturation);
}
public static MetroPartColors CreateMetroPartColors(Color canvasColor, Color baseColor)
{
ColorFunctions.HLSColor canvasHsl = ColorFunctions.RGBToHSL(canvasColor);
ColorFunctions.HLSColor baseHsl = ColorFunctions.RGBToHSL(baseColor);
HSVColor baseHsv = ColorHelpers.ColorToHSV(baseColor);
HSVColor canvasHsv = ColorHelpers.ColorToHSV(canvasColor);
// Create metro colors
MetroPartColors partColors = new MetroPartColors();
partColors.CanvasColor = canvasColor;
partColors.BaseColor = baseColor;
partColors.TextColor = (canvasHsl.Lightness < .4) ? Color.White : Color.Black;
//HSVColor textHsv = ColorHelpers.ColorToHSV(partColors.TextColor);
partColors.TextInactiveColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .53 : canvasHsv.Value - .47));
partColors.TextDisabledColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .67));
partColors.TextLightColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .6 : canvasHsv.Value + .4));
partColors.CanvasColorDarkShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .67));
partColors.CanvasColorLightShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .17 : canvasHsv.Value - .17));
partColors.CanvasColorLighterShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .05 : canvasHsv.Value - .05));
if(partColors.IsSolidCanvas)
partColors.CanvasColorLight = (partColors.TextColor == Color.Black)?ColorHelpers.HSVToColor(0, 0, .99):ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, canvasHsv.Value+.05);
else
partColors.CanvasColorLight = (partColors.TextColor == Color.Black) ? ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, canvasHsv.Value + (canvasHsv.Value>=.96?.020:.058)) : ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, canvasHsv.Value - .05);
//Console.WriteLine(string.Format("{0:X2}{1:X2}{2:X2}{3:X2}", partColors.CanvasColorLight.A, partColors.CanvasColorLight.R, partColors.CanvasColorLight.G, partColors.CanvasColorLight.B));
partColors.BaseTextColor = GetTextColor(baseColor);
partColors.BaseColorLight = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .41), baseHsv.Value + .3);
partColors.BaseColorLight1 = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .12), baseHsv.Value + .12);
partColors.BaseColorLightText = GetTextColor(partColors.BaseColorLight);
partColors.BaseColorLightest = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .6), baseHsv.Value + .35);
partColors.BaseColorLighter = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .4), baseHsv.Value + .39);
partColors.BaseColorDark = ColorHelpers.HSVToColor(baseHsv.Hue, baseHsv.Saturation + .1, baseHsv.Value - .06);
partColors.BaseColorDarker = ColorFunctions.HLSToRGB(baseHsl.Hue, baseHsl.Lightness - .2, baseHsl.Saturation);
partColors.ComplementColor = ColorHelpers.HSVToColor(GetComplementHue(baseHsv.Hue), baseHsv.Saturation, baseHsv.Value + (baseHsv.Value > .5d ? -.35 : 0d));
ColorFunctions.HLSColor compHsl = ColorFunctions.RGBToHSL(partColors.ComplementColor);
HSVColor compHsv = ColorHelpers.ColorToHSV(partColors.ComplementColor);
partColors.ComplementColorLight = ColorHelpers.HSVToColor(compHsv.Hue, compHsv.Saturation, compHsv.Value + .2d);
partColors.ComplementColorDark = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .10, compHsl.Saturation);
partColors.ComplementColorDarker = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .2, compHsl.Saturation);
partColors.ComplementColorText = GetTextColor(partColors.ComplementColor);
partColors.ComplementColorLightText = GetTextColor(partColors.ComplementColorLight);
partColors.BaseButtonGradientStart = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .01 : canvasHsv.Value + .08));
partColors.BaseButtonGradientEnd = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .08 : canvasHsv.Value + .20));
if (partColors.TextColor == Color.Black)
partColors.EditControlBackColor = Color.White;
else
partColors.EditControlBackColor = Color.Black;
return partColors;
}
public static void CreateColors(MetroColorTable metroTable, Office2007ColorTable officeMetroColorTable, Color canvasColor, Color baseColor)
{
MetroPartColors partColors = CreateMetroPartColors(canvasColor, baseColor);
metroTable.CanvasColor = partColors.CanvasColor;
metroTable.CanvasColorShadeLight = partColors.CanvasColorLightShade;
metroTable.CanvasColorShadeLighter = partColors.CanvasColorLighterShade;
metroTable.ForeColor = partColors.TextColor;
metroTable.BaseColor = baseColor;
metroTable.EditControlBackColor = partColors.EditControlBackColor;
metroTable.MetroPartColors = partColors;
metroTable.MetroAppForm.BorderThickness = new Thickness(0, 0, 1, 1);
metroTable.MetroAppForm.BorderColors = new BorderColors(partColors.BaseColor);
metroTable.MetroAppForm.BorderColorsInactive = new BorderColors(partColors.BaseColorLight);
metroTable.MetroForm.BorderThickness = new Thickness(3, 3, 3, 3);
metroTable.MetroForm.BorderColors = new BorderColors[3] { new BorderColors(partColors.BaseColorDark), new BorderColors(partColors.BaseColor), new BorderColors(partColors.BaseColor) };
metroTable.MetroForm.BorderColorsInactive = new BorderColors[4] { new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight) };
metroTable.MetroTab.ActiveCaptionText = partColors.TextInactiveColor;
metroTable.MetroTab.InactiveCaptionText = partColors.TextDisabledColor;
metroTable.MetroTab.MetroTabItem.Default = GetMetroTabItemStateTable(partColors.TextInactiveColor);
metroTable.MetroTab.MetroTabItem.Selected = GetMetroTabItemStateTable(partColors.BaseColor);
metroTable.MetroTab.MetroTabItem.Disabled = GetMetroTabItemStateTable(partColors.TextDisabledColor);
metroTable.MetroTab.MetroTabItem.MouseOver = GetMetroTabItemStateTable(partColors.TextInactiveColor, partColors.BaseColor);
metroTable.MetroTab.MetroTabItem.Pressed = null;
metroTable.MetroTab.TabPanelBackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColor);
// Toolbar
metroTable.MetroToolbar.BackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColor);
// Status Bar
metroTable.MetroStatusBar.BackgroundStyle = new ElementStyle(partColors.TextColor, partColors.BaseColor);
metroTable.MetroStatusBar.TopBorders = new Color[0];
metroTable.MetroStatusBar.BottomBorders = new Color[0];
metroTable.MetroStatusBar.ResizeMarkerLightColor = Color.FromArgb(196, Color.White);
metroTable.MetroStatusBar.ResizeMarkerColor = partColors.BaseColorDarker;
MetroOfficeColorTableInitializer.InitializeColorTable(officeMetroColorTable, ColorFactory.Empty, partColors);
}
private static double GetColorMin(double minValue, double value)
{
if (value < 0)
return minValue;
return value;
}
private static Color GetTextColor(Color color)
{
ColorFunctions.HLSColor hslColor = ColorFunctions.RGBToHSL(color);
return hslColor.Lightness < .65 ? Color.White : Color.Black;
//HSVColor hsvColor = ColorHelpers.ColorToHSV(backColor);
//return hsvColor.Value < .65 ? Color.White : Color.Black;
}
private static double GetComplementHue(double hue)
{
if (hue <= .37777d)
{
return Math.Min(1, hue + (137 * DEGREE + (86 * DEGREE * (hue / .37777d))));
}
else
{
return Math.Max(0, hue - (137 * DEGREE + (86 * DEGREE * (hue / .6222222d))));// ((137 + 86 * DEGREE * (hue / .6222222) * DEGREE)));
}
}
private static MetroTabItemStateColorTable GetMetroTabItemStateTable(Color textColor)
{
return GetMetroTabItemStateTable(textColor, Color.Empty);
}
private static MetroTabItemStateColorTable GetMetroTabItemStateTable(Color textColor, Color bottomBorderColor)
{
ElementStyle style = new ElementStyle(textColor);
style.TextAlignment = eStyleTextAlignment.Center;
style.TextLineAlignment = eStyleTextAlignment.Center;
style.HideMnemonic = true;
if (!bottomBorderColor.IsEmpty)
{
style.BorderBottom = eStyleBorderType.Solid;
style.BorderBottomWidth = 2;
style.BorderBottomColor = bottomBorderColor;
}
return new MetroTabItemStateColorTable(style);
}
}
/// <summary>
/// Defines base set of Metro UI color scheme.
/// </summary>
public class MetroPartColors
{
/// <summary>
/// Gets or sets the base canvas color, like form background.
/// </summary>
public Color CanvasColor;
/// <summary>
/// Gets or sets the chrome base color, used for window border, selection marking etc.
/// </summary>
public Color BaseColor;
/// <summary>
/// Gets or sets the text color for text displayed over the BaseColor.
/// </summary>
public Color BaseTextColor;
/// <summary>
/// Gets or sets the text color displayed over the canvas color.
/// </summary>
public Color TextColor;
/// <summary>
/// Gets or sets the lighter text color used for example for inactive non selected tab text etc.
/// </summary>
public Color TextInactiveColor;
/// <summary>
/// Gets or sets the text color used for disabled text.
/// </summary>
public Color TextDisabledColor;
/// <summary>
/// Gets or sets the text light color.
/// </summary>
public Color TextLightColor;
/// <summary>
/// Gets or sets the color that lighter than canvas color unless canvas is white in which case this will be white as well.
/// </summary>
public Color CanvasColorLight;
/// <summary>
/// Gets or sets the color that is in dark shade off of the canvas color.
/// </summary>
public Color CanvasColorDarkShade;
/// <summary>
/// Gets or sets the color that is in darker shade off of the canvas color.
/// </summary>
public Color CanvasColorDarkerShade;
/// <summary>
/// Gets or sets the color that is in light shade off of the canvas color.
/// </summary>
public Color CanvasColorLightShade;
/// <summary>
/// Gets or sets the color that is in lighter shade off of the canvas color.
/// </summary>
public Color CanvasColorLighterShade;
/// <summary>
/// Gets or sets the light base color shade.
/// </summary>
public Color BaseColorLight;
/// <summary>
/// Gets or sets the just a tad lighter base color.
/// </summary>
public Color BaseColorLight1;
/// <summary>
/// Gets or sets the text color for light base color.
/// </summary>
public Color BaseColorLightText;
/// <summary>
/// Gets or sets the lighter base color shade.
/// </summary>
public Color BaseColorLighter;
/// <summary>
/// Gets or sets the lightest base color shade.
/// </summary>
public Color BaseColorLightest;
/// <summary>
/// Gets or sets the dark base color shade.
/// </summary>
public Color BaseColorDark;
/// <summary>
/// Gets or sets the darker base color shade.
/// </summary>
public Color BaseColorDarker;
/// <summary>
/// Gets or sets the base color analogous color 1
/// </summary>
public Color ComplementColor;
/// <summary>
/// Gets or sets the Analogous color light variant.
/// </summary>
public Color ComplementColorLight;
/// <summary>
/// Gets or sets the text color for Analogous color light variant.
/// </summary>
public Color ComplementColorLightText;
/// <summary>
/// Gets or sets the Analogous color dark variant.
/// </summary>
public Color ComplementColorDark;
/// <summary>
/// Gets or sets the Analogous color darker variant.
/// </summary>
public Color ComplementColorDarker;
/// <summary>
/// Gets or sets the Analogous color text color.
/// </summary>
public Color ComplementColorText;
/// <summary>
/// Gets or sets the off base color button gradient start.
/// </summary>
public Color BaseButtonGradientStart;
/// <summary>
/// Gets or sets the off base color button gradient start.
/// </summary>
public Color BaseButtonGradientEnd;
/// <summary>
/// Gets or sets background color of edit controls.
/// </summary>
public Color EditControlBackColor;
internal bool IsSolidCanvas
{
get
{
return CanvasColor == Color.White || CanvasColor == Color.Black;
}
}
}
}

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
/// <summary>
/// Represents the MetroAppForm color table.
/// </summary>
public class MetroAppFormColorTable
{
/// <summary>
/// Gets or sets the border thickness.
/// </summary>
public Thickness BorderThickness = new Thickness(0, 0, 1, 1);
/// <summary>
/// Gets or sets the border thickness for form when it is running on Windows without Glass effect enabled.
/// </summary>
public Thickness BorderPlainThickness = new Thickness(1);
/// <summary>
/// Gets or sets the border colors.
/// </summary>
public BorderColors BorderColors = new BorderColors(ColorScheme.GetColor("FF6B10"));
/// <summary>
/// Gets or sets the inactive form border colors.
/// </summary>
public BorderColors BorderColorsInactive = new BorderColors();
}
/// <summary>
/// Represents the MetroForm color table.
/// </summary>
public class MetroFormColorTable
{
/// <summary>
/// Gets or sets the border thickness.
/// </summary>
public Thickness BorderThickness = new Thickness(0, 0, 1, 1);
/// <summary>
/// Gets or sets the border thickness for form when it is running on Windows without Glass effect enabled.
/// </summary>
public Thickness BorderPlainThickness = new Thickness(1);
/// <summary>
/// Gets or sets the border colors.
/// </summary>
public BorderColors[] BorderColors = new BorderColors[1] { new BorderColors(ColorScheme.GetColor("FF6B10")) };
/// <summary>
/// Gets or sets the inactive form border colors.
/// </summary>
public BorderColors[] BorderColorsInactive = null;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
public class MetroStatusBarColorTable
{
/// <summary>
/// Gets or sets the color array for the top-border lines.
/// </summary>
public Color[] TopBorders;
/// <summary>
/// Gets or sets the color array for the bottom-border lines.
/// </summary>
public Color[] BottomBorders;
/// <summary>
/// Gets or sets status bar background style.
/// </summary>
public ElementStyle BackgroundStyle = null;
/// <summary>
/// Gets or sets the resize handle marker light color.
/// </summary>
public Color ResizeMarkerLightColor;
/// <summary>
/// Gets or sets the resize handle marker color.
/// </summary>
public Color ResizeMarkerColor;
}
}

View File

@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
public class MetroTabColorTable
{
/// <summary>
/// Gets or sets the color table for MetroTabStrip.
/// </summary>
public MetroTabStripColorTable TabStrip = new MetroTabStripColorTable();
/// <summary>
/// Gets or sets tab panel background style.
/// </summary>
public ElementStyle TabPanelBackgroundStyle = new ElementStyle();
/// <summary>
/// Gets or sets the color table for MetroTabItem.
/// </summary>
public MetroTabItemColorTable MetroTabItem = new MetroTabItemColorTable();
/// <summary>
/// Gets or sets the color of the active form caption text displayed on metro strip.
/// </summary>
public Color ActiveCaptionText;
/// <summary>
/// Gets or sets the color of the inactive form caption text displayed on metro strip.
/// </summary>
public Color InactiveCaptionText;
/// <summary>
/// Gets or sets the text formatting for caption text.
/// </summary>
public eTextFormat CaptionTextFormat = eTextFormat.VerticalCenter | eTextFormat.Left | eTextFormat.EndEllipsis | eTextFormat.NoPrefix;
}
}

View File

@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
/// <summary>
/// Represents MetroTabItem color table.
/// </summary>
public class MetroTabItemColorTable
{
/// <summary>
/// Gets or sets the default state tab colors.
/// </summary>
public MetroTabItemStateColorTable Default;
/// <summary>
/// Gets or sets the mouse over state tab colors.
/// </summary>
public MetroTabItemStateColorTable MouseOver;
/// <summary>
/// Gets or sets the selected state tab colors.
/// </summary>
public MetroTabItemStateColorTable Selected;
/// <summary>
/// Gets or sets the pressed state tab colors.
/// </summary>
public MetroTabItemStateColorTable Pressed;
/// <summary>
/// Gets or sets the disabled state tab colors.
/// </summary>
public MetroTabItemStateColorTable Disabled;
}
public class MetroTabItemStateColorTable
{
/// <summary>
/// Initializes a new instance of the MetroTabItemStateColorTable class.
/// </summary>
/// <param name="textColor"></param>
/// <param name="background"></param>
public MetroTabItemStateColorTable(ElementStyle background)
{
Background = background;
}
/// <summary>
/// Gets or sets the background style.
/// </summary>
public ElementStyle Background = null;
}
}

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
public class MetroTabStripColorTable
{
/// <summary>
/// Gets or sets tabstrip background style.
/// </summary>
public ElementStyle BackgroundStyle = new ElementStyle();
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
public class MetroTileColorTable
{
/// <summary>
/// Gets or sets the tile check-mark background overlay color.
/// </summary>
public Color CheckBackground = Color.FromArgb(76, Color.Black);
/// <summary>
/// Gets or sets the tile check-mark foreground overlay color.
/// </summary>
public Color CheckForeground = Color.FromArgb(204, Color.White);
}
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
public class MetroToolbarColorTable
{
/// <summary>
/// Gets or sets toolbar background style.
/// </summary>
public ElementStyle BackgroundStyle = null;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,174 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using DevComponents.DotNetBar.Rendering;
using DevComponents.DotNetBar.Metro.Helpers;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
internal class Office2016MetroInitializer
{
public static MetroColorTable CreateColorTable(MetroColorGeneratorParameters colorParams)
{
return CreateColorTable(colorParams.CanvasColor, colorParams.BaseColor);
}
public static MetroColorTable CreateColorTable(Color canvasColor, Color baseColor)
{
MetroColorTable metroTable = new MetroColorTable();
Office2007ColorTable officeMetroColorTable = new Office2007ColorTable();
CreateColors(metroTable, officeMetroColorTable, canvasColor, baseColor);
if (StyleManager.IsMetro(StyleManager.Style))
((Office2007Renderer)GlobalManager.Renderer).ColorTable = officeMetroColorTable;
return metroTable;
}
private const double DEGREE = 1d / 360;
public static MetroPartColors CreateMetroPartColors(Color canvasColor, Color baseColor)
{
ColorFunctions.HLSColor canvasHsl = ColorFunctions.RGBToHSL(canvasColor);
ColorFunctions.HLSColor baseHsl = ColorFunctions.RGBToHSL(baseColor);
HSVColor baseHsv = ColorHelpers.ColorToHSV(baseColor);
HSVColor canvasHsv = ColorHelpers.ColorToHSV(canvasColor);
// Create metro colors
MetroPartColors partColors = new MetroPartColors();
partColors.CanvasColor = canvasColor;
partColors.BaseColor = baseColor;
partColors.TextColor = (canvasHsl.Lightness < .4) ? Color.White : Color.Black;
//HSVColor textHsv = ColorHelpers.ColorToHSV(partColors.TextColor);
partColors.TextInactiveColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .53 : canvasHsv.Value - .47));
partColors.TextDisabledColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .67));
partColors.TextLightColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .6 : canvasHsv.Value + .4));
partColors.CanvasColorDarkShade = partColors.TextColor == Color.Black ? ColorScheme.GetColor(0xC8C8C8) : ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .33));
partColors.CanvasColorDarkerShade = ColorScheme.GetColor(0xB4B4B4);
partColors.CanvasColorLightShade = ColorScheme.GetColor(0xCCCCCC);
partColors.CanvasColorLighterShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .08 : canvasHsv.Value - .08));
partColors.CanvasColorLight = (partColors.TextColor == Color.Black) ? ColorScheme.GetColor(0xF1F1F1) : ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, canvasHsv.Value + .06);
partColors.BaseTextColor = GetTextColor(baseColor);
partColors.BaseColorLight = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .41), baseHsv.Value + .3);
partColors.BaseColorLight1 = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .12), baseHsv.Value + .12);
partColors.BaseColorLightText = GetTextColor(partColors.BaseColorLight);
partColors.BaseColorLightest = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .6), baseHsv.Value + .5);
partColors.BaseColorLighter = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .46), baseHsv.Value + .39);
partColors.BaseColorDark = ColorHelpers.HSVToColor(baseHsv.Hue, baseHsv.Saturation + .1, baseHsv.Value - .06);
partColors.BaseColorDarker = ColorFunctions.HLSToRGB(baseHsl.Hue, baseHsl.Lightness - .2, baseHsl.Saturation);
partColors.ComplementColor = ColorHelpers.HSVToColor(GetComplementHue(baseHsv.Hue), baseHsv.Saturation, baseHsv.Value + (baseHsv.Value > .5d ? -.35 : 0d));
ColorFunctions.HLSColor compHsl = ColorFunctions.RGBToHSL(partColors.ComplementColor);
HSVColor compHsv = ColorHelpers.ColorToHSV(partColors.ComplementColor);
partColors.ComplementColorLight = ColorHelpers.HSVToColor(compHsv.Hue, compHsv.Saturation, compHsv.Value + .2d);
partColors.ComplementColorDark = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .10, compHsl.Saturation);
partColors.ComplementColorDarker = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .2, compHsl.Saturation);
partColors.ComplementColorText = GetTextColor(partColors.ComplementColor);
partColors.ComplementColorLightText = GetTextColor(partColors.ComplementColorLight);
partColors.BaseButtonGradientStart = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .01 : canvasHsv.Value + .08));
partColors.BaseButtonGradientEnd = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .08 : canvasHsv.Value + .20));
if (partColors.TextColor == Color.Black)
partColors.EditControlBackColor = Color.White;
else
partColors.EditControlBackColor = Color.Black;
return partColors;
}
public static void CreateColors(MetroColorTable metroTable, Office2007ColorTable officeMetroColorTable, Color canvasColor, Color baseColor)
{
MetroPartColors partColors = CreateMetroPartColors(canvasColor, baseColor);
metroTable.CanvasColor = partColors.CanvasColor;
metroTable.CanvasColorShadeLight = partColors.CanvasColorLightShade;
metroTable.CanvasColorShadeLighter = partColors.CanvasColorLighterShade;
metroTable.ForeColor = partColors.TextColor;
metroTable.BaseColor = baseColor;
metroTable.EditControlBackColor = partColors.EditControlBackColor;
metroTable.MetroPartColors = partColors;
metroTable.MetroAppForm.BorderThickness = new Thickness(1, 1, 1, 1);
metroTable.MetroAppForm.BorderColors = new BorderColors(partColors.BaseColor);
metroTable.MetroAppForm.BorderColorsInactive = new BorderColors(partColors.BaseColorLight);
metroTable.MetroForm.BorderThickness = new Thickness(1, 1, 1, 1);
metroTable.MetroForm.BorderColors = new BorderColors[1] { new BorderColors(partColors.BaseColor) };
metroTable.MetroForm.BorderColorsInactive = new BorderColors[4] { new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight) };
metroTable.MetroTab.ActiveCaptionText = partColors.BaseTextColor;
metroTable.MetroTab.InactiveCaptionText = partColors.BaseTextColor;
metroTable.MetroTab.MetroTabItem.Default = GetMetroTabItemStateTable(partColors.BaseTextColor, Color.Empty);
metroTable.MetroTab.MetroTabItem.Selected = GetMetroTabItemStateTable(partColors.BaseColor, partColors.CanvasColorLight);
metroTable.MetroTab.MetroTabItem.Disabled = GetMetroTabItemStateTable(partColors.TextDisabledColor, Color.Empty);
metroTable.MetroTab.MetroTabItem.MouseOver = null;
metroTable.MetroTab.MetroTabItem.Pressed = null;
metroTable.MetroTab.TabStrip.BackgroundStyle = new ElementStyle(partColors.BaseTextColor, partColors.BaseColor);
metroTable.MetroTab.CaptionTextFormat = eTextFormat.VerticalCenter | eTextFormat.HorizontalCenter | eTextFormat.EndEllipsis | eTextFormat.NoPrefix;
metroTable.MetroTab.TabPanelBackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColorLight);
// Toolbar
metroTable.MetroToolbar.BackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColorLight);
// Status Bar
metroTable.MetroStatusBar.BackgroundStyle = new ElementStyle(partColors.BaseTextColor, partColors.BaseColor);
metroTable.MetroStatusBar.TopBorders = new Color[0];
metroTable.MetroStatusBar.BottomBorders = new Color[0];
metroTable.MetroStatusBar.ResizeMarkerLightColor = Color.FromArgb(196, Color.White);
metroTable.MetroStatusBar.ResizeMarkerColor = partColors.BaseColorDarker;
Office2016ColorTableInitializer.InitializeColorTable(officeMetroColorTable, ColorFactory.Empty, partColors);
}
private static double GetColorMin(double minValue, double value)
{
if (value < 0)
return minValue;
return value;
}
private static Color GetTextColor(Color color)
{
ColorFunctions.HLSColor hslColor = ColorFunctions.RGBToHSL(color);
return hslColor.Lightness < .65 ? Color.White : Color.Black;
//HSVColor hsvColor = ColorHelpers.ColorToHSV(backColor);
//return hsvColor.Value < .65 ? Color.White : Color.Black;
}
private static double GetComplementHue(double hue)
{
if (hue <= .37777d)
{
return Math.Min(1, hue + (137 * DEGREE + (86 * DEGREE * (hue / .37777d))));
}
else
{
return Math.Max(0, hue - (137 * DEGREE + (86 * DEGREE * (hue / .6222222d))));// ((137 + 86 * DEGREE * (hue / .6222222) * DEGREE)));
}
}
private static MetroTabItemStateColorTable GetMetroTabItemStateTable(Color textColor, Color backColor)
{
ElementStyle style = new ElementStyle(textColor);
style.TextAlignment = eStyleTextAlignment.Center;
style.TextLineAlignment = eStyleTextAlignment.Center;
style.HideMnemonic = true;
if (!backColor.IsEmpty)
{
style.CornerTypeTopRight = eCornerType.Rounded;
style.CornerTypeTopLeft = eCornerType.Rounded;
style.CornerDiameter = 2;
style.BorderLeft = eStyleBorderType.Solid;
style.BorderTop = eStyleBorderType.Solid;
style.BorderRight = eStyleBorderType.Solid;
style.BorderLeftWidth = 1;
style.BorderTopWidth = 1;
style.BorderRightWidth = 1;
style.BorderColor = backColor;
style.BackColor = backColor;
}
style.TextColor = textColor;
return new MetroTabItemStateColorTable(style);
}
}
}

View File

@@ -0,0 +1,177 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using DevComponents.DotNetBar.Rendering;
using DevComponents.DotNetBar.Metro.Helpers;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
/// <summary>
/// Initializes Office Mobile 2014 color scheme Metro color table based on colors specified.
/// </summary>
internal class OfficeMobile2014MetroInitializer
{
public static MetroColorTable CreateColorTable(MetroColorGeneratorParameters colorParams)
{
return CreateColorTable(colorParams.CanvasColor, colorParams.BaseColor);
}
public static MetroColorTable CreateColorTable(Color canvasColor, Color baseColor)
{
MetroColorTable metroTable = new MetroColorTable();
Office2007ColorTable officeMetroColorTable = new Office2007ColorTable();
CreateColors(metroTable, officeMetroColorTable, canvasColor, baseColor);
if (StyleManager.IsMetro(StyleManager.Style))
((Office2007Renderer)GlobalManager.Renderer).ColorTable = officeMetroColorTable;
return metroTable;
}
private const double DEGREE = 1d / 360;
public static MetroPartColors CreateMetroPartColors(Color canvasColor, Color baseColor)
{
ColorFunctions.HLSColor canvasHsl = ColorFunctions.RGBToHSL(canvasColor);
ColorFunctions.HLSColor baseHsl = ColorFunctions.RGBToHSL(baseColor);
HSVColor baseHsv = ColorHelpers.ColorToHSV(baseColor);
HSVColor canvasHsv = ColorHelpers.ColorToHSV(canvasColor);
// Create metro colors
MetroPartColors partColors = new MetroPartColors();
partColors.CanvasColor = canvasColor;
partColors.BaseColor = baseColor;
partColors.TextColor = (canvasHsl.Lightness < .4) ? Color.White : Color.Black;
//HSVColor textHsv = ColorHelpers.ColorToHSV(partColors.TextColor);
partColors.TextInactiveColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .53 : canvasHsv.Value - .47));
partColors.TextDisabledColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .67));
partColors.TextLightColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .6 : canvasHsv.Value + .4));
partColors.CanvasColorDarkShade = partColors.TextColor == Color.Black ? ColorScheme.GetColor(0xC8C8C8) : ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .33));
partColors.CanvasColorDarkerShade = ColorScheme.GetColor(0xB4B4B4);
partColors.CanvasColorLightShade = ColorScheme.GetColor(0xCCCCCC);
partColors.CanvasColorLighterShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .05 : canvasHsv.Value - .05));
partColors.CanvasColorLight = (partColors.TextColor == Color.Black) ? ColorScheme.GetColor(0xFAFAFA) : ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, canvasHsv.Value + .06);
partColors.BaseTextColor = GetTextColor(baseColor);
partColors.BaseColorLight = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .41), baseHsv.Value + .3);
partColors.BaseColorLight1 = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .12), baseHsv.Value + .12);
partColors.BaseColorLightText = GetTextColor(partColors.BaseColorLight);
partColors.BaseColorLightest = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .6), baseHsv.Value + .5);
partColors.BaseColorLighter = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .46), baseHsv.Value + .39);
partColors.BaseColorDark = ColorHelpers.HSVToColor(baseHsv.Hue, baseHsv.Saturation + .1, baseHsv.Value - .06);
partColors.BaseColorDarker = ColorFunctions.HLSToRGB(baseHsl.Hue, baseHsl.Lightness - .2, baseHsl.Saturation);
partColors.ComplementColor = ColorHelpers.HSVToColor(GetComplementHue(baseHsv.Hue), baseHsv.Saturation, baseHsv.Value + (baseHsv.Value > .5d ? -.35 : 0d));
ColorFunctions.HLSColor compHsl = ColorFunctions.RGBToHSL(partColors.ComplementColor);
HSVColor compHsv = ColorHelpers.ColorToHSV(partColors.ComplementColor);
partColors.ComplementColorLight = ColorHelpers.HSVToColor(compHsv.Hue, compHsv.Saturation, compHsv.Value + .2d);
partColors.ComplementColorDark = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .10, compHsl.Saturation);
partColors.ComplementColorDarker = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .2, compHsl.Saturation);
partColors.ComplementColorText = GetTextColor(partColors.ComplementColor);
partColors.ComplementColorLightText = GetTextColor(partColors.ComplementColorLight);
partColors.BaseButtonGradientStart = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .01 : canvasHsv.Value + .08));
partColors.BaseButtonGradientEnd = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .08 : canvasHsv.Value + .20));
if (partColors.TextColor == Color.Black)
partColors.EditControlBackColor = Color.White;
else
partColors.EditControlBackColor = Color.Black;
return partColors;
}
public static void CreateColors(MetroColorTable metroTable, Office2007ColorTable officeMetroColorTable, Color canvasColor, Color baseColor)
{
MetroPartColors partColors = CreateMetroPartColors(canvasColor, baseColor);
metroTable.CanvasColor = partColors.CanvasColor;
metroTable.CanvasColorShadeLight = partColors.CanvasColorLightShade;
metroTable.CanvasColorShadeLighter = partColors.CanvasColorLighterShade;
metroTable.ForeColor = partColors.TextColor;
metroTable.BaseColor = baseColor;
metroTable.EditControlBackColor = partColors.EditControlBackColor;
metroTable.MetroPartColors = partColors;
metroTable.MetroAppForm.BorderThickness = new Thickness(1, 1, 1, 1);
metroTable.MetroAppForm.BorderColors = new BorderColors(partColors.BaseColor);
metroTable.MetroAppForm.BorderColorsInactive = new BorderColors(partColors.BaseColorLight);
metroTable.MetroForm.BorderThickness = new Thickness(1, 1, 1, 1);
metroTable.MetroForm.BorderColors = new BorderColors[1] { new BorderColors(partColors.BaseColor) };
metroTable.MetroForm.BorderColorsInactive = new BorderColors[4] { new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight) };
metroTable.MetroTab.ActiveCaptionText = partColors.BaseTextColor;
metroTable.MetroTab.InactiveCaptionText = partColors.BaseTextColor;
metroTable.MetroTab.MetroTabItem.Default = GetMetroTabItemStateTable(partColors.BaseTextColor, Color.Empty);
metroTable.MetroTab.MetroTabItem.Selected = GetMetroTabItemStateTable(partColors.BaseColor, partColors.CanvasColorLight);
metroTable.MetroTab.MetroTabItem.Disabled = GetMetroTabItemStateTable(partColors.TextDisabledColor, Color.Empty);
metroTable.MetroTab.MetroTabItem.MouseOver = null;
metroTable.MetroTab.MetroTabItem.Pressed = null;
metroTable.MetroTab.TabStrip.BackgroundStyle = new ElementStyle(partColors.BaseTextColor, partColors.BaseColor);
metroTable.MetroTab.CaptionTextFormat = eTextFormat.VerticalCenter | eTextFormat.HorizontalCenter | eTextFormat.EndEllipsis | eTextFormat.NoPrefix;
metroTable.MetroTab.TabPanelBackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColorLight);
// Toolbar
metroTable.MetroToolbar.BackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColorLight);
// Status Bar
metroTable.MetroStatusBar.BackgroundStyle = new ElementStyle(partColors.BaseTextColor, partColors.BaseColor);
metroTable.MetroStatusBar.TopBorders = new Color[0];
metroTable.MetroStatusBar.BottomBorders = new Color[0];
metroTable.MetroStatusBar.ResizeMarkerLightColor = Color.FromArgb(196, Color.White);
metroTable.MetroStatusBar.ResizeMarkerColor = partColors.BaseColorDarker;
OfficeMobile2014ColorTableInitializer.InitializeColorTable(officeMetroColorTable, ColorFactory.Empty, partColors);
}
private static double GetColorMin(double minValue, double value)
{
if (value < 0)
return minValue;
return value;
}
private static Color GetTextColor(Color color)
{
ColorFunctions.HLSColor hslColor = ColorFunctions.RGBToHSL(color);
return hslColor.Lightness < .65 ? Color.White : Color.Black;
//HSVColor hsvColor = ColorHelpers.ColorToHSV(backColor);
//return hsvColor.Value < .65 ? Color.White : Color.Black;
}
private static double GetComplementHue(double hue)
{
if (hue <= .37777d)
{
return Math.Min(1, hue + (137 * DEGREE + (86 * DEGREE * (hue / .37777d))));
}
else
{
return Math.Max(0, hue - (137 * DEGREE + (86 * DEGREE * (hue / .6222222d))));// ((137 + 86 * DEGREE * (hue / .6222222) * DEGREE)));
}
}
private static MetroTabItemStateColorTable GetMetroTabItemStateTable(Color textColor, Color backColor)
{
ElementStyle style = new ElementStyle(textColor);
style.TextAlignment = eStyleTextAlignment.Center;
style.TextLineAlignment = eStyleTextAlignment.Center;
style.HideMnemonic = true;
if (!backColor.IsEmpty)
{
style.CornerTypeTopRight = eCornerType.Rounded;
style.CornerTypeTopLeft = eCornerType.Rounded;
style.CornerDiameter = 2;
style.BorderLeft = eStyleBorderType.Solid;
style.BorderTop = eStyleBorderType.Solid;
style.BorderRight = eStyleBorderType.Solid;
style.BorderLeftWidth = 1;
style.BorderTopWidth = 1;
style.BorderRightWidth = 1;
style.BorderColor = backColor;
style.BackColor = backColor;
}
style.TextColor = textColor;
return new MetroTabItemStateColorTable(style);
}
}
}

View File

@@ -0,0 +1,169 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using DevComponents.DotNetBar.Rendering;
using DevComponents.DotNetBar.Metro.Helpers;
namespace DevComponents.DotNetBar.Metro.ColorTables
{
/// <summary>
/// Initializes the Visual Studio 2012 color scheme Metro color table based on colors specified.
/// </summary>
internal class VisualStudio2012ColorTableInitializer
{
public static MetroColorTable CreateColorTable(MetroColorGeneratorParameters colorParams)
{
return CreateColorTable(colorParams.CanvasColor, colorParams.BaseColor);
}
public static MetroColorTable CreateColorTable(Color canvasColor, Color baseColor)
{
MetroColorTable metroTable = new MetroColorTable();
Office2007ColorTable officeMetroColorTable = new Office2007ColorTable();
CreateColors(metroTable, officeMetroColorTable, canvasColor, baseColor);
if (StyleManager.IsMetro(StyleManager.Style))
((Office2007Renderer)GlobalManager.Renderer).ColorTable = officeMetroColorTable;
return metroTable;
}
private const double DEGREE = 1d / 360;
public static MetroPartColors CreateMetroPartColors(Color canvasColor, Color baseColor)
{
ColorFunctions.HLSColor canvasHsl = ColorFunctions.RGBToHSL(canvasColor);
ColorFunctions.HLSColor baseHsl = ColorFunctions.RGBToHSL(baseColor);
HSVColor baseHsv = ColorHelpers.ColorToHSV(baseColor);
HSVColor canvasHsv = ColorHelpers.ColorToHSV(canvasColor);
// Create metro colors
MetroPartColors partColors = new MetroPartColors();
partColors.CanvasColor = canvasColor;
partColors.BaseColor = baseColor;
partColors.TextColor = (canvasHsl.Lightness < .4) ? Color.White : Color.Black;
//HSVColor textHsv = ColorHelpers.ColorToHSV(partColors.TextColor);
partColors.TextInactiveColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .53 : canvasHsv.Value - .47));
partColors.TextDisabledColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .67));
partColors.TextLightColor = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .6 : canvasHsv.Value + .4));
partColors.CanvasColorDarkShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.Black ? canvasHsv.Value - .33 : canvasHsv.Value + .33));
partColors.CanvasColorLightShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .17 : canvasHsv.Value - .17));
partColors.CanvasColorLighterShade = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (partColors.TextColor == Color.White ? canvasHsv.Value + .05 : canvasHsv.Value - .05));
partColors.CanvasColorLight = (partColors.TextColor == Color.Black) ? ColorHelpers.HSVToColor(0, 0, .999) : ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, canvasHsv.Value + .06);
partColors.BaseTextColor = GetTextColor(baseColor);
partColors.BaseColorLight = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .41), baseHsv.Value + .3);
partColors.BaseColorLight1 = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .12), baseHsv.Value + .12);
partColors.BaseColorLightText = GetTextColor(partColors.BaseColorLight);
partColors.BaseColorLightest = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.05, baseHsv.Saturation - .6), baseHsv.Value + .5);
partColors.BaseColorLighter = ColorHelpers.HSVToColor(baseHsv.Hue, GetColorMin(0.08, baseHsv.Saturation - .46), baseHsv.Value + .39);
partColors.BaseColorDark = ColorHelpers.HSVToColor(baseHsv.Hue, baseHsv.Saturation + .1, baseHsv.Value - .06);
partColors.BaseColorDarker = ColorFunctions.HLSToRGB(baseHsl.Hue, baseHsl.Lightness - .2, baseHsl.Saturation);
partColors.ComplementColor = ColorHelpers.HSVToColor(GetComplementHue(baseHsv.Hue), baseHsv.Saturation, baseHsv.Value + (baseHsv.Value > .5d ? -.35 : 0d));
ColorFunctions.HLSColor compHsl = ColorFunctions.RGBToHSL(partColors.ComplementColor);
HSVColor compHsv = ColorHelpers.ColorToHSV(partColors.ComplementColor);
partColors.ComplementColorLight = ColorHelpers.HSVToColor(compHsv.Hue, compHsv.Saturation, compHsv.Value + .2d);
partColors.ComplementColorDark = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .10, compHsl.Saturation);
partColors.ComplementColorDarker = ColorFunctions.HLSToRGB(compHsl.Hue, compHsl.Lightness - .2, compHsl.Saturation);
partColors.ComplementColorText = GetTextColor(partColors.ComplementColor);
partColors.ComplementColorLightText = GetTextColor(partColors.ComplementColorLight);
partColors.BaseButtonGradientStart = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .01 : canvasHsv.Value + .08));
partColors.BaseButtonGradientEnd = ColorHelpers.HSVToColor(canvasHsv.Hue, canvasHsv.Saturation, (canvasHsv.Value > 0 ? canvasHsv.Value - .08 : canvasHsv.Value + .20));
if (partColors.TextColor == Color.Black)
partColors.EditControlBackColor = Color.White;
else
partColors.EditControlBackColor = Color.Black;
return partColors;
}
public static void CreateColors(MetroColorTable metroTable, Office2007ColorTable officeMetroColorTable, Color canvasColor, Color baseColor)
{
MetroPartColors partColors = CreateMetroPartColors(canvasColor, baseColor);
metroTable.CanvasColor = partColors.CanvasColor;
metroTable.CanvasColorShadeLight = partColors.CanvasColorLightShade;
metroTable.CanvasColorShadeLighter = partColors.CanvasColorLighterShade;
metroTable.ForeColor = partColors.TextColor;
metroTable.BaseColor = baseColor;
metroTable.EditControlBackColor = partColors.EditControlBackColor;
metroTable.MetroPartColors = partColors;
metroTable.MetroAppForm.BorderThickness = new Thickness(0, 0, 1, 1);
metroTable.MetroAppForm.BorderColors = new BorderColors(partColors.BaseColor);
metroTable.MetroAppForm.BorderColorsInactive = new BorderColors(partColors.BaseColorLight);
metroTable.MetroForm.BorderThickness = new Thickness(1, 1, 1, 1);
metroTable.MetroForm.BorderColors = new BorderColors[1] { new BorderColors(partColors.BaseColor) };
metroTable.MetroForm.BorderColorsInactive = new BorderColors[4] { new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight), new BorderColors(partColors.BaseColorLight) };
metroTable.MetroTab.ActiveCaptionText = partColors.TextInactiveColor;
metroTable.MetroTab.InactiveCaptionText = partColors.TextDisabledColor;
metroTable.MetroTab.MetroTabItem.Default = GetMetroTabItemStateTable(partColors.TextInactiveColor);
metroTable.MetroTab.MetroTabItem.Selected = GetMetroTabItemStateTable(partColors.BaseColor);
metroTable.MetroTab.MetroTabItem.Disabled = GetMetroTabItemStateTable(partColors.TextDisabledColor);
metroTable.MetroTab.MetroTabItem.MouseOver = GetMetroTabItemStateTable(partColors.TextInactiveColor, partColors.BaseColor);
metroTable.MetroTab.MetroTabItem.Pressed = null;
metroTable.MetroTab.TabPanelBackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColor);
// Toolbar
metroTable.MetroToolbar.BackgroundStyle = new ElementStyle(partColors.TextColor, partColors.CanvasColor);
// Status Bar
metroTable.MetroStatusBar.BackgroundStyle = new ElementStyle(partColors.TextColor, partColors.BaseColor);
metroTable.MetroStatusBar.TopBorders = new Color[0];
metroTable.MetroStatusBar.BottomBorders = new Color[0];
metroTable.MetroStatusBar.ResizeMarkerLightColor = Color.FromArgb(196, Color.White);
metroTable.MetroStatusBar.ResizeMarkerColor = partColors.BaseColorDarker;
VisualStudio2012OfficeColorTableInitializer.InitializeColorTable(officeMetroColorTable, ColorFactory.Empty, partColors);
}
private static double GetColorMin(double minValue, double value)
{
if (value < 0)
return minValue;
return value;
}
private static Color GetTextColor(Color color)
{
ColorFunctions.HLSColor hslColor = ColorFunctions.RGBToHSL(color);
return hslColor.Lightness < .65 ? Color.White : Color.Black;
//HSVColor hsvColor = ColorHelpers.ColorToHSV(backColor);
//return hsvColor.Value < .65 ? Color.White : Color.Black;
}
private static double GetComplementHue(double hue)
{
if (hue <= .37777d)
{
return Math.Min(1, hue + (137 * DEGREE + (86 * DEGREE * (hue / .37777d))));
}
else
{
return Math.Max(0, hue - (137 * DEGREE + (86 * DEGREE * (hue / .6222222d))));// ((137 + 86 * DEGREE * (hue / .6222222) * DEGREE)));
}
}
private static MetroTabItemStateColorTable GetMetroTabItemStateTable(Color textColor)
{
return GetMetroTabItemStateTable(textColor, Color.Empty);
}
private static MetroTabItemStateColorTable GetMetroTabItemStateTable(Color textColor, Color bottomBorderColor)
{
ElementStyle style = new ElementStyle(textColor);
style.TextAlignment = eStyleTextAlignment.Center;
style.TextLineAlignment = eStyleTextAlignment.Center;
style.HideMnemonic = true;
if (!bottomBorderColor.IsEmpty)
{
style.BorderBottom = eStyleBorderType.Solid;
style.BorderBottomWidth = 2;
style.BorderBottomColor = bottomBorderColor;
}
return new MetroTabItemStateColorTable(style);
}
}
}