1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 namespace System.Drawing 6 { 7 public static class Pens 8 { 9 private static readonly object s_transparentKey = new object(); 10 private static readonly object s_aliceBlueKey = new object(); 11 private static readonly object s_antiqueWhiteKey = new object(); 12 private static readonly object s_aquaKey = new object(); 13 private static readonly object s_aquamarineKey = new object(); 14 private static readonly object s_azureKey = new object(); 15 private static readonly object s_beigeKey = new object(); 16 private static readonly object s_bisqueKey = new object(); 17 private static readonly object s_blackKey = new object(); 18 private static readonly object s_blanchedAlmondKey = new object(); 19 private static readonly object s_blueKey = new object(); 20 private static readonly object s_blueVioletKey = new object(); 21 private static readonly object s_brownKey = new object(); 22 private static readonly object s_burlyWoodKey = new object(); 23 private static readonly object s_cadetBlueKey = new object(); 24 private static readonly object s_chartreuseKey = new object(); 25 private static readonly object s_chocolateKey = new object(); 26 private static readonly object s_coralKey = new object(); 27 private static readonly object s_cornflowerBlueKey = new object(); 28 private static readonly object s_cornsilkKey = new object(); 29 private static readonly object s_crimsonKey = new object(); 30 private static readonly object s_cyanKey = new object(); 31 private static readonly object s_darkBlueKey = new object(); 32 private static readonly object s_darkCyanKey = new object(); 33 private static readonly object s_darkGoldenrodKey = new object(); 34 private static readonly object s_darkGrayKey = new object(); 35 private static readonly object s_darkGreenKey = new object(); 36 private static readonly object s_darkKhakiKey = new object(); 37 private static readonly object s_darkMagentaKey = new object(); 38 private static readonly object s_darkOliveGreenKey = new object(); 39 private static readonly object s_darkOrangeKey = new object(); 40 private static readonly object s_darkOrchidKey = new object(); 41 private static readonly object s_darkRedKey = new object(); 42 private static readonly object s_darkSalmonKey = new object(); 43 private static readonly object s_darkSeaGreenKey = new object(); 44 private static readonly object s_darkSlateBlueKey = new object(); 45 private static readonly object s_darkSlateGrayKey = new object(); 46 private static readonly object s_darkTurquoiseKey = new object(); 47 private static readonly object s_darkVioletKey = new object(); 48 private static readonly object s_deepPinkKey = new object(); 49 private static readonly object s_deepSkyBlueKey = new object(); 50 private static readonly object s_dimGrayKey = new object(); 51 private static readonly object s_dodgerBlueKey = new object(); 52 private static readonly object s_firebrickKey = new object(); 53 private static readonly object s_floralWhiteKey = new object(); 54 private static readonly object s_forestGreenKey = new object(); 55 private static readonly object s_fuchsiaKey = new object(); 56 private static readonly object s_gainsboroKey = new object(); 57 private static readonly object s_ghostWhiteKey = new object(); 58 private static readonly object s_goldKey = new object(); 59 private static readonly object s_goldenrodKey = new object(); 60 private static readonly object s_grayKey = new object(); 61 private static readonly object s_greenKey = new object(); 62 private static readonly object s_greenYellowKey = new object(); 63 private static readonly object s_honeydewKey = new object(); 64 private static readonly object s_hotPinkKey = new object(); 65 private static readonly object s_indianRedKey = new object(); 66 private static readonly object s_indigoKey = new object(); 67 private static readonly object s_ivoryKey = new object(); 68 private static readonly object s_khakiKey = new object(); 69 private static readonly object s_lavenderKey = new object(); 70 private static readonly object s_lavenderBlushKey = new object(); 71 private static readonly object s_lawnGreenKey = new object(); 72 private static readonly object s_lemonChiffonKey = new object(); 73 private static readonly object s_lightBlueKey = new object(); 74 private static readonly object s_lightCoralKey = new object(); 75 private static readonly object s_lightCyanKey = new object(); 76 private static readonly object s_lightGoldenrodYellowKey = new object(); 77 private static readonly object s_lightGreenKey = new object(); 78 private static readonly object s_lightGrayKey = new object(); 79 private static readonly object s_lightPinkKey = new object(); 80 private static readonly object s_lightSalmonKey = new object(); 81 private static readonly object s_lightSeaGreenKey = new object(); 82 private static readonly object s_lightSkyBlueKey = new object(); 83 private static readonly object s_lightSlateGrayKey = new object(); 84 private static readonly object s_lightSteelBlueKey = new object(); 85 private static readonly object s_lightYellowKey = new object(); 86 private static readonly object s_limeKey = new object(); 87 private static readonly object s_limeGreenKey = new object(); 88 private static readonly object s_linenKey = new object(); 89 private static readonly object s_magentaKey = new object(); 90 private static readonly object s_maroonKey = new object(); 91 private static readonly object s_mediumAquamarineKey = new object(); 92 private static readonly object s_mediumBlueKey = new object(); 93 private static readonly object s_mediumOrchidKey = new object(); 94 private static readonly object s_mediumPurpleKey = new object(); 95 private static readonly object s_mediumSeaGreenKey = new object(); 96 private static readonly object s_mediumSlateBlueKey = new object(); 97 private static readonly object s_mediumSpringGreenKey = new object(); 98 private static readonly object s_mediumTurquoiseKey = new object(); 99 private static readonly object s_mediumVioletRedKey = new object(); 100 private static readonly object s_midnightBlueKey = new object(); 101 private static readonly object s_mintCreamKey = new object(); 102 private static readonly object s_mistyRoseKey = new object(); 103 private static readonly object s_moccasinKey = new object(); 104 private static readonly object s_navajoWhiteKey = new object(); 105 private static readonly object s_navyKey = new object(); 106 private static readonly object s_oldLaceKey = new object(); 107 private static readonly object s_oliveKey = new object(); 108 private static readonly object s_oliveDrabKey = new object(); 109 private static readonly object s_orangeKey = new object(); 110 private static readonly object s_orangeRedKey = new object(); 111 private static readonly object s_orchidKey = new object(); 112 private static readonly object s_paleGoldenrodKey = new object(); 113 private static readonly object s_paleGreenKey = new object(); 114 private static readonly object s_paleTurquoiseKey = new object(); 115 private static readonly object s_paleVioletRedKey = new object(); 116 private static readonly object s_papayaWhipKey = new object(); 117 private static readonly object s_peachPuffKey = new object(); 118 private static readonly object s_peruKey = new object(); 119 private static readonly object s_pinkKey = new object(); 120 private static readonly object s_plumKey = new object(); 121 private static readonly object s_powderBlueKey = new object(); 122 private static readonly object s_purpleKey = new object(); 123 private static readonly object s_redKey = new object(); 124 private static readonly object s_rosyBrownKey = new object(); 125 private static readonly object s_royalBlueKey = new object(); 126 private static readonly object s_saddleBrownKey = new object(); 127 private static readonly object s_salmonKey = new object(); 128 private static readonly object s_sandyBrownKey = new object(); 129 private static readonly object s_seaGreenKey = new object(); 130 private static readonly object s_seaShellKey = new object(); 131 private static readonly object s_siennaKey = new object(); 132 private static readonly object s_silverKey = new object(); 133 private static readonly object s_skyBlueKey = new object(); 134 private static readonly object s_slateBlueKey = new object(); 135 private static readonly object s_slateGrayKey = new object(); 136 private static readonly object s_snowKey = new object(); 137 private static readonly object s_springGreenKey = new object(); 138 private static readonly object s_steelBlueKey = new object(); 139 private static readonly object s_tanKey = new object(); 140 private static readonly object s_tealKey = new object(); 141 private static readonly object s_thistleKey = new object(); 142 private static readonly object s_tomatoKey = new object(); 143 private static readonly object s_turquoiseKey = new object(); 144 private static readonly object s_violetKey = new object(); 145 private static readonly object s_wheatKey = new object(); 146 private static readonly object s_whiteKey = new object(); 147 private static readonly object s_whiteSmokeKey = new object(); 148 private static readonly object s_yellowKey = new object(); 149 private static readonly object s_yellowGreenKey = new object(); 150 151 public static Pen Transparent => GetPen(s_transparentKey, Color.Transparent); 152 153 public static Pen AliceBlue => GetPen(s_aliceBlueKey, Color.AliceBlue); 154 public static Pen AntiqueWhite => GetPen(s_antiqueWhiteKey, Color.AntiqueWhite); 155 public static Pen Aqua => GetPen(s_aquaKey, Color.Aqua); 156 public static Pen Aquamarine => GetPen(s_aquamarineKey, Color.Aquamarine); 157 public static Pen Azure => GetPen(s_azureKey, Color.Azure); 158 159 public static Pen Beige => GetPen(s_beigeKey, Color.Beige); 160 public static Pen Bisque => GetPen(s_bisqueKey, Color.Bisque); 161 public static Pen Black => GetPen(s_blackKey, Color.Black); 162 public static Pen BlanchedAlmond => GetPen(s_blanchedAlmondKey, Color.BlanchedAlmond); 163 public static Pen Blue => GetPen(s_blueKey, Color.Blue); 164 public static Pen BlueViolet => GetPen(s_blueVioletKey, Color.BlueViolet); 165 public static Pen Brown => GetPen(s_brownKey, Color.Brown); 166 public static Pen BurlyWood => GetPen(s_burlyWoodKey, Color.BurlyWood); 167 168 public static Pen CadetBlue => GetPen(s_cadetBlueKey, Color.CadetBlue); 169 public static Pen Chartreuse => GetPen(s_chartreuseKey, Color.Chartreuse); 170 public static Pen Chocolate => GetPen(s_chocolateKey, Color.Chocolate); 171 public static Pen Coral => GetPen(s_coralKey, Color.Coral); 172 public static Pen CornflowerBlue => GetPen(s_cornflowerBlueKey, Color.CornflowerBlue); 173 public static Pen Cornsilk => GetPen(s_cornsilkKey, Color.Cornsilk); 174 public static Pen Crimson => GetPen(s_crimsonKey, Color.Crimson); 175 public static Pen Cyan => GetPen(s_cyanKey, Color.Cyan); 176 177 public static Pen DarkBlue => GetPen(s_darkBlueKey, Color.DarkBlue); 178 public static Pen DarkCyan => GetPen(s_darkCyanKey, Color.DarkCyan); 179 public static Pen DarkGoldenrod => GetPen(s_darkGoldenrodKey, Color.DarkGoldenrod); 180 public static Pen DarkGray => GetPen(s_darkGrayKey, Color.DarkGray); 181 public static Pen DarkGreen => GetPen(s_darkGreenKey, Color.DarkGreen); 182 public static Pen DarkKhaki => GetPen(s_darkKhakiKey, Color.DarkKhaki); 183 public static Pen DarkMagenta => GetPen(s_darkMagentaKey, Color.DarkMagenta); 184 public static Pen DarkOliveGreen => GetPen(s_darkOliveGreenKey, Color.DarkOliveGreen); 185 public static Pen DarkOrange => GetPen(s_darkOrangeKey, Color.DarkOrange); 186 public static Pen DarkOrchid => GetPen(s_darkOrchidKey, Color.DarkOrchid); 187 public static Pen DarkRed => GetPen(s_darkRedKey, Color.DarkRed); 188 public static Pen DarkSalmon => GetPen(s_darkSalmonKey, Color.DarkSalmon); 189 public static Pen DarkSeaGreen => GetPen(s_darkSeaGreenKey, Color.DarkSeaGreen); 190 public static Pen DarkSlateBlue => GetPen(s_darkSlateBlueKey, Color.DarkSlateBlue); 191 public static Pen DarkSlateGray => GetPen(s_darkSlateGrayKey, Color.DarkSlateGray); 192 public static Pen DarkTurquoise => GetPen(s_darkTurquoiseKey, Color.DarkTurquoise); 193 public static Pen DarkViolet => GetPen(s_darkVioletKey, Color.DarkViolet); 194 public static Pen DeepPink => GetPen(s_deepPinkKey, Color.DeepPink); 195 public static Pen DeepSkyBlue => GetPen(s_deepSkyBlueKey, Color.DeepSkyBlue); 196 public static Pen DimGray => GetPen(s_dimGrayKey, Color.DimGray); 197 public static Pen DodgerBlue => GetPen(s_dodgerBlueKey, Color.DodgerBlue); 198 199 public static Pen Firebrick => GetPen(s_firebrickKey, Color.Firebrick); 200 public static Pen FloralWhite => GetPen(s_floralWhiteKey, Color.FloralWhite); 201 public static Pen ForestGreen => GetPen(s_forestGreenKey, Color.ForestGreen); 202 public static Pen Fuchsia => GetPen(s_fuchsiaKey, Color.Fuchsia); 203 204 public static Pen Gainsboro => GetPen(s_gainsboroKey, Color.Gainsboro); 205 public static Pen GhostWhite => GetPen(s_ghostWhiteKey, Color.GhostWhite); 206 public static Pen Gold => GetPen(s_goldKey, Color.Gold); 207 public static Pen Goldenrod => GetPen(s_goldenrodKey, Color.Goldenrod); 208 public static Pen Gray => GetPen(s_grayKey, Color.Gray); 209 public static Pen Green => GetPen(s_greenKey, Color.Green); 210 public static Pen GreenYellow => GetPen(s_greenYellowKey, Color.GreenYellow); 211 212 public static Pen Honeydew => GetPen(s_honeydewKey, Color.Honeydew); 213 public static Pen HotPink => GetPen(s_hotPinkKey, Color.HotPink); 214 215 public static Pen IndianRed => GetPen(s_indianRedKey, Color.IndianRed); 216 public static Pen Indigo => GetPen(s_indigoKey, Color.Indigo); 217 public static Pen Ivory => GetPen(s_ivoryKey, Color.Ivory); 218 219 public static Pen Khaki => GetPen(s_khakiKey, Color.Khaki); 220 221 public static Pen Lavender => GetPen(s_lavenderKey, Color.Lavender); 222 public static Pen LavenderBlush => GetPen(s_lavenderBlushKey, Color.LavenderBlush); 223 public static Pen LawnGreen => GetPen(s_lawnGreenKey, Color.LawnGreen); 224 public static Pen LemonChiffon => GetPen(s_lemonChiffonKey, Color.LemonChiffon); 225 public static Pen LightBlue => GetPen(s_lightBlueKey, Color.LightBlue); 226 public static Pen LightCoral => GetPen(s_lightCoralKey, Color.LightCoral); 227 public static Pen LightCyan => GetPen(s_lightCyanKey, Color.LightCyan); 228 public static Pen LightGoldenrodYellow => GetPen(s_lightGoldenrodYellowKey, Color.LightGoldenrodYellow); 229 public static Pen LightGreen => GetPen(s_lightGreenKey, Color.LightGreen); 230 public static Pen LightGray => GetPen(s_lightGrayKey, Color.LightGray); 231 public static Pen LightPink => GetPen(s_lightPinkKey, Color.LightPink); 232 public static Pen LightSalmon => GetPen(s_lightSalmonKey, Color.LightSalmon); 233 public static Pen LightSeaGreen => GetPen(s_lightSeaGreenKey, Color.LightSeaGreen); 234 public static Pen LightSkyBlue => GetPen(s_lightSkyBlueKey, Color.LightSkyBlue); 235 public static Pen LightSlateGray => GetPen(s_lightSlateGrayKey, Color.LightSlateGray); 236 public static Pen LightSteelBlue => GetPen(s_lightSteelBlueKey, Color.LightSteelBlue); 237 public static Pen LightYellow => GetPen(s_lightYellowKey, Color.LightYellow); 238 public static Pen Lime => GetPen(s_limeKey, Color.Lime); 239 public static Pen LimeGreen => GetPen(s_limeGreenKey, Color.LimeGreen); 240 public static Pen Linen => GetPen(s_linenKey, Color.Linen); 241 242 public static Pen Magenta => GetPen(s_magentaKey, Color.Magenta); 243 public static Pen Maroon => GetPen(s_maroonKey, Color.Maroon); 244 public static Pen MediumAquamarine => GetPen(s_mediumAquamarineKey, Color.MediumAquamarine); 245 public static Pen MediumBlue => GetPen(s_mediumBlueKey, Color.MediumBlue); 246 public static Pen MediumOrchid => GetPen(s_mediumOrchidKey, Color.MediumOrchid); 247 public static Pen MediumPurple => GetPen(s_mediumPurpleKey, Color.MediumPurple); 248 public static Pen MediumSeaGreen => GetPen(s_mediumSeaGreenKey, Color.MediumSeaGreen); 249 public static Pen MediumSlateBlue => GetPen(s_mediumSlateBlueKey, Color.MediumSlateBlue); 250 public static Pen MediumSpringGreen => GetPen(s_mediumSpringGreenKey, Color.MediumSpringGreen); 251 public static Pen MediumTurquoise => GetPen(s_mediumTurquoiseKey, Color.MediumTurquoise); 252 public static Pen MediumVioletRed => GetPen(s_mediumVioletRedKey, Color.MediumVioletRed); 253 public static Pen MidnightBlue => GetPen(s_midnightBlueKey, Color.MidnightBlue); 254 public static Pen MintCream => GetPen(s_mintCreamKey, Color.MintCream); 255 public static Pen MistyRose => GetPen(s_mistyRoseKey, Color.MistyRose); 256 public static Pen Moccasin => GetPen(s_moccasinKey, Color.Moccasin); 257 258 public static Pen NavajoWhite => GetPen(s_navajoWhiteKey, Color.NavajoWhite); 259 public static Pen Navy => GetPen(s_navyKey, Color.Navy); 260 261 public static Pen OldLace => GetPen(s_oldLaceKey, Color.OldLace); 262 public static Pen Olive => GetPen(s_oliveKey, Color.Olive); 263 public static Pen OliveDrab => GetPen(s_oliveDrabKey, Color.OliveDrab); 264 public static Pen Orange => GetPen(s_orangeKey, Color.Orange); 265 public static Pen OrangeRed => GetPen(s_orangeRedKey, Color.OrangeRed); 266 public static Pen Orchid => GetPen(s_orchidKey, Color.Orchid); 267 268 public static Pen PaleGoldenrod => GetPen(s_paleGoldenrodKey, Color.PaleGoldenrod); 269 public static Pen PaleGreen => GetPen(s_paleGreenKey, Color.PaleGreen); 270 public static Pen PaleTurquoise => GetPen(s_paleTurquoiseKey, Color.PaleTurquoise); 271 public static Pen PaleVioletRed => GetPen(s_paleVioletRedKey, Color.PaleVioletRed); 272 public static Pen PapayaWhip => GetPen(s_papayaWhipKey, Color.PapayaWhip); 273 public static Pen PeachPuff => GetPen(s_peachPuffKey, Color.PeachPuff); 274 public static Pen Peru => GetPen(s_peruKey, Color.Peru); 275 public static Pen Pink => GetPen(s_pinkKey, Color.Pink); 276 public static Pen Plum => GetPen(s_plumKey, Color.Plum); 277 public static Pen PowderBlue => GetPen(s_powderBlueKey, Color.PowderBlue); 278 public static Pen Purple => GetPen(s_purpleKey, Color.Purple); 279 280 public static Pen Red => GetPen(s_redKey, Color.Red); 281 public static Pen RosyBrown => GetPen(s_rosyBrownKey, Color.RosyBrown); 282 public static Pen RoyalBlue => GetPen(s_royalBlueKey, Color.RoyalBlue); 283 284 public static Pen SaddleBrown => GetPen(s_saddleBrownKey, Color.SaddleBrown); 285 public static Pen Salmon => GetPen(s_salmonKey, Color.Salmon); 286 public static Pen SandyBrown => GetPen(s_sandyBrownKey, Color.SandyBrown); 287 public static Pen SeaGreen => GetPen(s_seaGreenKey, Color.SeaGreen); 288 public static Pen SeaShell => GetPen(s_seaShellKey, Color.SeaShell); 289 public static Pen Sienna => GetPen(s_siennaKey, Color.Sienna); 290 public static Pen Silver => GetPen(s_silverKey, Color.Silver); 291 public static Pen SkyBlue => GetPen(s_skyBlueKey, Color.SkyBlue); 292 public static Pen SlateBlue => GetPen(s_slateBlueKey, Color.SlateBlue); 293 public static Pen SlateGray => GetPen(s_slateGrayKey, Color.SlateGray); 294 public static Pen Snow => GetPen(s_snowKey, Color.Snow); 295 public static Pen SpringGreen => GetPen(s_springGreenKey, Color.SpringGreen); 296 public static Pen SteelBlue => GetPen(s_steelBlueKey, Color.SteelBlue); 297 298 public static Pen Tan => GetPen(s_tanKey, Color.Tan); 299 public static Pen Teal => GetPen(s_tealKey, Color.Teal); 300 public static Pen Thistle => GetPen(s_thistleKey, Color.Thistle); 301 public static Pen Tomato => GetPen(s_tomatoKey, Color.Tomato); 302 public static Pen Turquoise => GetPen(s_turquoiseKey, Color.Turquoise); 303 304 public static Pen Violet => GetPen(s_violetKey, Color.Violet); 305 306 public static Pen Wheat => GetPen(s_wheatKey, Color.Wheat); 307 public static Pen White => GetPen(s_whiteKey, Color.White); 308 public static Pen WhiteSmoke => GetPen(s_whiteSmokeKey, Color.WhiteSmoke); 309 310 public static Pen Yellow => GetPen(s_yellowKey, Color.Yellow); 311 public static Pen YellowGreen => GetPen(s_yellowGreenKey, Color.YellowGreen); 312 GetPen(object key, Color color)313 private static Pen GetPen(object key, Color color) 314 { 315 Pen Pen = (Pen)SafeNativeMethods.Gdip.ThreadData[key]; 316 if (Pen == null) 317 { 318 Pen = new Pen(color, true); 319 SafeNativeMethods.Gdip.ThreadData[key] = Pen; 320 } 321 return Pen; 322 } 323 } 324 } 325