Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / CommonUI / System / Drawing / Color.cs / 1 / Color.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Drawing {
using System.Globalization;
using System.Text;
using System.Runtime.Serialization.Formatters;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System;
using Microsoft.Win32;
using System.ComponentModel;
#if !FEATURE_PAL
using System.Drawing.Design;
#endif
using System.Runtime.InteropServices;
///
///
/// Represents an ARGB color.
///
[
Serializable(),
TypeConverter(typeof(ColorConverter)),
DebuggerDisplay("{NameAndARGBValue}"),
#if !FEATURE_PAL
Editor("System.Drawing.Design.ColorEditor, " + AssemblyRef.SystemDrawingDesign, typeof(UITypeEditor)),
#endif
]
public struct Color {
///
///
/// [To be supplied.]
///
public static readonly Color Empty = new Color();
// -------------------------------------------------------------------
// static list of "web" colors...
//
///
///
/// [To be supplied.]
///
public static Color Transparent {
get {
return new Color(KnownColor.Transparent);
}
}
///
///
/// [To be supplied.]
///
public static Color AliceBlue {
get {
return new Color(KnownColor.AliceBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color AntiqueWhite {
get {
return new Color(KnownColor.AntiqueWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color Aqua {
get {
return new Color(KnownColor.Aqua);
}
}
///
///
/// [To be supplied.]
///
public static Color Aquamarine {
get {
return new Color(KnownColor.Aquamarine);
}
}
///
///
/// [To be supplied.]
///
public static Color Azure {
get {
return new Color(KnownColor.Azure);
}
}
///
///
/// [To be supplied.]
///
public static Color Beige {
get {
return new Color(KnownColor.Beige);
}
}
///
///
/// [To be supplied.]
///
public static Color Bisque {
get {
return new Color(KnownColor.Bisque);
}
}
///
///
/// [To be supplied.]
///
public static Color Black {
get {
return new Color(KnownColor.Black);
}
}
///
///
/// [To be supplied.]
///
public static Color BlanchedAlmond {
get {
return new Color(KnownColor.BlanchedAlmond);
}
}
///
///
/// [To be supplied.]
///
public static Color Blue {
get {
return new Color(KnownColor.Blue);
}
}
///
///
/// [To be supplied.]
///
public static Color BlueViolet {
get {
return new Color(KnownColor.BlueViolet);
}
}
///
///
/// [To be supplied.]
///
public static Color Brown {
get {
return new Color(KnownColor.Brown);
}
}
///
///
/// [To be supplied.]
///
public static Color BurlyWood {
get {
return new Color(KnownColor.BurlyWood);
}
}
///
///
/// [To be supplied.]
///
public static Color CadetBlue {
get {
return new Color(KnownColor.CadetBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Chartreuse {
get {
return new Color(KnownColor.Chartreuse);
}
}
///
///
/// [To be supplied.]
///
public static Color Chocolate {
get {
return new Color(KnownColor.Chocolate);
}
}
///
///
/// [To be supplied.]
///
public static Color Coral {
get {
return new Color(KnownColor.Coral);
}
}
///
///
/// [To be supplied.]
///
public static Color CornflowerBlue {
get {
return new Color(KnownColor.CornflowerBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Cornsilk {
get {
return new Color(KnownColor.Cornsilk);
}
}
///
///
/// [To be supplied.]
///
public static Color Crimson {
get {
return new Color(KnownColor.Crimson);
}
}
///
///
/// [To be supplied.]
///
public static Color Cyan {
get {
return new Color(KnownColor.Cyan);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkBlue {
get {
return new Color(KnownColor.DarkBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkCyan {
get {
return new Color(KnownColor.DarkCyan);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkGoldenrod {
get {
return new Color(KnownColor.DarkGoldenrod);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkGray {
get {
return new Color(KnownColor.DarkGray);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkGreen {
get {
return new Color(KnownColor.DarkGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkKhaki {
get {
return new Color(KnownColor.DarkKhaki);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkMagenta {
get {
return new Color(KnownColor.DarkMagenta);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkOliveGreen {
get {
return new Color(KnownColor.DarkOliveGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkOrange {
get {
return new Color(KnownColor.DarkOrange);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkOrchid {
get {
return new Color(KnownColor.DarkOrchid);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkRed {
get {
return new Color(KnownColor.DarkRed);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSalmon {
get {
return new Color(KnownColor.DarkSalmon);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSeaGreen {
get {
return new Color(KnownColor.DarkSeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSlateBlue {
get {
return new Color(KnownColor.DarkSlateBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSlateGray {
get {
return new Color(KnownColor.DarkSlateGray);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkTurquoise {
get {
return new Color(KnownColor.DarkTurquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkViolet {
get {
return new Color(KnownColor.DarkViolet);
}
}
///
///
/// [To be supplied.]
///
public static Color DeepPink {
get {
return new Color(KnownColor.DeepPink);
}
}
///
///
/// [To be supplied.]
///
public static Color DeepSkyBlue {
get {
return new Color(KnownColor.DeepSkyBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color DimGray {
get {
return new Color(KnownColor.DimGray);
}
}
///
///
/// [To be supplied.]
///
public static Color DodgerBlue {
get {
return new Color(KnownColor.DodgerBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Firebrick {
get {
return new Color(KnownColor.Firebrick);
}
}
///
///
/// [To be supplied.]
///
public static Color FloralWhite {
get {
return new Color(KnownColor.FloralWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color ForestGreen {
get {
return new Color(KnownColor.ForestGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color Fuchsia {
get {
return new Color(KnownColor.Fuchsia);
}
}
///
///
/// [To be supplied.]
///
public static Color Gainsboro {
get {
return new Color(KnownColor.Gainsboro);
}
}
///
///
/// [To be supplied.]
///
public static Color GhostWhite {
get {
return new Color(KnownColor.GhostWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color Gold {
get {
return new Color(KnownColor.Gold);
}
}
///
///
/// [To be supplied.]
///
public static Color Goldenrod {
get {
return new Color(KnownColor.Goldenrod);
}
}
///
///
/// [To be supplied.]
///
public static Color Gray {
get {
return new Color(KnownColor.Gray);
}
}
///
///
/// [To be supplied.]
///
public static Color Green {
get {
return new Color(KnownColor.Green);
}
}
///
///
/// [To be supplied.]
///
public static Color GreenYellow {
get {
return new Color(KnownColor.GreenYellow);
}
}
///
///
/// [To be supplied.]
///
public static Color Honeydew {
get {
return new Color(KnownColor.Honeydew);
}
}
///
///
/// [To be supplied.]
///
public static Color HotPink {
get {
return new Color(KnownColor.HotPink);
}
}
///
///
/// [To be supplied.]
///
public static Color IndianRed {
get {
return new Color(KnownColor.IndianRed);
}
}
///
///
/// [To be supplied.]
///
public static Color Indigo {
get {
return new Color(KnownColor.Indigo);
}
}
///
///
/// [To be supplied.]
///
public static Color Ivory {
get {
return new Color(KnownColor.Ivory);
}
}
///
///
/// [To be supplied.]
///
public static Color Khaki {
get {
return new Color(KnownColor.Khaki);
}
}
///
///
/// [To be supplied.]
///
public static Color Lavender {
get {
return new Color(KnownColor.Lavender);
}
}
///
///
/// [To be supplied.]
///
public static Color LavenderBlush {
get {
return new Color(KnownColor.LavenderBlush);
}
}
///
///
/// [To be supplied.]
///
public static Color LawnGreen {
get {
return new Color(KnownColor.LawnGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color LemonChiffon {
get {
return new Color(KnownColor.LemonChiffon);
}
}
///
///
/// [To be supplied.]
///
public static Color LightBlue {
get {
return new Color(KnownColor.LightBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color LightCoral {
get {
return new Color(KnownColor.LightCoral);
}
}
///
///
/// [To be supplied.]
///
public static Color LightCyan {
get {
return new Color(KnownColor.LightCyan);
}
}
///
///
/// [To be supplied.]
///
public static Color LightGoldenrodYellow {
get {
return new Color(KnownColor.LightGoldenrodYellow);
}
}
///
///
/// [To be supplied.]
///
public static Color LightGreen {
get {
return new Color(KnownColor.LightGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color LightGray {
get {
return new Color(KnownColor.LightGray);
}
}
///
///
/// [To be supplied.]
///
public static Color LightPink {
get {
return new Color(KnownColor.LightPink);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSalmon {
get {
return new Color(KnownColor.LightSalmon);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSeaGreen {
get {
return new Color(KnownColor.LightSeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSkyBlue {
get {
return new Color(KnownColor.LightSkyBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSlateGray {
get {
return new Color(KnownColor.LightSlateGray);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSteelBlue {
get {
return new Color(KnownColor.LightSteelBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color LightYellow {
get {
return new Color(KnownColor.LightYellow);
}
}
///
///
/// [To be supplied.]
///
public static Color Lime {
get {
return new Color(KnownColor.Lime);
}
}
///
///
/// [To be supplied.]
///
public static Color LimeGreen {
get {
return new Color(KnownColor.LimeGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color Linen {
get {
return new Color(KnownColor.Linen);
}
}
///
///
/// [To be supplied.]
///
public static Color Magenta {
get {
return new Color(KnownColor.Magenta);
}
}
///
///
/// [To be supplied.]
///
public static Color Maroon {
get {
return new Color(KnownColor.Maroon);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumAquamarine {
get {
return new Color(KnownColor.MediumAquamarine);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumBlue {
get {
return new Color(KnownColor.MediumBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumOrchid {
get {
return new Color(KnownColor.MediumOrchid);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumPurple {
get {
return new Color(KnownColor.MediumPurple);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumSeaGreen {
get {
return new Color(KnownColor.MediumSeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumSlateBlue {
get {
return new Color(KnownColor.MediumSlateBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumSpringGreen {
get {
return new Color(KnownColor.MediumSpringGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumTurquoise {
get {
return new Color(KnownColor.MediumTurquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumVioletRed {
get {
return new Color(KnownColor.MediumVioletRed);
}
}
///
///
/// [To be supplied.]
///
public static Color MidnightBlue {
get {
return new Color(KnownColor.MidnightBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color MintCream {
get {
return new Color(KnownColor.MintCream);
}
}
///
///
/// [To be supplied.]
///
public static Color MistyRose {
get {
return new Color(KnownColor.MistyRose);
}
}
///
///
/// [To be supplied.]
///
public static Color Moccasin {
get {
return new Color(KnownColor.Moccasin);
}
}
///
///
/// [To be supplied.]
///
public static Color NavajoWhite {
get {
return new Color(KnownColor.NavajoWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color Navy {
get {
return new Color(KnownColor.Navy);
}
}
///
///
/// [To be supplied.]
///
public static Color OldLace {
get {
return new Color(KnownColor.OldLace);
}
}
///
///
/// [To be supplied.]
///
public static Color Olive {
get {
return new Color(KnownColor.Olive);
}
}
///
///
/// [To be supplied.]
///
public static Color OliveDrab {
get {
return new Color(KnownColor.OliveDrab);
}
}
///
///
/// [To be supplied.]
///
public static Color Orange {
get {
return new Color(KnownColor.Orange);
}
}
///
///
/// [To be supplied.]
///
public static Color OrangeRed {
get {
return new Color(KnownColor.OrangeRed);
}
}
///
///
/// [To be supplied.]
///
public static Color Orchid {
get {
return new Color(KnownColor.Orchid);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleGoldenrod {
get {
return new Color(KnownColor.PaleGoldenrod);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleGreen {
get {
return new Color(KnownColor.PaleGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleTurquoise {
get {
return new Color(KnownColor.PaleTurquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleVioletRed {
get {
return new Color(KnownColor.PaleVioletRed);
}
}
///
///
/// [To be supplied.]
///
public static Color PapayaWhip {
get {
return new Color(KnownColor.PapayaWhip);
}
}
///
///
/// [To be supplied.]
///
public static Color PeachPuff {
get {
return new Color(KnownColor.PeachPuff);
}
}
///
///
/// [To be supplied.]
///
public static Color Peru {
get {
return new Color(KnownColor.Peru);
}
}
///
///
/// [To be supplied.]
///
public static Color Pink {
get {
return new Color(KnownColor.Pink);
}
}
///
///
/// [To be supplied.]
///
public static Color Plum {
get {
return new Color(KnownColor.Plum);
}
}
///
///
/// [To be supplied.]
///
public static Color PowderBlue {
get {
return new Color(KnownColor.PowderBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Purple {
get {
return new Color(KnownColor.Purple);
}
}
///
///
/// [To be supplied.]
///
public static Color Red {
get {
return new Color(KnownColor.Red);
}
}
///
///
/// [To be supplied.]
///
public static Color RosyBrown {
get {
return new Color(KnownColor.RosyBrown);
}
}
///
///
/// [To be supplied.]
///
public static Color RoyalBlue {
get {
return new Color(KnownColor.RoyalBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color SaddleBrown {
get {
return new Color(KnownColor.SaddleBrown);
}
}
///
///
/// [To be supplied.]
///
public static Color Salmon {
get {
return new Color(KnownColor.Salmon);
}
}
///
///
/// [To be supplied.]
///
public static Color SandyBrown {
get {
return new Color(KnownColor.SandyBrown);
}
}
///
///
/// [To be supplied.]
///
public static Color SeaGreen {
get {
return new Color(KnownColor.SeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color SeaShell {
get {
return new Color(KnownColor.SeaShell);
}
}
///
///
/// [To be supplied.]
///
public static Color Sienna {
get {
return new Color(KnownColor.Sienna);
}
}
///
///
/// [To be supplied.]
///
public static Color Silver {
get {
return new Color(KnownColor.Silver);
}
}
///
///
/// [To be supplied.]
///
public static Color SkyBlue {
get {
return new Color(KnownColor.SkyBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color SlateBlue {
get {
return new Color(KnownColor.SlateBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color SlateGray {
get {
return new Color(KnownColor.SlateGray);
}
}
///
///
/// [To be supplied.]
///
public static Color Snow {
get {
return new Color(KnownColor.Snow);
}
}
///
///
/// [To be supplied.]
///
public static Color SpringGreen {
get {
return new Color(KnownColor.SpringGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color SteelBlue {
get {
return new Color(KnownColor.SteelBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Tan {
get {
return new Color(KnownColor.Tan);
}
}
///
///
/// [To be supplied.]
///
public static Color Teal {
get {
return new Color(KnownColor.Teal);
}
}
///
///
/// [To be supplied.]
///
public static Color Thistle {
get {
return new Color(KnownColor.Thistle);
}
}
///
///
/// [To be supplied.]
///
public static Color Tomato {
get {
return new Color(KnownColor.Tomato);
}
}
///
///
/// [To be supplied.]
///
public static Color Turquoise {
get {
return new Color(KnownColor.Turquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color Violet {
get {
return new Color(KnownColor.Violet);
}
}
///
///
/// [To be supplied.]
///
public static Color Wheat {
get {
return new Color(KnownColor.Wheat);
}
}
///
///
/// [To be supplied.]
///
public static Color White {
get {
return new Color(KnownColor.White);
}
}
///
///
/// [To be supplied.]
///
public static Color WhiteSmoke {
get {
return new Color(KnownColor.WhiteSmoke);
}
}
///
///
/// [To be supplied.]
///
public static Color Yellow {
get {
return new Color(KnownColor.Yellow);
}
}
///
///
/// [To be supplied.]
///
public static Color YellowGreen {
get {
return new Color(KnownColor.YellowGreen);
}
}
//
// end "web" colors
// -------------------------------------------------------------------
// NOTE : The "zero" pattern (all members being 0) must represent
// : "not set". This allows "Color c;" to be correct.
private static short StateKnownColorValid = 0x0001;
private static short StateARGBValueValid = 0x0002;
private static short StateValueMask = (short)(StateARGBValueValid);
private static short StateNameValid = 0x0008;
private static long NotDefinedValue = 0;
/**
* Shift count and bit mask for A, R, G, B components in ARGB mode!
*/
private const int ARGBAlphaShift = 24;
private const int ARGBRedShift = 16;
private const int ARGBGreenShift = 8;
private const int ARGBBlueShift = 0;
/// WARNING!!! WARNING!!! WARNING!!! WARNING!!!
/// WARNING!!! WARNING!!! WARNING!!! WARNING!!!
/// We can never change the layout of this class (adding or removing or changing the
/// order of member variables) if you want to be compatible v1.0 version of the runtime.
/// This is so that we can push into the runtime a custom marshaller for OLE_COLOR to Color.
// user supplied name of color. Will not be filled in if
// we map to a "knowncolor"
//
private readonly string name;
// will contain standard 32bit sRGB (ARGB)
//
private readonly long value;
// ignored, unless "state" says it is valid
//
private readonly short knownColor;
// implementation specific information
//
private readonly short state;
internal Color(KnownColor knownColor) {
value = 0;
state = StateKnownColorValid;
name = null;
this.knownColor = (short)knownColor;
}
private Color(long value, short state, string name, KnownColor knownColor) {
this.value = value;
this.state = state;
this.name = name;
this.knownColor = (short)knownColor;
}
///
///
/// Gets the red component value for this .
///
public byte R {
get {
return(byte)((Value >> ARGBRedShift) & 0xFF);
}
}
///
///
/// Gets the green component value for this .
///
public byte G {
get {
return(byte)((Value >> ARGBGreenShift) & 0xFF);
}
}
///
///
///
/// Gets the blue component value for this .
///
///
public byte B {
get {
return(byte)((Value >> ARGBBlueShift) & 0xFF);
}
}
///
///
///
/// Gets the alpha component value for this .
///
///
public byte A {
get {
return(byte)((Value >> ARGBAlphaShift) & 0xFF);
}
}
///
///
///
/// Specifies whether this is a known (predefined) color.
/// Predefined colors are defined in the
/// enum.
///
///
public bool IsKnownColor {
get {
return((state & StateKnownColorValid) != 0);
}
}
///
///
/// Specifies whether this is uninitialized.
///
public bool IsEmpty {
get {
return state == 0;
}
}
///
///
/// Specifies whether this has a name or is a .
///
public bool IsNamedColor {
get {
return ((state & StateNameValid) != 0) || IsKnownColor;
}
}
///
///
/// Determines if this color is a system color.
///
public bool IsSystemColor {
get {
return IsKnownColor && ((((KnownColor) knownColor) <= KnownColor.WindowText) || (((KnownColor) knownColor) > KnownColor.YellowGreen));
}
}
// Not localized because it's only used for the DebuggerDisplayAttribute, and the values are
// programmatic items.
// Also, don't inline into the attribute for performance reasons. This way means the debugger
// does 1 func-eval instead of 5.
[SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters")]
private string NameAndARGBValue {
get {
return string.Format(CultureInfo.CurrentCulture,
"{{Name={0}, ARGB=({1}, {2}, {3}, {4})}}",
Name, A, R, G, B);
}
}
///
///
///
/// Gets the name of this . This will either return the user
/// defined name of the color, if the color was created from a name, or
/// the name of the known color. For custom colors, the RGB value will
/// be returned.
///
///
public string Name {
get {
if ((state & StateNameValid) != 0) {
return name;
}
if (IsKnownColor) {
// first try the table so we can avoid the (slow!) .ToString()
string tablename = KnownColorTable.KnownColorToName((KnownColor) knownColor);
if (tablename != null)
return tablename;
Debug.Assert(false, "Could not find known color '" + ((KnownColor) knownColor) + "' in the KnownColorTable");
return ((KnownColor)knownColor).ToString();
}
// if we reached here, just encode the value
//
return Convert.ToString(value, 16);
}
}
///
///
/// Actual color to be rendered.
///
private long Value {
get {
if ((state & StateValueMask) != 0) {
return value;
}
if (IsKnownColor) {
return(int)KnownColorTable.KnownColorToArgb((KnownColor)knownColor);
}
return NotDefinedValue;
}
}
private static void CheckByte(int value, string name) {
if (value < 0 || value > 255)
throw new ArgumentException(SR.GetString(SR.InvalidEx2BoundArgument, name, value, 0, 255));
}
///
///
/// Encodes the four values into ARGB (32 bit) format.
///
private static long MakeArgb(byte alpha, byte red, byte green, byte blue) {
return(long)((uint)(red << ARGBRedShift |
green << ARGBGreenShift |
blue << ARGBBlueShift |
alpha << ARGBAlphaShift)) & 0xffffffff;
}
///
///
///
/// Creates a Color from its 32-bit component
/// (alpha, red, green, and blue) values.
///
///
public static Color FromArgb(int argb) {
return new Color((long)argb & 0xffffffff, StateARGBValueValid, null, (KnownColor)0);
}
///
///
///
/// Creates a Color from its 32-bit component (alpha, red,
/// green, and blue) values.
///
///
public static Color FromArgb(int alpha, int red, int green, int blue) {
CheckByte(alpha, "alpha");
CheckByte(red, "red");
CheckByte(green, "green");
CheckByte(blue, "blue");
return new Color(MakeArgb((byte) alpha, (byte) red, (byte) green, (byte) blue), StateARGBValueValid, null, (KnownColor)0);
}
///
///
///
/// Creates a new from the specified , but with
/// the new specified alpha value.
///
///
public static Color FromArgb(int alpha, Color baseColor) {
CheckByte(alpha, "alpha");
return new Color(MakeArgb((byte) alpha, baseColor.R, baseColor.G, baseColor.B), StateARGBValueValid, null, (KnownColor)0);
}
///
///
///
/// Creates a from the specified red, green, and
/// blue values.
///
///
public static Color FromArgb(int red, int green, int blue) {
return FromArgb(255, red, green, blue);
}
///
///
///
/// Creates a from the specified .
///
///
public static Color FromKnownColor(KnownColor color) {
if( !ClientUtils.IsEnumValid( color, (int) color, (int) KnownColor.ActiveBorder, (int) KnownColor.MenuHighlight ) ) {
return Color.FromName(color.ToString());
}
return new Color(color);
}
///
///
///
/// Creates a with the specified name.
///
///
public static Color FromName(string name) {
// try to get a known color first
object color = ColorConverter.GetNamedColor(name);
if (color != null) {
return (Color)color;
}
// otherwise treat it as a named color
return new Color(NotDefinedValue, StateNameValid, name, (KnownColor)0);
}
///
///
///
/// Returns the Hue-Saturation-Brightness (HSB) brightness
/// for this .
///
///
public float GetBrightness() {
float r = (float)R / 255.0f;
float g = (float)G / 255.0f;
float b = (float)B / 255.0f;
float max, min;
max = r; min = r;
if (g > max) max = g;
if (b > max) max = b;
if (g < min) min = g;
if (b < min) min = b;
return(max + min) / 2;
}
///
///
///
/// Returns the Hue-Saturation-Brightness (HSB) hue
/// value, in degrees, for this .
/// If R == G == B, the hue is meaningless, and the return value is 0.
///
///
public Single GetHue() {
if (R == G && G == B)
return 0; // 0 makes as good an UNDEFINED value as any
float r = (float)R / 255.0f;
float g = (float)G / 255.0f;
float b = (float)B / 255.0f;
float max, min;
float delta;
float hue = 0.0f;
max = r; min = r;
if (g > max) max = g;
if (b > max) max = b;
if (g < min) min = g;
if (b < min) min = b;
delta = max - min;
if (r == max) {
hue = (g - b) / delta;
}
else if (g == max) {
hue = 2 + (b - r) / delta;
}
else if (b == max) {
hue = 4 + (r - g) / delta;
}
hue *= 60;
if (hue < 0.0f) {
hue += 360.0f;
}
return hue;
}
///
///
///
/// The Hue-Saturation-Brightness (HSB) saturation for this
///
/// .
///
///
public float GetSaturation() {
float r = (float)R / 255.0f;
float g = (float)G / 255.0f;
float b = (float)B / 255.0f;
float max, min;
float l, s = 0;
max = r; min = r;
if (g > max) max = g;
if (b > max) max = b;
if (g < min) min = g;
if (b < min) min = b;
// if max == min, then there is no color and
// the saturation is zero.
//
if (max != min) {
l = (max + min) / 2;
if (l <= .5) {
s = (max - min)/(max + min);
}
else {
s = (max - min)/(2 - max - min);
}
}
return s;
}
///
///
///
/// Returns the ARGB value of this .
///
///
public int ToArgb() {
return(int)Value;
}
///
///
///
/// Returns the value for this color, if it is
/// based on a .
///
///
public KnownColor ToKnownColor() {
return(KnownColor)knownColor;
}
///
///
/// Converts this to a human-readable
/// string.
///
public override string ToString() {
StringBuilder sb = new StringBuilder(32);
sb.Append(GetType().Name);
sb.Append(" [");
if ((state & StateNameValid) != 0) {
sb.Append(Name);
}
else if ((state & StateKnownColorValid) != 0) {
sb.Append(Name);
}
else if ((state & StateValueMask) != 0) {
sb.Append("A=");
sb.Append(A);
sb.Append(", R=");
sb.Append(R);
sb.Append(", G=");
sb.Append(G);
sb.Append(", B=");
sb.Append(B);
}
else {
sb.Append("Empty");
}
sb.Append("]");
return sb.ToString();
}
///
///
///
/// Tests whether two specified objects
/// are equivalent.
///
///
public static bool operator ==(Color left, Color right) {
if (left.value == right.value
&& left.state == right.state
&& left.knownColor == right.knownColor) {
if (left.name == right.name) {
return true;
}
if (left.name == (object) null || right.name == (object) null) {
return false;
}
return left.name.Equals(right.name);
}
return false;
}
///
///
///
/// Tests whether two specified objects
/// are equivalent.
///
///
public static bool operator !=(Color left, Color right) {
return !(left == right);
}
///
///
/// Tests whether the specified object is a
///
/// and is equivalent to this .
///
public override bool Equals(object obj) {
if (obj is Color) {
Color right = (Color)obj;
if (value == right.value
&& state == right.state
&& knownColor == right.knownColor) {
if (name == right.name) {
return true;
}
if (name == (object) null || right.name == (object) null) {
return false;
}
return name.Equals(name);
}
}
return false;
}
///
///
/// [To be supplied.]
///
public override int GetHashCode() {
return value.GetHashCode() ^
state.GetHashCode() ^
knownColor.GetHashCode();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Drawing {
using System.Globalization;
using System.Text;
using System.Runtime.Serialization.Formatters;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System;
using Microsoft.Win32;
using System.ComponentModel;
#if !FEATURE_PAL
using System.Drawing.Design;
#endif
using System.Runtime.InteropServices;
///
///
/// Represents an ARGB color.
///
[
Serializable(),
TypeConverter(typeof(ColorConverter)),
DebuggerDisplay("{NameAndARGBValue}"),
#if !FEATURE_PAL
Editor("System.Drawing.Design.ColorEditor, " + AssemblyRef.SystemDrawingDesign, typeof(UITypeEditor)),
#endif
]
public struct Color {
///
///
/// [To be supplied.]
///
public static readonly Color Empty = new Color();
// -------------------------------------------------------------------
// static list of "web" colors...
//
///
///
/// [To be supplied.]
///
public static Color Transparent {
get {
return new Color(KnownColor.Transparent);
}
}
///
///
/// [To be supplied.]
///
public static Color AliceBlue {
get {
return new Color(KnownColor.AliceBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color AntiqueWhite {
get {
return new Color(KnownColor.AntiqueWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color Aqua {
get {
return new Color(KnownColor.Aqua);
}
}
///
///
/// [To be supplied.]
///
public static Color Aquamarine {
get {
return new Color(KnownColor.Aquamarine);
}
}
///
///
/// [To be supplied.]
///
public static Color Azure {
get {
return new Color(KnownColor.Azure);
}
}
///
///
/// [To be supplied.]
///
public static Color Beige {
get {
return new Color(KnownColor.Beige);
}
}
///
///
/// [To be supplied.]
///
public static Color Bisque {
get {
return new Color(KnownColor.Bisque);
}
}
///
///
/// [To be supplied.]
///
public static Color Black {
get {
return new Color(KnownColor.Black);
}
}
///
///
/// [To be supplied.]
///
public static Color BlanchedAlmond {
get {
return new Color(KnownColor.BlanchedAlmond);
}
}
///
///
/// [To be supplied.]
///
public static Color Blue {
get {
return new Color(KnownColor.Blue);
}
}
///
///
/// [To be supplied.]
///
public static Color BlueViolet {
get {
return new Color(KnownColor.BlueViolet);
}
}
///
///
/// [To be supplied.]
///
public static Color Brown {
get {
return new Color(KnownColor.Brown);
}
}
///
///
/// [To be supplied.]
///
public static Color BurlyWood {
get {
return new Color(KnownColor.BurlyWood);
}
}
///
///
/// [To be supplied.]
///
public static Color CadetBlue {
get {
return new Color(KnownColor.CadetBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Chartreuse {
get {
return new Color(KnownColor.Chartreuse);
}
}
///
///
/// [To be supplied.]
///
public static Color Chocolate {
get {
return new Color(KnownColor.Chocolate);
}
}
///
///
/// [To be supplied.]
///
public static Color Coral {
get {
return new Color(KnownColor.Coral);
}
}
///
///
/// [To be supplied.]
///
public static Color CornflowerBlue {
get {
return new Color(KnownColor.CornflowerBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Cornsilk {
get {
return new Color(KnownColor.Cornsilk);
}
}
///
///
/// [To be supplied.]
///
public static Color Crimson {
get {
return new Color(KnownColor.Crimson);
}
}
///
///
/// [To be supplied.]
///
public static Color Cyan {
get {
return new Color(KnownColor.Cyan);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkBlue {
get {
return new Color(KnownColor.DarkBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkCyan {
get {
return new Color(KnownColor.DarkCyan);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkGoldenrod {
get {
return new Color(KnownColor.DarkGoldenrod);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkGray {
get {
return new Color(KnownColor.DarkGray);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkGreen {
get {
return new Color(KnownColor.DarkGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkKhaki {
get {
return new Color(KnownColor.DarkKhaki);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkMagenta {
get {
return new Color(KnownColor.DarkMagenta);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkOliveGreen {
get {
return new Color(KnownColor.DarkOliveGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkOrange {
get {
return new Color(KnownColor.DarkOrange);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkOrchid {
get {
return new Color(KnownColor.DarkOrchid);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkRed {
get {
return new Color(KnownColor.DarkRed);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSalmon {
get {
return new Color(KnownColor.DarkSalmon);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSeaGreen {
get {
return new Color(KnownColor.DarkSeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSlateBlue {
get {
return new Color(KnownColor.DarkSlateBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkSlateGray {
get {
return new Color(KnownColor.DarkSlateGray);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkTurquoise {
get {
return new Color(KnownColor.DarkTurquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color DarkViolet {
get {
return new Color(KnownColor.DarkViolet);
}
}
///
///
/// [To be supplied.]
///
public static Color DeepPink {
get {
return new Color(KnownColor.DeepPink);
}
}
///
///
/// [To be supplied.]
///
public static Color DeepSkyBlue {
get {
return new Color(KnownColor.DeepSkyBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color DimGray {
get {
return new Color(KnownColor.DimGray);
}
}
///
///
/// [To be supplied.]
///
public static Color DodgerBlue {
get {
return new Color(KnownColor.DodgerBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Firebrick {
get {
return new Color(KnownColor.Firebrick);
}
}
///
///
/// [To be supplied.]
///
public static Color FloralWhite {
get {
return new Color(KnownColor.FloralWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color ForestGreen {
get {
return new Color(KnownColor.ForestGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color Fuchsia {
get {
return new Color(KnownColor.Fuchsia);
}
}
///
///
/// [To be supplied.]
///
public static Color Gainsboro {
get {
return new Color(KnownColor.Gainsboro);
}
}
///
///
/// [To be supplied.]
///
public static Color GhostWhite {
get {
return new Color(KnownColor.GhostWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color Gold {
get {
return new Color(KnownColor.Gold);
}
}
///
///
/// [To be supplied.]
///
public static Color Goldenrod {
get {
return new Color(KnownColor.Goldenrod);
}
}
///
///
/// [To be supplied.]
///
public static Color Gray {
get {
return new Color(KnownColor.Gray);
}
}
///
///
/// [To be supplied.]
///
public static Color Green {
get {
return new Color(KnownColor.Green);
}
}
///
///
/// [To be supplied.]
///
public static Color GreenYellow {
get {
return new Color(KnownColor.GreenYellow);
}
}
///
///
/// [To be supplied.]
///
public static Color Honeydew {
get {
return new Color(KnownColor.Honeydew);
}
}
///
///
/// [To be supplied.]
///
public static Color HotPink {
get {
return new Color(KnownColor.HotPink);
}
}
///
///
/// [To be supplied.]
///
public static Color IndianRed {
get {
return new Color(KnownColor.IndianRed);
}
}
///
///
/// [To be supplied.]
///
public static Color Indigo {
get {
return new Color(KnownColor.Indigo);
}
}
///
///
/// [To be supplied.]
///
public static Color Ivory {
get {
return new Color(KnownColor.Ivory);
}
}
///
///
/// [To be supplied.]
///
public static Color Khaki {
get {
return new Color(KnownColor.Khaki);
}
}
///
///
/// [To be supplied.]
///
public static Color Lavender {
get {
return new Color(KnownColor.Lavender);
}
}
///
///
/// [To be supplied.]
///
public static Color LavenderBlush {
get {
return new Color(KnownColor.LavenderBlush);
}
}
///
///
/// [To be supplied.]
///
public static Color LawnGreen {
get {
return new Color(KnownColor.LawnGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color LemonChiffon {
get {
return new Color(KnownColor.LemonChiffon);
}
}
///
///
/// [To be supplied.]
///
public static Color LightBlue {
get {
return new Color(KnownColor.LightBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color LightCoral {
get {
return new Color(KnownColor.LightCoral);
}
}
///
///
/// [To be supplied.]
///
public static Color LightCyan {
get {
return new Color(KnownColor.LightCyan);
}
}
///
///
/// [To be supplied.]
///
public static Color LightGoldenrodYellow {
get {
return new Color(KnownColor.LightGoldenrodYellow);
}
}
///
///
/// [To be supplied.]
///
public static Color LightGreen {
get {
return new Color(KnownColor.LightGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color LightGray {
get {
return new Color(KnownColor.LightGray);
}
}
///
///
/// [To be supplied.]
///
public static Color LightPink {
get {
return new Color(KnownColor.LightPink);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSalmon {
get {
return new Color(KnownColor.LightSalmon);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSeaGreen {
get {
return new Color(KnownColor.LightSeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSkyBlue {
get {
return new Color(KnownColor.LightSkyBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSlateGray {
get {
return new Color(KnownColor.LightSlateGray);
}
}
///
///
/// [To be supplied.]
///
public static Color LightSteelBlue {
get {
return new Color(KnownColor.LightSteelBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color LightYellow {
get {
return new Color(KnownColor.LightYellow);
}
}
///
///
/// [To be supplied.]
///
public static Color Lime {
get {
return new Color(KnownColor.Lime);
}
}
///
///
/// [To be supplied.]
///
public static Color LimeGreen {
get {
return new Color(KnownColor.LimeGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color Linen {
get {
return new Color(KnownColor.Linen);
}
}
///
///
/// [To be supplied.]
///
public static Color Magenta {
get {
return new Color(KnownColor.Magenta);
}
}
///
///
/// [To be supplied.]
///
public static Color Maroon {
get {
return new Color(KnownColor.Maroon);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumAquamarine {
get {
return new Color(KnownColor.MediumAquamarine);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumBlue {
get {
return new Color(KnownColor.MediumBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumOrchid {
get {
return new Color(KnownColor.MediumOrchid);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumPurple {
get {
return new Color(KnownColor.MediumPurple);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumSeaGreen {
get {
return new Color(KnownColor.MediumSeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumSlateBlue {
get {
return new Color(KnownColor.MediumSlateBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumSpringGreen {
get {
return new Color(KnownColor.MediumSpringGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumTurquoise {
get {
return new Color(KnownColor.MediumTurquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color MediumVioletRed {
get {
return new Color(KnownColor.MediumVioletRed);
}
}
///
///
/// [To be supplied.]
///
public static Color MidnightBlue {
get {
return new Color(KnownColor.MidnightBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color MintCream {
get {
return new Color(KnownColor.MintCream);
}
}
///
///
/// [To be supplied.]
///
public static Color MistyRose {
get {
return new Color(KnownColor.MistyRose);
}
}
///
///
/// [To be supplied.]
///
public static Color Moccasin {
get {
return new Color(KnownColor.Moccasin);
}
}
///
///
/// [To be supplied.]
///
public static Color NavajoWhite {
get {
return new Color(KnownColor.NavajoWhite);
}
}
///
///
/// [To be supplied.]
///
public static Color Navy {
get {
return new Color(KnownColor.Navy);
}
}
///
///
/// [To be supplied.]
///
public static Color OldLace {
get {
return new Color(KnownColor.OldLace);
}
}
///
///
/// [To be supplied.]
///
public static Color Olive {
get {
return new Color(KnownColor.Olive);
}
}
///
///
/// [To be supplied.]
///
public static Color OliveDrab {
get {
return new Color(KnownColor.OliveDrab);
}
}
///
///
/// [To be supplied.]
///
public static Color Orange {
get {
return new Color(KnownColor.Orange);
}
}
///
///
/// [To be supplied.]
///
public static Color OrangeRed {
get {
return new Color(KnownColor.OrangeRed);
}
}
///
///
/// [To be supplied.]
///
public static Color Orchid {
get {
return new Color(KnownColor.Orchid);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleGoldenrod {
get {
return new Color(KnownColor.PaleGoldenrod);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleGreen {
get {
return new Color(KnownColor.PaleGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleTurquoise {
get {
return new Color(KnownColor.PaleTurquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color PaleVioletRed {
get {
return new Color(KnownColor.PaleVioletRed);
}
}
///
///
/// [To be supplied.]
///
public static Color PapayaWhip {
get {
return new Color(KnownColor.PapayaWhip);
}
}
///
///
/// [To be supplied.]
///
public static Color PeachPuff {
get {
return new Color(KnownColor.PeachPuff);
}
}
///
///
/// [To be supplied.]
///
public static Color Peru {
get {
return new Color(KnownColor.Peru);
}
}
///
///
/// [To be supplied.]
///
public static Color Pink {
get {
return new Color(KnownColor.Pink);
}
}
///
///
/// [To be supplied.]
///
public static Color Plum {
get {
return new Color(KnownColor.Plum);
}
}
///
///
/// [To be supplied.]
///
public static Color PowderBlue {
get {
return new Color(KnownColor.PowderBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Purple {
get {
return new Color(KnownColor.Purple);
}
}
///
///
/// [To be supplied.]
///
public static Color Red {
get {
return new Color(KnownColor.Red);
}
}
///
///
/// [To be supplied.]
///
public static Color RosyBrown {
get {
return new Color(KnownColor.RosyBrown);
}
}
///
///
/// [To be supplied.]
///
public static Color RoyalBlue {
get {
return new Color(KnownColor.RoyalBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color SaddleBrown {
get {
return new Color(KnownColor.SaddleBrown);
}
}
///
///
/// [To be supplied.]
///
public static Color Salmon {
get {
return new Color(KnownColor.Salmon);
}
}
///
///
/// [To be supplied.]
///
public static Color SandyBrown {
get {
return new Color(KnownColor.SandyBrown);
}
}
///
///
/// [To be supplied.]
///
public static Color SeaGreen {
get {
return new Color(KnownColor.SeaGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color SeaShell {
get {
return new Color(KnownColor.SeaShell);
}
}
///
///
/// [To be supplied.]
///
public static Color Sienna {
get {
return new Color(KnownColor.Sienna);
}
}
///
///
/// [To be supplied.]
///
public static Color Silver {
get {
return new Color(KnownColor.Silver);
}
}
///
///
/// [To be supplied.]
///
public static Color SkyBlue {
get {
return new Color(KnownColor.SkyBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color SlateBlue {
get {
return new Color(KnownColor.SlateBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color SlateGray {
get {
return new Color(KnownColor.SlateGray);
}
}
///
///
/// [To be supplied.]
///
public static Color Snow {
get {
return new Color(KnownColor.Snow);
}
}
///
///
/// [To be supplied.]
///
public static Color SpringGreen {
get {
return new Color(KnownColor.SpringGreen);
}
}
///
///
/// [To be supplied.]
///
public static Color SteelBlue {
get {
return new Color(KnownColor.SteelBlue);
}
}
///
///
/// [To be supplied.]
///
public static Color Tan {
get {
return new Color(KnownColor.Tan);
}
}
///
///
/// [To be supplied.]
///
public static Color Teal {
get {
return new Color(KnownColor.Teal);
}
}
///
///
/// [To be supplied.]
///
public static Color Thistle {
get {
return new Color(KnownColor.Thistle);
}
}
///
///
/// [To be supplied.]
///
public static Color Tomato {
get {
return new Color(KnownColor.Tomato);
}
}
///
///
/// [To be supplied.]
///
public static Color Turquoise {
get {
return new Color(KnownColor.Turquoise);
}
}
///
///
/// [To be supplied.]
///
public static Color Violet {
get {
return new Color(KnownColor.Violet);
}
}
///
///
/// [To be supplied.]
///
public static Color Wheat {
get {
return new Color(KnownColor.Wheat);
}
}
///
///
/// [To be supplied.]
///
public static Color White {
get {
return new Color(KnownColor.White);
}
}
///
///
/// [To be supplied.]
///
public static Color WhiteSmoke {
get {
return new Color(KnownColor.WhiteSmoke);
}
}
///
///
/// [To be supplied.]
///
public static Color Yellow {
get {
return new Color(KnownColor.Yellow);
}
}
///
///
/// [To be supplied.]
///
public static Color YellowGreen {
get {
return new Color(KnownColor.YellowGreen);
}
}
//
// end "web" colors
// -------------------------------------------------------------------
// NOTE : The "zero" pattern (all members being 0) must represent
// : "not set". This allows "Color c;" to be correct.
private static short StateKnownColorValid = 0x0001;
private static short StateARGBValueValid = 0x0002;
private static short StateValueMask = (short)(StateARGBValueValid);
private static short StateNameValid = 0x0008;
private static long NotDefinedValue = 0;
/**
* Shift count and bit mask for A, R, G, B components in ARGB mode!
*/
private const int ARGBAlphaShift = 24;
private const int ARGBRedShift = 16;
private const int ARGBGreenShift = 8;
private const int ARGBBlueShift = 0;
/// WARNING!!! WARNING!!! WARNING!!! WARNING!!!
/// WARNING!!! WARNING!!! WARNING!!! WARNING!!!
/// We can never change the layout of this class (adding or removing or changing the
/// order of member variables) if you want to be compatible v1.0 version of the runtime.
/// This is so that we can push into the runtime a custom marshaller for OLE_COLOR to Color.
// user supplied name of color. Will not be filled in if
// we map to a "knowncolor"
//
private readonly string name;
// will contain standard 32bit sRGB (ARGB)
//
private readonly long value;
// ignored, unless "state" says it is valid
//
private readonly short knownColor;
// implementation specific information
//
private readonly short state;
internal Color(KnownColor knownColor) {
value = 0;
state = StateKnownColorValid;
name = null;
this.knownColor = (short)knownColor;
}
private Color(long value, short state, string name, KnownColor knownColor) {
this.value = value;
this.state = state;
this.name = name;
this.knownColor = (short)knownColor;
}
///
///
/// Gets the red component value for this .
///
public byte R {
get {
return(byte)((Value >> ARGBRedShift) & 0xFF);
}
}
///
///
/// Gets the green component value for this .
///
public byte G {
get {
return(byte)((Value >> ARGBGreenShift) & 0xFF);
}
}
///
///
///
/// Gets the blue component value for this .
///
///
public byte B {
get {
return(byte)((Value >> ARGBBlueShift) & 0xFF);
}
}
///
///
///
/// Gets the alpha component value for this .
///
///
public byte A {
get {
return(byte)((Value >> ARGBAlphaShift) & 0xFF);
}
}
///
///
///
/// Specifies whether this is a known (predefined) color.
/// Predefined colors are defined in the
/// enum.
///
///
public bool IsKnownColor {
get {
return((state & StateKnownColorValid) != 0);
}
}
///
///
/// Specifies whether this is uninitialized.
///
public bool IsEmpty {
get {
return state == 0;
}
}
///
///
/// Specifies whether this has a name or is a .
///
public bool IsNamedColor {
get {
return ((state & StateNameValid) != 0) || IsKnownColor;
}
}
///
///
/// Determines if this color is a system color.
///
public bool IsSystemColor {
get {
return IsKnownColor && ((((KnownColor) knownColor) <= KnownColor.WindowText) || (((KnownColor) knownColor) > KnownColor.YellowGreen));
}
}
// Not localized because it's only used for the DebuggerDisplayAttribute, and the values are
// programmatic items.
// Also, don't inline into the attribute for performance reasons. This way means the debugger
// does 1 func-eval instead of 5.
[SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters")]
private string NameAndARGBValue {
get {
return string.Format(CultureInfo.CurrentCulture,
"{{Name={0}, ARGB=({1}, {2}, {3}, {4})}}",
Name, A, R, G, B);
}
}
///
///
///
/// Gets the name of this . This will either return the user
/// defined name of the color, if the color was created from a name, or
/// the name of the known color. For custom colors, the RGB value will
/// be returned.
///
///
public string Name {
get {
if ((state & StateNameValid) != 0) {
return name;
}
if (IsKnownColor) {
// first try the table so we can avoid the (slow!) .ToString()
string tablename = KnownColorTable.KnownColorToName((KnownColor) knownColor);
if (tablename != null)
return tablename;
Debug.Assert(false, "Could not find known color '" + ((KnownColor) knownColor) + "' in the KnownColorTable");
return ((KnownColor)knownColor).ToString();
}
// if we reached here, just encode the value
//
return Convert.ToString(value, 16);
}
}
///
///
/// Actual color to be rendered.
///
private long Value {
get {
if ((state & StateValueMask) != 0) {
return value;
}
if (IsKnownColor) {
return(int)KnownColorTable.KnownColorToArgb((KnownColor)knownColor);
}
return NotDefinedValue;
}
}
private static void CheckByte(int value, string name) {
if (value < 0 || value > 255)
throw new ArgumentException(SR.GetString(SR.InvalidEx2BoundArgument, name, value, 0, 255));
}
///
///
/// Encodes the four values into ARGB (32 bit) format.
///
private static long MakeArgb(byte alpha, byte red, byte green, byte blue) {
return(long)((uint)(red << ARGBRedShift |
green << ARGBGreenShift |
blue << ARGBBlueShift |
alpha << ARGBAlphaShift)) & 0xffffffff;
}
///
///
///
/// Creates a Color from its 32-bit component
/// (alpha, red, green, and blue) values.
///
///
public static Color FromArgb(int argb) {
return new Color((long)argb & 0xffffffff, StateARGBValueValid, null, (KnownColor)0);
}
///
///
///
/// Creates a Color from its 32-bit component (alpha, red,
/// green, and blue) values.
///
///
public static Color FromArgb(int alpha, int red, int green, int blue) {
CheckByte(alpha, "alpha");
CheckByte(red, "red");
CheckByte(green, "green");
CheckByte(blue, "blue");
return new Color(MakeArgb((byte) alpha, (byte) red, (byte) green, (byte) blue), StateARGBValueValid, null, (KnownColor)0);
}
///
///
///
/// Creates a new from the specified , but with
/// the new specified alpha value.
///
///
public static Color FromArgb(int alpha, Color baseColor) {
CheckByte(alpha, "alpha");
return new Color(MakeArgb((byte) alpha, baseColor.R, baseColor.G, baseColor.B), StateARGBValueValid, null, (KnownColor)0);
}
///
///
///
/// Creates a from the specified red, green, and
/// blue values.
///
///
public static Color FromArgb(int red, int green, int blue) {
return FromArgb(255, red, green, blue);
}
///
///
///
/// Creates a from the specified .
///
///
public static Color FromKnownColor(KnownColor color) {
if( !ClientUtils.IsEnumValid( color, (int) color, (int) KnownColor.ActiveBorder, (int) KnownColor.MenuHighlight ) ) {
return Color.FromName(color.ToString());
}
return new Color(color);
}
///
///
///
/// Creates a with the specified name.
///
///
public static Color FromName(string name) {
// try to get a known color first
object color = ColorConverter.GetNamedColor(name);
if (color != null) {
return (Color)color;
}
// otherwise treat it as a named color
return new Color(NotDefinedValue, StateNameValid, name, (KnownColor)0);
}
///
///
///
/// Returns the Hue-Saturation-Brightness (HSB) brightness
/// for this .
///
///
public float GetBrightness() {
float r = (float)R / 255.0f;
float g = (float)G / 255.0f;
float b = (float)B / 255.0f;
float max, min;
max = r; min = r;
if (g > max) max = g;
if (b > max) max = b;
if (g < min) min = g;
if (b < min) min = b;
return(max + min) / 2;
}
///
///
///
/// Returns the Hue-Saturation-Brightness (HSB) hue
/// value, in degrees, for this .
/// If R == G == B, the hue is meaningless, and the return value is 0.
///
///
public Single GetHue() {
if (R == G && G == B)
return 0; // 0 makes as good an UNDEFINED value as any
float r = (float)R / 255.0f;
float g = (float)G / 255.0f;
float b = (float)B / 255.0f;
float max, min;
float delta;
float hue = 0.0f;
max = r; min = r;
if (g > max) max = g;
if (b > max) max = b;
if (g < min) min = g;
if (b < min) min = b;
delta = max - min;
if (r == max) {
hue = (g - b) / delta;
}
else if (g == max) {
hue = 2 + (b - r) / delta;
}
else if (b == max) {
hue = 4 + (r - g) / delta;
}
hue *= 60;
if (hue < 0.0f) {
hue += 360.0f;
}
return hue;
}
///
///
///
/// The Hue-Saturation-Brightness (HSB) saturation for this
///
/// .
///
///
public float GetSaturation() {
float r = (float)R / 255.0f;
float g = (float)G / 255.0f;
float b = (float)B / 255.0f;
float max, min;
float l, s = 0;
max = r; min = r;
if (g > max) max = g;
if (b > max) max = b;
if (g < min) min = g;
if (b < min) min = b;
// if max == min, then there is no color and
// the saturation is zero.
//
if (max != min) {
l = (max + min) / 2;
if (l <= .5) {
s = (max - min)/(max + min);
}
else {
s = (max - min)/(2 - max - min);
}
}
return s;
}
///
///
///
/// Returns the ARGB value of this .
///
///
public int ToArgb() {
return(int)Value;
}
///
///
///
/// Returns the value for this color, if it is
/// based on a .
///
///
public KnownColor ToKnownColor() {
return(KnownColor)knownColor;
}
///
///
/// Converts this to a human-readable
/// string.
///
public override string ToString() {
StringBuilder sb = new StringBuilder(32);
sb.Append(GetType().Name);
sb.Append(" [");
if ((state & StateNameValid) != 0) {
sb.Append(Name);
}
else if ((state & StateKnownColorValid) != 0) {
sb.Append(Name);
}
else if ((state & StateValueMask) != 0) {
sb.Append("A=");
sb.Append(A);
sb.Append(", R=");
sb.Append(R);
sb.Append(", G=");
sb.Append(G);
sb.Append(", B=");
sb.Append(B);
}
else {
sb.Append("Empty");
}
sb.Append("]");
return sb.ToString();
}
///
///
///
/// Tests whether two specified objects
/// are equivalent.
///
///
public static bool operator ==(Color left, Color right) {
if (left.value == right.value
&& left.state == right.state
&& left.knownColor == right.knownColor) {
if (left.name == right.name) {
return true;
}
if (left.name == (object) null || right.name == (object) null) {
return false;
}
return left.name.Equals(right.name);
}
return false;
}
///
///
///
/// Tests whether two specified objects
/// are equivalent.
///
///
public static bool operator !=(Color left, Color right) {
return !(left == right);
}
///
///
/// Tests whether the specified object is a
///
/// and is equivalent to this .
///
public override bool Equals(object obj) {
if (obj is Color) {
Color right = (Color)obj;
if (value == right.value
&& state == right.state
&& knownColor == right.knownColor) {
if (name == right.name) {
return true;
}
if (name == (object) null || right.name == (object) null) {
return false;
}
return name.Equals(name);
}
}
return false;
}
///
///
/// [To be supplied.]
///
public override int GetHashCode() {
return value.GetHashCode() ^
state.GetHashCode() ^
knownColor.GetHashCode();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SessionState.cs
- PerspectiveCamera.cs
- FormViewPageEventArgs.cs
- SrgsRule.cs
- TextContainerChangedEventArgs.cs
- HttpHeaderCollection.cs
- TransactionFlowBindingElementImporter.cs
- SyntaxCheck.cs
- DelayedRegex.cs
- InProcStateClientManager.cs
- Tag.cs
- EncoderBestFitFallback.cs
- ModelTreeEnumerator.cs
- DBSqlParserTableCollection.cs
- LockedBorderGlyph.cs
- PackageDigitalSignature.cs
- QueryContinueDragEventArgs.cs
- CompilationLock.cs
- DataGridColumnHeader.cs
- WebEventCodes.cs
- StrokeDescriptor.cs
- regiisutil.cs
- MessageQueueCriteria.cs
- WriteFileContext.cs
- EntityModelBuildProvider.cs
- URIFormatException.cs
- TextHintingModeValidation.cs
- CodeObjectCreateExpression.cs
- ListSortDescription.cs
- LinqDataSourceUpdateEventArgs.cs
- ParameterEditorUserControl.cs
- Misc.cs
- StylusButtonEventArgs.cs
- NativeObjectSecurity.cs
- Array.cs
- ArgumentException.cs
- BamlMapTable.cs
- DurationConverter.cs
- TextServicesDisplayAttribute.cs
- CompilationUnit.cs
- SplashScreen.cs
- EdmPropertyAttribute.cs
- IndexedGlyphRun.cs
- TableRowCollection.cs
- QilScopedVisitor.cs
- KoreanLunisolarCalendar.cs
- WinFormsUtils.cs
- Attributes.cs
- WindowsTokenRoleProvider.cs
- ToolStripDropDown.cs
- SQLConvert.cs
- ClientProxyGenerator.cs
- DynamicDiscoveryDocument.cs
- CodePageUtils.cs
- COM2PictureConverter.cs
- SyndicationCategory.cs
- DnsPermission.cs
- Int32RectConverter.cs
- PassportPrincipal.cs
- WebBrowserBase.cs
- Rotation3D.cs
- PermissionSetEnumerator.cs
- Baml2006ReaderContext.cs
- FrameworkReadOnlyPropertyMetadata.cs
- SessionEndedEventArgs.cs
- RotateTransform3D.cs
- StrokeNodeOperations2.cs
- CancellationTokenSource.cs
- PrimaryKeyTypeConverter.cs
- HighContrastHelper.cs
- PageBreakRecord.cs
- GacUtil.cs
- ScriptControlDescriptor.cs
- GC.cs
- EventLogEntry.cs
- Renderer.cs
- ScrollBarAutomationPeer.cs
- BrowserInteropHelper.cs
- HandledMouseEvent.cs
- COM2PropertyBuilderUITypeEditor.cs
- LinqToSqlWrapper.cs
- EventToken.cs
- ETagAttribute.cs
- oledbmetadatacolumnnames.cs
- ResourceWriter.cs
- HttpHandlersInstallComponent.cs
- FlowLayoutPanel.cs
- RemoteWebConfigurationHostServer.cs
- SplitterCancelEvent.cs
- TTSVoice.cs
- IntegerFacetDescriptionElement.cs
- DesignerForm.cs
- TextRunCache.cs
- Image.cs
- BuildResultCache.cs
- ExpressionLexer.cs
- BadImageFormatException.cs
- TypeExtensionConverter.cs
- TypeProvider.cs
- NativeMethods.cs