1// Copyright 2015 The TCell Authors 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use file except in compliance with the License. 5// You may obtain a copy of the license at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package tcell 16 17import "strconv" 18 19// Color represents a color. The low numeric values are the same as used 20// by ECMA-48, and beyond that XTerm. A 24-bit RGB value may be used by 21// adding in the ColorIsRGB flag. For Color names we use the W3C approved 22// color names. 23// 24// Note that on various terminals colors may be approximated however, or 25// not supported at all. If no suitable representation for a color is known, 26// the library will simply not set any color, deferring to whatever default 27// attributes the terminal uses. 28type Color int32 29 30const ( 31 // ColorDefault is used to leave the Color unchanged from whatever 32 // system or teminal default may exist. 33 ColorDefault Color = -1 34 35 // ColorIsRGB is used to indicate that the numeric value is not 36 // a known color constant, but rather an RGB value. The lower 37 // order 3 bytes are RGB. 38 ColorIsRGB Color = 1 << 24 39) 40 41// Note that the order of these options is important -- it follows the 42// definitions used by ECMA and XTerm. Hence any further named colors 43// must begin at a value not less than 256. 44const ( 45 ColorBlack Color = iota 46 ColorMaroon 47 ColorGreen 48 ColorOlive 49 ColorNavy 50 ColorPurple 51 ColorTeal 52 ColorSilver 53 ColorGray 54 ColorRed 55 ColorLime 56 ColorYellow 57 ColorBlue 58 ColorFuchsia 59 ColorAqua 60 ColorWhite 61 Color16 62 Color17 63 Color18 64 Color19 65 Color20 66 Color21 67 Color22 68 Color23 69 Color24 70 Color25 71 Color26 72 Color27 73 Color28 74 Color29 75 Color30 76 Color31 77 Color32 78 Color33 79 Color34 80 Color35 81 Color36 82 Color37 83 Color38 84 Color39 85 Color40 86 Color41 87 Color42 88 Color43 89 Color44 90 Color45 91 Color46 92 Color47 93 Color48 94 Color49 95 Color50 96 Color51 97 Color52 98 Color53 99 Color54 100 Color55 101 Color56 102 Color57 103 Color58 104 Color59 105 Color60 106 Color61 107 Color62 108 Color63 109 Color64 110 Color65 111 Color66 112 Color67 113 Color68 114 Color69 115 Color70 116 Color71 117 Color72 118 Color73 119 Color74 120 Color75 121 Color76 122 Color77 123 Color78 124 Color79 125 Color80 126 Color81 127 Color82 128 Color83 129 Color84 130 Color85 131 Color86 132 Color87 133 Color88 134 Color89 135 Color90 136 Color91 137 Color92 138 Color93 139 Color94 140 Color95 141 Color96 142 Color97 143 Color98 144 Color99 145 Color100 146 Color101 147 Color102 148 Color103 149 Color104 150 Color105 151 Color106 152 Color107 153 Color108 154 Color109 155 Color110 156 Color111 157 Color112 158 Color113 159 Color114 160 Color115 161 Color116 162 Color117 163 Color118 164 Color119 165 Color120 166 Color121 167 Color122 168 Color123 169 Color124 170 Color125 171 Color126 172 Color127 173 Color128 174 Color129 175 Color130 176 Color131 177 Color132 178 Color133 179 Color134 180 Color135 181 Color136 182 Color137 183 Color138 184 Color139 185 Color140 186 Color141 187 Color142 188 Color143 189 Color144 190 Color145 191 Color146 192 Color147 193 Color148 194 Color149 195 Color150 196 Color151 197 Color152 198 Color153 199 Color154 200 Color155 201 Color156 202 Color157 203 Color158 204 Color159 205 Color160 206 Color161 207 Color162 208 Color163 209 Color164 210 Color165 211 Color166 212 Color167 213 Color168 214 Color169 215 Color170 216 Color171 217 Color172 218 Color173 219 Color174 220 Color175 221 Color176 222 Color177 223 Color178 224 Color179 225 Color180 226 Color181 227 Color182 228 Color183 229 Color184 230 Color185 231 Color186 232 Color187 233 Color188 234 Color189 235 Color190 236 Color191 237 Color192 238 Color193 239 Color194 240 Color195 241 Color196 242 Color197 243 Color198 244 Color199 245 Color200 246 Color201 247 Color202 248 Color203 249 Color204 250 Color205 251 Color206 252 Color207 253 Color208 254 Color209 255 Color210 256 Color211 257 Color212 258 Color213 259 Color214 260 Color215 261 Color216 262 Color217 263 Color218 264 Color219 265 Color220 266 Color221 267 Color222 268 Color223 269 Color224 270 Color225 271 Color226 272 Color227 273 Color228 274 Color229 275 Color230 276 Color231 277 Color232 278 Color233 279 Color234 280 Color235 281 Color236 282 Color237 283 Color238 284 Color239 285 Color240 286 Color241 287 Color242 288 Color243 289 Color244 290 Color245 291 Color246 292 Color247 293 Color248 294 Color249 295 Color250 296 Color251 297 Color252 298 Color253 299 Color254 300 Color255 301 ColorAliceBlue 302 ColorAntiqueWhite 303 ColorAquaMarine 304 ColorAzure 305 ColorBeige 306 ColorBisque 307 ColorBlanchedAlmond 308 ColorBlueViolet 309 ColorBrown 310 ColorBurlyWood 311 ColorCadetBlue 312 ColorChartreuse 313 ColorChocolate 314 ColorCoral 315 ColorCornflowerBlue 316 ColorCornsilk 317 ColorCrimson 318 ColorDarkBlue 319 ColorDarkCyan 320 ColorDarkGoldenrod 321 ColorDarkGray 322 ColorDarkGreen 323 ColorDarkKhaki 324 ColorDarkMagenta 325 ColorDarkOliveGreen 326 ColorDarkOrange 327 ColorDarkOrchid 328 ColorDarkRed 329 ColorDarkSalmon 330 ColorDarkSeaGreen 331 ColorDarkSlateBlue 332 ColorDarkSlateGray 333 ColorDarkTurquoise 334 ColorDarkViolet 335 ColorDeepPink 336 ColorDeepSkyBlue 337 ColorDimGray 338 ColorDodgerBlue 339 ColorFireBrick 340 ColorFloralWhite 341 ColorForestGreen 342 ColorGainsboro 343 ColorGhostWhite 344 ColorGold 345 ColorGoldenrod 346 ColorGreenYellow 347 ColorHoneydew 348 ColorHotPink 349 ColorIndianRed 350 ColorIndigo 351 ColorIvory 352 ColorKhaki 353 ColorLavender 354 ColorLavenderBlush 355 ColorLawnGreen 356 ColorLemonChiffon 357 ColorLightBlue 358 ColorLightCoral 359 ColorLightCyan 360 ColorLightGoldenrodYellow 361 ColorLightGray 362 ColorLightGreen 363 ColorLightPink 364 ColorLightSalmon 365 ColorLightSeaGreen 366 ColorLightSkyBlue 367 ColorLightSlateGray 368 ColorLightSteelBlue 369 ColorLightYellow 370 ColorLimeGreen 371 ColorLinen 372 ColorMediumAquamarine 373 ColorMediumBlue 374 ColorMediumOrchid 375 ColorMediumPurple 376 ColorMediumSeaGreen 377 ColorMediumSlateBlue 378 ColorMediumSpringGreen 379 ColorMediumTurquoise 380 ColorMediumVioletRed 381 ColorMidnightBlue 382 ColorMintCream 383 ColorMistyRose 384 ColorMoccasin 385 ColorNavajoWhite 386 ColorOldLace 387 ColorOliveDrab 388 ColorOrange 389 ColorOrangeRed 390 ColorOrchid 391 ColorPaleGoldenrod 392 ColorPaleGreen 393 ColorPaleTurquoise 394 ColorPaleVioletRed 395 ColorPapayaWhip 396 ColorPeachPuff 397 ColorPeru 398 ColorPink 399 ColorPlum 400 ColorPowderBlue 401 ColorRebeccaPurple 402 ColorRosyBrown 403 ColorRoyalBlue 404 ColorSaddleBrown 405 ColorSalmon 406 ColorSandyBrown 407 ColorSeaGreen 408 ColorSeashell 409 ColorSienna 410 ColorSkyblue 411 ColorSlateBlue 412 ColorSlateGray 413 ColorSnow 414 ColorSpringGreen 415 ColorSteelBlue 416 ColorTan 417 ColorThistle 418 ColorTomato 419 ColorTurquoise 420 ColorViolet 421 ColorWheat 422 ColorWhiteSmoke 423 ColorYellowGreen 424) 425 426// These are aliases for the color gray, because some of us spell 427// it as grey. 428const ( 429 ColorGrey = ColorGray 430 ColorDimGrey = ColorDimGray 431 ColorDarkGrey = ColorDarkGray 432 ColorDarkSlateGrey = ColorDarkSlateGray 433 ColorLightGrey = ColorLightGray 434 ColorLightSlateGrey = ColorLightSlateGray 435 ColorSlateGrey = ColorSlateGray 436) 437 438// ColorValues maps color constants to their RGB values. 439var ColorValues = map[Color]int32{ 440 ColorBlack: 0x000000, 441 ColorMaroon: 0x800000, 442 ColorGreen: 0x008000, 443 ColorOlive: 0x808000, 444 ColorNavy: 0x000080, 445 ColorPurple: 0x800080, 446 ColorTeal: 0x008080, 447 ColorSilver: 0xC0C0C0, 448 ColorGray: 0x808080, 449 ColorRed: 0xFF0000, 450 ColorLime: 0x00FF00, 451 ColorYellow: 0xFFFF00, 452 ColorBlue: 0x0000FF, 453 ColorFuchsia: 0xFF00FF, 454 ColorAqua: 0x00FFFF, 455 ColorWhite: 0xFFFFFF, 456 Color16: 0x000000, // black 457 Color17: 0x00005F, 458 Color18: 0x000087, 459 Color19: 0x0000AF, 460 Color20: 0x0000D7, 461 Color21: 0x0000FF, // blue 462 Color22: 0x005F00, 463 Color23: 0x005F5F, 464 Color24: 0x005F87, 465 Color25: 0x005FAF, 466 Color26: 0x005FD7, 467 Color27: 0x005FFF, 468 Color28: 0x008700, 469 Color29: 0x00875F, 470 Color30: 0x008787, 471 Color31: 0x0087Af, 472 Color32: 0x0087D7, 473 Color33: 0x0087FF, 474 Color34: 0x00AF00, 475 Color35: 0x00AF5F, 476 Color36: 0x00AF87, 477 Color37: 0x00AFAF, 478 Color38: 0x00AFD7, 479 Color39: 0x00AFFF, 480 Color40: 0x00D700, 481 Color41: 0x00D75F, 482 Color42: 0x00D787, 483 Color43: 0x00D7AF, 484 Color44: 0x00D7D7, 485 Color45: 0x00D7FF, 486 Color46: 0x00FF00, // lime 487 Color47: 0x00FF5F, 488 Color48: 0x00FF87, 489 Color49: 0x00FFAF, 490 Color50: 0x00FFd7, 491 Color51: 0x00FFFF, // aqua 492 Color52: 0x5F0000, 493 Color53: 0x5F005F, 494 Color54: 0x5F0087, 495 Color55: 0x5F00AF, 496 Color56: 0x5F00D7, 497 Color57: 0x5F00FF, 498 Color58: 0x5F5F00, 499 Color59: 0x5F5F5F, 500 Color60: 0x5F5F87, 501 Color61: 0x5F5FAF, 502 Color62: 0x5F5FD7, 503 Color63: 0x5F5FFF, 504 Color64: 0x5F8700, 505 Color65: 0x5F875F, 506 Color66: 0x5F8787, 507 Color67: 0x5F87AF, 508 Color68: 0x5F87D7, 509 Color69: 0x5F87FF, 510 Color70: 0x5FAF00, 511 Color71: 0x5FAF5F, 512 Color72: 0x5FAF87, 513 Color73: 0x5FAFAF, 514 Color74: 0x5FAFD7, 515 Color75: 0x5FAFFF, 516 Color76: 0x5FD700, 517 Color77: 0x5FD75F, 518 Color78: 0x5FD787, 519 Color79: 0x5FD7AF, 520 Color80: 0x5FD7D7, 521 Color81: 0x5FD7FF, 522 Color82: 0x5FFF00, 523 Color83: 0x5FFF5F, 524 Color84: 0x5FFF87, 525 Color85: 0x5FFFAF, 526 Color86: 0x5FFFD7, 527 Color87: 0x5FFFFF, 528 Color88: 0x870000, 529 Color89: 0x87005F, 530 Color90: 0x870087, 531 Color91: 0x8700AF, 532 Color92: 0x8700D7, 533 Color93: 0x8700FF, 534 Color94: 0x875F00, 535 Color95: 0x875F5F, 536 Color96: 0x875F87, 537 Color97: 0x875FAF, 538 Color98: 0x875FD7, 539 Color99: 0x875FFF, 540 Color100: 0x878700, 541 Color101: 0x87875F, 542 Color102: 0x878787, 543 Color103: 0x8787AF, 544 Color104: 0x8787D7, 545 Color105: 0x8787FF, 546 Color106: 0x87AF00, 547 Color107: 0x87AF5F, 548 Color108: 0x87AF87, 549 Color109: 0x87AFAF, 550 Color110: 0x87AFD7, 551 Color111: 0x87AFFF, 552 Color112: 0x87D700, 553 Color113: 0x87D75F, 554 Color114: 0x87D787, 555 Color115: 0x87D7AF, 556 Color116: 0x87D7D7, 557 Color117: 0x87D7FF, 558 Color118: 0x87FF00, 559 Color119: 0x87FF5F, 560 Color120: 0x87FF87, 561 Color121: 0x87FFAF, 562 Color122: 0x87FFD7, 563 Color123: 0x87FFFF, 564 Color124: 0xAF0000, 565 Color125: 0xAF005F, 566 Color126: 0xAF0087, 567 Color127: 0xAF00AF, 568 Color128: 0xAF00D7, 569 Color129: 0xAF00FF, 570 Color130: 0xAF5F00, 571 Color131: 0xAF5F5F, 572 Color132: 0xAF5F87, 573 Color133: 0xAF5FAF, 574 Color134: 0xAF5FD7, 575 Color135: 0xAF5FFF, 576 Color136: 0xAF8700, 577 Color137: 0xAF875F, 578 Color138: 0xAF8787, 579 Color139: 0xAF87AF, 580 Color140: 0xAF87D7, 581 Color141: 0xAF87FF, 582 Color142: 0xAFAF00, 583 Color143: 0xAFAF5F, 584 Color144: 0xAFAF87, 585 Color145: 0xAFAFAF, 586 Color146: 0xAFAFD7, 587 Color147: 0xAFAFFF, 588 Color148: 0xAFD700, 589 Color149: 0xAFD75F, 590 Color150: 0xAFD787, 591 Color151: 0xAFD7AF, 592 Color152: 0xAFD7D7, 593 Color153: 0xAFD7FF, 594 Color154: 0xAFFF00, 595 Color155: 0xAFFF5F, 596 Color156: 0xAFFF87, 597 Color157: 0xAFFFAF, 598 Color158: 0xAFFFD7, 599 Color159: 0xAFFFFF, 600 Color160: 0xD70000, 601 Color161: 0xD7005F, 602 Color162: 0xD70087, 603 Color163: 0xD700AF, 604 Color164: 0xD700D7, 605 Color165: 0xD700FF, 606 Color166: 0xD75F00, 607 Color167: 0xD75F5F, 608 Color168: 0xD75F87, 609 Color169: 0xD75FAF, 610 Color170: 0xD75FD7, 611 Color171: 0xD75FFF, 612 Color172: 0xD78700, 613 Color173: 0xD7875F, 614 Color174: 0xD78787, 615 Color175: 0xD787AF, 616 Color176: 0xD787D7, 617 Color177: 0xD787FF, 618 Color178: 0xD7AF00, 619 Color179: 0xD7AF5F, 620 Color180: 0xD7AF87, 621 Color181: 0xD7AFAF, 622 Color182: 0xD7AFD7, 623 Color183: 0xD7AFFF, 624 Color184: 0xD7D700, 625 Color185: 0xD7D75F, 626 Color186: 0xD7D787, 627 Color187: 0xD7D7AF, 628 Color188: 0xD7D7D7, 629 Color189: 0xD7D7FF, 630 Color190: 0xD7FF00, 631 Color191: 0xD7FF5F, 632 Color192: 0xD7FF87, 633 Color193: 0xD7FFAF, 634 Color194: 0xD7FFD7, 635 Color195: 0xD7FFFF, 636 Color196: 0xFF0000, // red 637 Color197: 0xFF005F, 638 Color198: 0xFF0087, 639 Color199: 0xFF00AF, 640 Color200: 0xFF00D7, 641 Color201: 0xFF00FF, // fuchsia 642 Color202: 0xFF5F00, 643 Color203: 0xFF5F5F, 644 Color204: 0xFF5F87, 645 Color205: 0xFF5FAF, 646 Color206: 0xFF5FD7, 647 Color207: 0xFF5FFF, 648 Color208: 0xFF8700, 649 Color209: 0xFF875F, 650 Color210: 0xFF8787, 651 Color211: 0xFF87AF, 652 Color212: 0xFF87D7, 653 Color213: 0xFF87FF, 654 Color214: 0xFFAF00, 655 Color215: 0xFFAF5F, 656 Color216: 0xFFAF87, 657 Color217: 0xFFAFAF, 658 Color218: 0xFFAFD7, 659 Color219: 0xFFAFFF, 660 Color220: 0xFFD700, 661 Color221: 0xFFD75F, 662 Color222: 0xFFD787, 663 Color223: 0xFFD7AF, 664 Color224: 0xFFD7D7, 665 Color225: 0xFFD7FF, 666 Color226: 0xFFFF00, // yellow 667 Color227: 0xFFFF5F, 668 Color228: 0xFFFF87, 669 Color229: 0xFFFFAF, 670 Color230: 0xFFFFD7, 671 Color231: 0xFFFFFF, // white 672 Color232: 0x080808, 673 Color233: 0x121212, 674 Color234: 0x1C1C1C, 675 Color235: 0x262626, 676 Color236: 0x303030, 677 Color237: 0x3A3A3A, 678 Color238: 0x444444, 679 Color239: 0x4E4E4E, 680 Color240: 0x585858, 681 Color241: 0x626262, 682 Color242: 0x6C6C6C, 683 Color243: 0x767676, 684 Color244: 0x808080, // grey 685 Color245: 0x8A8A8A, 686 Color246: 0x949494, 687 Color247: 0x9E9E9E, 688 Color248: 0xA8A8A8, 689 Color249: 0xB2B2B2, 690 Color250: 0xBCBCBC, 691 Color251: 0xC6C6C6, 692 Color252: 0xD0D0D0, 693 Color253: 0xDADADA, 694 Color254: 0xE4E4E4, 695 Color255: 0xEEEEEE, 696 ColorAliceBlue: 0xF0F8FF, 697 ColorAntiqueWhite: 0xFAEBD7, 698 ColorAquaMarine: 0x7FFFD4, 699 ColorAzure: 0xF0FFFF, 700 ColorBeige: 0xF5F5DC, 701 ColorBisque: 0xFFE4C4, 702 ColorBlanchedAlmond: 0xFFEBCD, 703 ColorBlueViolet: 0x8A2BE2, 704 ColorBrown: 0xA52A2A, 705 ColorBurlyWood: 0xDEB887, 706 ColorCadetBlue: 0x5F9EA0, 707 ColorChartreuse: 0x7FFF00, 708 ColorChocolate: 0xD2691E, 709 ColorCoral: 0xFF7F50, 710 ColorCornflowerBlue: 0x6495ED, 711 ColorCornsilk: 0xFFF8DC, 712 ColorCrimson: 0xDC143C, 713 ColorDarkBlue: 0x00008B, 714 ColorDarkCyan: 0x008B8B, 715 ColorDarkGoldenrod: 0xB8860B, 716 ColorDarkGray: 0xA9A9A9, 717 ColorDarkGreen: 0x006400, 718 ColorDarkKhaki: 0xBDB76B, 719 ColorDarkMagenta: 0x8B008B, 720 ColorDarkOliveGreen: 0x556B2F, 721 ColorDarkOrange: 0xFF8C00, 722 ColorDarkOrchid: 0x9932CC, 723 ColorDarkRed: 0x8B0000, 724 ColorDarkSalmon: 0xE9967A, 725 ColorDarkSeaGreen: 0x8FBC8F, 726 ColorDarkSlateBlue: 0x483D8B, 727 ColorDarkSlateGray: 0x2F4F4F, 728 ColorDarkTurquoise: 0x00CED1, 729 ColorDarkViolet: 0x9400D3, 730 ColorDeepPink: 0xFF1493, 731 ColorDeepSkyBlue: 0x00BFFF, 732 ColorDimGray: 0x696969, 733 ColorDodgerBlue: 0x1E90FF, 734 ColorFireBrick: 0xB22222, 735 ColorFloralWhite: 0xFFFAF0, 736 ColorForestGreen: 0x228B22, 737 ColorGainsboro: 0xDCDCDC, 738 ColorGhostWhite: 0xF8F8FF, 739 ColorGold: 0xFFD700, 740 ColorGoldenrod: 0xDAA520, 741 ColorGreenYellow: 0xADFF2F, 742 ColorHoneydew: 0xF0FFF0, 743 ColorHotPink: 0xFF69B4, 744 ColorIndianRed: 0xCD5C5C, 745 ColorIndigo: 0x4B0082, 746 ColorIvory: 0xFFFFF0, 747 ColorKhaki: 0xF0E68C, 748 ColorLavender: 0xE6E6FA, 749 ColorLavenderBlush: 0xFFF0F5, 750 ColorLawnGreen: 0x7CFC00, 751 ColorLemonChiffon: 0xFFFACD, 752 ColorLightBlue: 0xADD8E6, 753 ColorLightCoral: 0xF08080, 754 ColorLightCyan: 0xE0FFFF, 755 ColorLightGoldenrodYellow: 0xFAFAD2, 756 ColorLightGray: 0xD3D3D3, 757 ColorLightGreen: 0x90EE90, 758 ColorLightPink: 0xFFB6C1, 759 ColorLightSalmon: 0xFFA07A, 760 ColorLightSeaGreen: 0x20B2AA, 761 ColorLightSkyBlue: 0x87CEFA, 762 ColorLightSlateGray: 0x778899, 763 ColorLightSteelBlue: 0xB0C4DE, 764 ColorLightYellow: 0xFFFFE0, 765 ColorLimeGreen: 0x32CD32, 766 ColorLinen: 0xFAF0E6, 767 ColorMediumAquamarine: 0x66CDAA, 768 ColorMediumBlue: 0x0000CD, 769 ColorMediumOrchid: 0xBA55D3, 770 ColorMediumPurple: 0x9370DB, 771 ColorMediumSeaGreen: 0x3CB371, 772 ColorMediumSlateBlue: 0x7B68EE, 773 ColorMediumSpringGreen: 0x00FA9A, 774 ColorMediumTurquoise: 0x48D1CC, 775 ColorMediumVioletRed: 0xC71585, 776 ColorMidnightBlue: 0x191970, 777 ColorMintCream: 0xF5FFFA, 778 ColorMistyRose: 0xFFE4E1, 779 ColorMoccasin: 0xFFE4B5, 780 ColorNavajoWhite: 0xFFDEAD, 781 ColorOldLace: 0xFDF5E6, 782 ColorOliveDrab: 0x6B8E23, 783 ColorOrange: 0xFFA500, 784 ColorOrangeRed: 0xFF4500, 785 ColorOrchid: 0xDA70D6, 786 ColorPaleGoldenrod: 0xEEE8AA, 787 ColorPaleGreen: 0x98FB98, 788 ColorPaleTurquoise: 0xAFEEEE, 789 ColorPaleVioletRed: 0xDB7093, 790 ColorPapayaWhip: 0xFFEFD5, 791 ColorPeachPuff: 0xFFDAB9, 792 ColorPeru: 0xCD853F, 793 ColorPink: 0xFFC0CB, 794 ColorPlum: 0xDDA0DD, 795 ColorPowderBlue: 0xB0E0E6, 796 ColorRebeccaPurple: 0x663399, 797 ColorRosyBrown: 0xBC8F8F, 798 ColorRoyalBlue: 0x4169E1, 799 ColorSaddleBrown: 0x8B4513, 800 ColorSalmon: 0xFA8072, 801 ColorSandyBrown: 0xF4A460, 802 ColorSeaGreen: 0x2E8B57, 803 ColorSeashell: 0xFFF5EE, 804 ColorSienna: 0xA0522D, 805 ColorSkyblue: 0x87CEEB, 806 ColorSlateBlue: 0x6A5ACD, 807 ColorSlateGray: 0x708090, 808 ColorSnow: 0xFFFAFA, 809 ColorSpringGreen: 0x00FF7F, 810 ColorSteelBlue: 0x4682B4, 811 ColorTan: 0xD2B48C, 812 ColorThistle: 0xD8BFD8, 813 ColorTomato: 0xFF6347, 814 ColorTurquoise: 0x40E0D0, 815 ColorViolet: 0xEE82EE, 816 ColorWheat: 0xF5DEB3, 817 ColorWhiteSmoke: 0xF5F5F5, 818 ColorYellowGreen: 0x9ACD32, 819} 820 821// ColorNames holds the written names of colors. Useful to present a list of 822// recognized named colors. 823var ColorNames = map[string]Color{ 824 "black": ColorBlack, 825 "maroon": ColorMaroon, 826 "green": ColorGreen, 827 "olive": ColorOlive, 828 "navy": ColorNavy, 829 "purple": ColorPurple, 830 "teal": ColorTeal, 831 "silver": ColorSilver, 832 "gray": ColorGray, 833 "red": ColorRed, 834 "lime": ColorLime, 835 "yellow": ColorYellow, 836 "blue": ColorBlue, 837 "fuchsia": ColorFuchsia, 838 "aqua": ColorAqua, 839 "white": ColorWhite, 840 "aliceblue": ColorAliceBlue, 841 "antiquewhite": ColorAntiqueWhite, 842 "aquamarine": ColorAquaMarine, 843 "azure": ColorAzure, 844 "beige": ColorBeige, 845 "bisque": ColorBisque, 846 "blanchedalmond": ColorBlanchedAlmond, 847 "blueviolet": ColorBlueViolet, 848 "brown": ColorBrown, 849 "burlywood": ColorBurlyWood, 850 "cadetblue": ColorCadetBlue, 851 "chartreuse": ColorChartreuse, 852 "chocolate": ColorChocolate, 853 "coral": ColorCoral, 854 "cornflowerblue": ColorCornflowerBlue, 855 "cornsilk": ColorCornsilk, 856 "crimson": ColorCrimson, 857 "darkblue": ColorDarkBlue, 858 "darkcyan": ColorDarkCyan, 859 "darkgoldenrod": ColorDarkGoldenrod, 860 "darkgray": ColorDarkGray, 861 "darkgreen": ColorDarkGreen, 862 "darkkhaki": ColorDarkKhaki, 863 "darkmagenta": ColorDarkMagenta, 864 "darkolivegreen": ColorDarkOliveGreen, 865 "darkorange": ColorDarkOrange, 866 "darkorchid": ColorDarkOrchid, 867 "darkred": ColorDarkRed, 868 "darksalmon": ColorDarkSalmon, 869 "darkseagreen": ColorDarkSeaGreen, 870 "darkslateblue": ColorDarkSlateBlue, 871 "darkslategray": ColorDarkSlateGray, 872 "darkturquoise": ColorDarkTurquoise, 873 "darkviolet": ColorDarkViolet, 874 "deeppink": ColorDeepPink, 875 "deepskyblue": ColorDeepSkyBlue, 876 "dimgray": ColorDimGray, 877 "dodgerblue": ColorDodgerBlue, 878 "firebrick": ColorFireBrick, 879 "floralwhite": ColorFloralWhite, 880 "forestgreen": ColorForestGreen, 881 "gainsboro": ColorGainsboro, 882 "ghostwhite": ColorGhostWhite, 883 "gold": ColorGold, 884 "goldenrod": ColorGoldenrod, 885 "greenyellow": ColorGreenYellow, 886 "honeydew": ColorHoneydew, 887 "hotpink": ColorHotPink, 888 "indianred": ColorIndianRed, 889 "indigo": ColorIndigo, 890 "ivory": ColorIvory, 891 "khaki": ColorKhaki, 892 "lavender": ColorLavender, 893 "lavenderblush": ColorLavenderBlush, 894 "lawngreen": ColorLawnGreen, 895 "lemonchiffon": ColorLemonChiffon, 896 "lightblue": ColorLightBlue, 897 "lightcoral": ColorLightCoral, 898 "lightcyan": ColorLightCyan, 899 "lightgoldenrodyellow": ColorLightGoldenrodYellow, 900 "lightgray": ColorLightGray, 901 "lightgreen": ColorLightGreen, 902 "lightpink": ColorLightPink, 903 "lightsalmon": ColorLightSalmon, 904 "lightseagreen": ColorLightSeaGreen, 905 "lightskyblue": ColorLightSkyBlue, 906 "lightslategray": ColorLightSlateGray, 907 "lightsteelblue": ColorLightSteelBlue, 908 "lightyellow": ColorLightYellow, 909 "limegreen": ColorLimeGreen, 910 "linen": ColorLinen, 911 "mediumaquamarine": ColorMediumAquamarine, 912 "mediumblue": ColorMediumBlue, 913 "mediumorchid": ColorMediumOrchid, 914 "mediumpurple": ColorMediumPurple, 915 "mediumseagreen": ColorMediumSeaGreen, 916 "mediumslateblue": ColorMediumSlateBlue, 917 "mediumspringgreen": ColorMediumSpringGreen, 918 "mediumturquoise": ColorMediumTurquoise, 919 "mediumvioletred": ColorMediumVioletRed, 920 "midnightblue": ColorMidnightBlue, 921 "mintcream": ColorMintCream, 922 "mistyrose": ColorMistyRose, 923 "moccasin": ColorMoccasin, 924 "navajowhite": ColorNavajoWhite, 925 "oldlace": ColorOldLace, 926 "olivedrab": ColorOliveDrab, 927 "orange": ColorOrange, 928 "orangered": ColorOrangeRed, 929 "orchid": ColorOrchid, 930 "palegoldenrod": ColorPaleGoldenrod, 931 "palegreen": ColorPaleGreen, 932 "paleturquoise": ColorPaleTurquoise, 933 "palevioletred": ColorPaleVioletRed, 934 "papayawhip": ColorPapayaWhip, 935 "peachpuff": ColorPeachPuff, 936 "peru": ColorPeru, 937 "pink": ColorPink, 938 "plum": ColorPlum, 939 "powderblue": ColorPowderBlue, 940 "rebeccapurple": ColorRebeccaPurple, 941 "rosybrown": ColorRosyBrown, 942 "royalblue": ColorRoyalBlue, 943 "saddlebrown": ColorSaddleBrown, 944 "salmon": ColorSalmon, 945 "sandybrown": ColorSandyBrown, 946 "seagreen": ColorSeaGreen, 947 "seashell": ColorSeashell, 948 "sienna": ColorSienna, 949 "skyblue": ColorSkyblue, 950 "slateblue": ColorSlateBlue, 951 "slategray": ColorSlateGray, 952 "snow": ColorSnow, 953 "springgreen": ColorSpringGreen, 954 "steelblue": ColorSteelBlue, 955 "tan": ColorTan, 956 "thistle": ColorThistle, 957 "tomato": ColorTomato, 958 "turquoise": ColorTurquoise, 959 "violet": ColorViolet, 960 "wheat": ColorWheat, 961 "whitesmoke": ColorWhiteSmoke, 962 "yellowgreen": ColorYellowGreen, 963 "grey": ColorGray, 964 "dimgrey": ColorDimGray, 965 "darkgrey": ColorDarkGray, 966 "darkslategrey": ColorDarkSlateGray, 967 "lightgrey": ColorLightGray, 968 "lightslategrey": ColorLightSlateGray, 969 "slategrey": ColorSlateGray, 970} 971 972// Hex returns the color's hexadecimal RGB 24-bit value with each component 973// consisting of a single byte, ala R << 16 | G << 8 | B. If the color 974// is unknown or unset, -1 is returned. 975func (c Color) Hex() int32 { 976 if c&ColorIsRGB != 0 { 977 return (int32(c) & 0xffffff) 978 } 979 if v, ok := ColorValues[c]; ok { 980 return v 981 } 982 return -1 983} 984 985// RGB returns the red, green, and blue components of the color, with 986// each component represented as a value 0-255. In the event that the 987// color cannot be broken up (not set usually), -1 is returned for each value. 988func (c Color) RGB() (int32, int32, int32) { 989 v := c.Hex() 990 if v < 0 { 991 return -1, -1, -1 992 } 993 return (v >> 16) & 0xff, (v >> 8) & 0xff, v & 0xff 994} 995 996// NewRGBColor returns a new color with the given red, green, and blue values. 997// Each value must be represented in the range 0-255. 998func NewRGBColor(r, g, b int32) Color { 999 return NewHexColor(((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff)) 1000} 1001 1002// NewHexColor returns a color using the given 24-bit RGB value. 1003func NewHexColor(v int32) Color { 1004 return ColorIsRGB | Color(v) 1005} 1006 1007// GetColor creates a Color from a color name (W3C name). A hex value may 1008// be supplied as a string in the format "#ffffff". 1009func GetColor(name string) Color { 1010 if c, ok := ColorNames[name]; ok { 1011 return c 1012 } 1013 if len(name) == 7 && name[0] == '#' { 1014 if v, e := strconv.ParseInt(name[1:], 16, 32); e == nil { 1015 return NewHexColor(int32(v)) 1016 } 1017 } 1018 return ColorDefault 1019} 1020