DotNet 4.8.1 build of DotNetBar
This commit is contained in:
402
PROMS/DotNetBar Source Code/Metro/ColorTables/MetroColorTable.cs
Normal file
402
PROMS/DotNetBar Source Code/Metro/ColorTables/MetroColorTable.cs
Normal 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
|
||||
|
||||
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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();
|
||||
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user