00001 #region License
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #endregion
00027
00028 using System;
00029 using System.Collections.Generic;
00030 using System.Text;
00031 using System.Xml.Serialization;
00032
00033 namespace OpenTK.Graphics
00034 {
00038 [Serializable]
00039 public struct Color4 : IEquatable<Color4>
00040 {
00041 #region Fields
00042
00046 public float R;
00047
00051 public float G;
00052
00056 public float B;
00057
00061 public float A;
00062
00063 #endregion
00064
00065 #region Constructors
00066
00074 public Color4(float r, float g, float b, float a)
00075 {
00076 R = r;
00077 G = g;
00078 B = b;
00079 A = a;
00080 }
00081
00089 public Color4(byte r, byte g, byte b, byte a)
00090 {
00091 R = r / (float)Byte.MaxValue;
00092 G = g / (float)Byte.MaxValue;
00093 B = b / (float)Byte.MaxValue;
00094 A = a / (float)Byte.MaxValue;
00095 }
00096
00101 [Obsolete("Use new Color4(r, g, b, a) instead.")]
00102 public Color4(System.Drawing.Color color)
00103 : this(color.R, color.G, color.B, color.A)
00104 { }
00105
00106 #endregion
00107
00108 #region Public Members
00109
00115 public int ToArgb()
00116 {
00117 uint value =
00118 (uint)(A * Byte.MaxValue) << 24 |
00119 (uint)(R * Byte.MaxValue) << 16 |
00120 (uint)(G * Byte.MaxValue) << 8 |
00121 (uint)(B * Byte.MaxValue);
00122
00123 return unchecked((int)value);
00124 }
00125
00132 public static bool operator ==(Color4 left, Color4 right)
00133 {
00134 return left.Equals(right);
00135 }
00136
00143 public static bool operator !=(Color4 left, Color4 right)
00144 {
00145 return !left.Equals(right);
00146 }
00147
00153 public static implicit operator Color4(System.Drawing.Color color)
00154 {
00155 return new Color4(color.R, color.G, color.B, color.A);
00156 }
00157
00163 public static explicit operator System.Drawing.Color(Color4 color)
00164 {
00165 return System.Drawing.Color.FromArgb(
00166 (int)(color.A * Byte.MaxValue),
00167 (int)(color.R * Byte.MaxValue),
00168 (int)(color.G * Byte.MaxValue),
00169 (int)(color.B * Byte.MaxValue));
00170 }
00171
00177 public override bool Equals(object obj)
00178 {
00179 if (!(obj is Color4))
00180 return false;
00181
00182 return Equals((Color4)obj);
00183 }
00184
00189 public override int GetHashCode()
00190 {
00191 return ToArgb();
00192 }
00193
00198 public override string ToString()
00199 {
00200 return String.Format("{{(R, G, B, A) = ({0}, {1}, {2}, {3})}}", R.ToString(), G.ToString(), B.ToString(), A.ToString());
00201 }
00202
00203 #region System colors
00204
00208 public static Color4 Transparent { get { return new Color4(255, 255, 255, 0); } }
00209
00213 public static Color4 AliceBlue { get { return new Color4(240, 248, 255, 255); } }
00214
00218 public static Color4 AntiqueWhite { get { return new Color4(250, 235, 215, 255); } }
00219
00223 public static Color4 Aqua { get { return new Color4(0, 255, 255, 255); } }
00224
00228 public static Color4 Aquamarine { get { return new Color4(127, 255, 212, 255); } }
00229
00233 public static Color4 Azure { get { return new Color4(240, 255, 255, 255); } }
00234
00238 public static Color4 Beige { get { return new Color4(245, 245, 220, 255); } }
00239
00243 public static Color4 Bisque { get { return new Color4(255, 228, 196, 255); } }
00244
00248 public static Color4 Black { get { return new Color4(0, 0, 0, 255); } }
00249
00253 public static Color4 BlanchedAlmond { get { return new Color4(255, 235, 205, 255); } }
00254
00258 public static Color4 Blue { get { return new Color4(0, 0, 255, 255); } }
00259
00263 public static Color4 BlueViolet { get { return new Color4(138, 43, 226, 255); } }
00264
00268 public static Color4 Brown { get { return new Color4(165, 42, 42, 255); } }
00269
00273 public static Color4 BurlyWood { get { return new Color4(222, 184, 135, 255); } }
00274
00278 public static Color4 CadetBlue { get { return new Color4(95, 158, 160, 255); } }
00279
00283 public static Color4 Chartreuse { get { return new Color4(127, 255, 0, 255); } }
00284
00288 public static Color4 Chocolate { get { return new Color4(210, 105, 30, 255); } }
00289
00293 public static Color4 Coral { get { return new Color4(255, 127, 80, 255); } }
00294
00298 public static Color4 CornflowerBlue { get { return new Color4(100, 149, 237, 255); } }
00299
00303 public static Color4 Cornsilk { get { return new Color4(255, 248, 220, 255); } }
00304
00308 public static Color4 Crimson { get { return new Color4(220, 20, 60, 255); } }
00309
00313 public static Color4 Cyan { get { return new Color4(0, 255, 255, 255); } }
00314
00318 public static Color4 DarkBlue { get { return new Color4(0, 0, 139, 255); } }
00319
00323 public static Color4 DarkCyan { get { return new Color4(0, 139, 139, 255); } }
00324
00328 public static Color4 DarkGoldenrod { get { return new Color4(184, 134, 11, 255); } }
00329
00333 public static Color4 DarkGray { get { return new Color4(169, 169, 169, 255); } }
00334
00338 public static Color4 DarkGreen { get { return new Color4(0, 100, 0, 255); } }
00339
00343 public static Color4 DarkKhaki { get { return new Color4(189, 183, 107, 255); } }
00344
00348 public static Color4 DarkMagenta { get { return new Color4(139, 0, 139, 255); } }
00349
00353 public static Color4 DarkOliveGreen { get { return new Color4(85, 107, 47, 255); } }
00354
00358 public static Color4 DarkOrange { get { return new Color4(255, 140, 0, 255); } }
00359
00363 public static Color4 DarkOrchid { get { return new Color4(153, 50, 204, 255); } }
00364
00368 public static Color4 DarkRed { get { return new Color4(139, 0, 0, 255); } }
00369
00373 public static Color4 DarkSalmon { get { return new Color4(233, 150, 122, 255); } }
00374
00378 public static Color4 DarkSeaGreen { get { return new Color4(143, 188, 139, 255); } }
00379
00383 public static Color4 DarkSlateBlue { get { return new Color4(72, 61, 139, 255); } }
00384
00388 public static Color4 DarkSlateGray { get { return new Color4(47, 79, 79, 255); } }
00389
00393 public static Color4 DarkTurquoise { get { return new Color4(0, 206, 209, 255); } }
00394
00398 public static Color4 DarkViolet { get { return new Color4(148, 0, 211, 255); } }
00399
00403 public static Color4 DeepPink { get { return new Color4(255, 20, 147, 255); } }
00404
00408 public static Color4 DeepSkyBlue { get { return new Color4(0, 191, 255, 255); } }
00409
00413 public static Color4 DimGray { get { return new Color4(105, 105, 105, 255); } }
00414
00418 public static Color4 DodgerBlue { get { return new Color4(30, 144, 255, 255); } }
00419
00423 public static Color4 Firebrick { get { return new Color4(178, 34, 34, 255); } }
00424
00428 public static Color4 FloralWhite { get { return new Color4(255, 250, 240, 255); } }
00429
00433 public static Color4 ForestGreen { get { return new Color4(34, 139, 34, 255); } }
00434
00438 public static Color4 Fuchsia { get { return new Color4(255, 0, 255, 255); } }
00439
00443 public static Color4 Gainsboro { get { return new Color4(220, 220, 220, 255); } }
00444
00448 public static Color4 GhostWhite { get { return new Color4(248, 248, 255, 255); } }
00449
00453 public static Color4 Gold { get { return new Color4(255, 215, 0, 255); } }
00454
00458 public static Color4 Goldenrod { get { return new Color4(218, 165, 32, 255); } }
00459
00463 public static Color4 Gray { get { return new Color4(128, 128, 128, 255); } }
00464
00468 public static Color4 Green { get { return new Color4(0, 128, 0, 255); } }
00469
00473 public static Color4 GreenYellow { get { return new Color4(173, 255, 47, 255); } }
00474
00478 public static Color4 Honeydew { get { return new Color4(240, 255, 240, 255); } }
00479
00483 public static Color4 HotPink { get { return new Color4(255, 105, 180, 255); } }
00484
00488 public static Color4 IndianRed { get { return new Color4(205, 92, 92, 255); } }
00489
00493 public static Color4 Indigo { get { return new Color4(75, 0, 130, 255); } }
00494
00498 public static Color4 Ivory { get { return new Color4(255, 255, 240, 255); } }
00499
00503 public static Color4 Khaki { get { return new Color4(240, 230, 140, 255); } }
00504
00508 public static Color4 Lavender { get { return new Color4(230, 230, 250, 255); } }
00509
00513 public static Color4 LavenderBlush { get { return new Color4(255, 240, 245, 255); } }
00514
00518 public static Color4 LawnGreen { get { return new Color4(124, 252, 0, 255); } }
00519
00523 public static Color4 LemonChiffon { get { return new Color4(255, 250, 205, 255); } }
00524
00528 public static Color4 LightBlue { get { return new Color4(173, 216, 230, 255); } }
00529
00533 public static Color4 LightCoral { get { return new Color4(240, 128, 128, 255); } }
00534
00538 public static Color4 LightCyan { get { return new Color4(224, 255, 255, 255); } }
00539
00543 public static Color4 LightGoldenrodYellow { get { return new Color4(250, 250, 210, 255); } }
00544
00548 public static Color4 LightGreen { get { return new Color4(144, 238, 144, 255); } }
00549
00553 public static Color4 LightGray { get { return new Color4(211, 211, 211, 255); } }
00554
00558 public static Color4 LightPink { get { return new Color4(255, 182, 193, 255); } }
00559
00563 public static Color4 LightSalmon { get { return new Color4(255, 160, 122, 255); } }
00564
00568 public static Color4 LightSeaGreen { get { return new Color4(32, 178, 170, 255); } }
00569
00573 public static Color4 LightSkyBlue { get { return new Color4(135, 206, 250, 255); } }
00574
00578 public static Color4 LightSlateGray { get { return new Color4(119, 136, 153, 255); } }
00579
00583 public static Color4 LightSteelBlue { get { return new Color4(176, 196, 222, 255); } }
00584
00588 public static Color4 LightYellow { get { return new Color4(255, 255, 224, 255); } }
00589
00593 public static Color4 Lime { get { return new Color4(0, 255, 0, 255); } }
00594
00598 public static Color4 LimeGreen { get { return new Color4(50, 205, 50, 255); } }
00599
00603 public static Color4 Linen { get { return new Color4(250, 240, 230, 255); } }
00604
00608 public static Color4 Magenta { get { return new Color4(255, 0, 255, 255); } }
00609
00613 public static Color4 Maroon { get { return new Color4(128, 0, 0, 255); } }
00614
00618 public static Color4 MediumAquamarine { get { return new Color4(102, 205, 170, 255); } }
00619
00623 public static Color4 MediumBlue { get { return new Color4(0, 0, 205, 255); } }
00624
00628 public static Color4 MediumOrchid { get { return new Color4(186, 85, 211, 255); } }
00629
00633 public static Color4 MediumPurple { get { return new Color4(147, 112, 219, 255); } }
00634
00638 public static Color4 MediumSeaGreen { get { return new Color4(60, 179, 113, 255); } }
00639
00643 public static Color4 MediumSlateBlue { get { return new Color4(123, 104, 238, 255); } }
00644
00648 public static Color4 MediumSpringGreen { get { return new Color4(0, 250, 154, 255); } }
00649
00653 public static Color4 MediumTurquoise { get { return new Color4(72, 209, 204, 255); } }
00654
00658 public static Color4 MediumVioletRed { get { return new Color4(199, 21, 133, 255); } }
00659
00663 public static Color4 MidnightBlue { get { return new Color4(25, 25, 112, 255); } }
00664
00668 public static Color4 MintCream { get { return new Color4(245, 255, 250, 255); } }
00669
00673 public static Color4 MistyRose { get { return new Color4(255, 228, 225, 255); } }
00674
00678 public static Color4 Moccasin { get { return new Color4(255, 228, 181, 255); } }
00679
00683 public static Color4 NavajoWhite { get { return new Color4(255, 222, 173, 255); } }
00684
00688 public static Color4 Navy { get { return new Color4(0, 0, 128, 255); } }
00689
00693 public static Color4 OldLace { get { return new Color4(253, 245, 230, 255); } }
00694
00698 public static Color4 Olive { get { return new Color4(128, 128, 0, 255); } }
00699
00703 public static Color4 OliveDrab { get { return new Color4(107, 142, 35, 255); } }
00704
00708 public static Color4 Orange { get { return new Color4(255, 165, 0, 255); } }
00709
00713 public static Color4 OrangeRed { get { return new Color4(255, 69, 0, 255); } }
00714
00718 public static Color4 Orchid { get { return new Color4(218, 112, 214, 255); } }
00719
00723 public static Color4 PaleGoldenrod { get { return new Color4(238, 232, 170, 255); } }
00724
00728 public static Color4 PaleGreen { get { return new Color4(152, 251, 152, 255); } }
00729
00733 public static Color4 PaleTurquoise { get { return new Color4(175, 238, 238, 255); } }
00734
00738 public static Color4 PaleVioletRed { get { return new Color4(219, 112, 147, 255); } }
00739
00743 public static Color4 PapayaWhip { get { return new Color4(255, 239, 213, 255); } }
00744
00748 public static Color4 PeachPuff { get { return new Color4(255, 218, 185, 255); } }
00749
00753 public static Color4 Peru { get { return new Color4(205, 133, 63, 255); } }
00754
00758 public static Color4 Pink { get { return new Color4(255, 192, 203, 255); } }
00759
00763 public static Color4 Plum { get { return new Color4(221, 160, 221, 255); } }
00764
00768 public static Color4 PowderBlue { get { return new Color4(176, 224, 230, 255); } }
00769
00773 public static Color4 Purple { get { return new Color4(128, 0, 128, 255); } }
00774
00778 public static Color4 Red { get { return new Color4(255, 0, 0, 255); } }
00779
00783 public static Color4 RosyBrown { get { return new Color4(188, 143, 143, 255); } }
00784
00788 public static Color4 RoyalBlue { get { return new Color4(65, 105, 225, 255); } }
00789
00793 public static Color4 SaddleBrown { get { return new Color4(139, 69, 19, 255); } }
00794
00798 public static Color4 Salmon { get { return new Color4(250, 128, 114, 255); } }
00799
00803 public static Color4 SandyBrown { get { return new Color4(244, 164, 96, 255); } }
00804
00808 public static Color4 SeaGreen { get { return new Color4(46, 139, 87, 255); } }
00809
00813 public static Color4 SeaShell { get { return new Color4(255, 245, 238, 255); } }
00814
00818 public static Color4 Sienna { get { return new Color4(160, 82, 45, 255); } }
00819
00823 public static Color4 Silver { get { return new Color4(192, 192, 192, 255); } }
00824
00828 public static Color4 SkyBlue { get { return new Color4(135, 206, 235, 255); } }
00829
00833 public static Color4 SlateBlue { get { return new Color4(106, 90, 205, 255); } }
00834
00838 public static Color4 SlateGray { get { return new Color4(112, 128, 144, 255); } }
00839
00843 public static Color4 Snow { get { return new Color4(255, 250, 250, 255); } }
00844
00848 public static Color4 SpringGreen { get { return new Color4(0, 255, 127, 255); } }
00849
00853 public static Color4 SteelBlue { get { return new Color4(70, 130, 180, 255); } }
00854
00858 public static Color4 Tan { get { return new Color4(210, 180, 140, 255); } }
00859
00863 public static Color4 Teal { get { return new Color4(0, 128, 128, 255); } }
00864
00868 public static Color4 Thistle { get { return new Color4(216, 191, 216, 255); } }
00869
00873 public static Color4 Tomato { get { return new Color4(255, 99, 71, 255); } }
00874
00878 public static Color4 Turquoise { get { return new Color4(64, 224, 208, 255); } }
00879
00883 public static Color4 Violet { get { return new Color4(238, 130, 238, 255); } }
00884
00888 public static Color4 Wheat { get { return new Color4(245, 222, 179, 255); } }
00889
00893 public static Color4 White { get { return new Color4(255, 255, 255, 255); } }
00894
00898 public static Color4 WhiteSmoke { get { return new Color4(245, 245, 245, 255); } }
00899
00903 public static Color4 Yellow { get { return new Color4(255, 255, 0, 255); } }
00904
00908 public static Color4 YellowGreen { get { return new Color4(154, 205, 50, 255); } }
00909
00910 #endregion
00911
00912 #endregion
00913
00914 #region IEquatable<Color4> Members
00915
00921 public bool Equals(Color4 other)
00922 {
00923 return
00924 this.R == other.R &&
00925 this.G == other.G &&
00926 this.B == other.B &&
00927 this.A == other.A;
00928 }
00929
00930 #endregion
00931 }
00932 }