0001:
0002:
0003:
0004:
0005:
0006:
0007:
0008:
0009:
0010:
0011:
0012:
0013:
0014:
0015:
0016:
0017:
0018:
0019:
0020:
0021:
0022:
0023:
0024:
0025:
0026:
0027:
0028:
0029:
0030:
0031:
0032:
0033:
0034:
0035:
0036:
0037:
0038:
0039:
0040:
0041:
0042:
0043:
0044:
0045:
0046:
0047:
0048:
0049:
0050:
0051:
0052:
0053:
0054:
0055:
0056:
0057:
0058:
0059:
0060:
0061:
0062:
0063:
0064:
0065:
0066:
0067:
0068:
0069:
0070:
0071:
0072:
0073:
0074:
0075:
0076:
0077:
0078:
0079:
0080:
0081:
0082:
0083:
0084:
0085:
0086:
0087:
0088:
0089:
0090:
0091:
0092:
0093:
0094:
0095:
0096:
0097:
0098:
0099:
0100:
0101:
0102:
0103:
0104:
0105:
0106:
0107:
0108:
0109:
0110:
0111:
0112:
0113:
0114:
0115:
0116:
0117:
0118:
0119:
0120:
0121:
0122:
0123:
0124:
0125:
0126:
0127:
0128:
0129:
0130:
0131:
0132:
0133:
0134:
0135:
0136:
0137:
0138:
0139:
0140:
0141:
0142:
0143:
0144:
0145:
0146:
0147:
0148:
0149:
0150:
0151:
0152:
0153:
0154:
0155:
0156:
0157:
0158:
0159:
0160:
0161:
0162:
0163:
0164:
0165:
0166:
0167:
0168:
0169:
0170:
0171:
0172:
0173:
0174:
0175:
0176:
0177:
0178:
0179:
0180:
0181:
0182:
0183:
0184:
0185:
0186:
0187:
0188:
0189:
0190:
0191:
0192:
0193:
0194:
0195:
0196:
0197:
0198:
0199:
0200:
0201:
0202:
0203:
0204:
0205:
0206:
0207:
0208:
0209:
0210:
0211:
0212:
0213:
0214:
0215:
0216:
0217:
0218:
0219:
0220:
0221:
0222:
0223:
0224:
0225:
0226:
0227:
0228:
0229:
0230:
0231:
0232:
0233:
0234:
0235:
0236:
0237:
0238:
0239:
0240:
0241:
0242:
0243:
0244:
0245:
0246:
0247:
0248:
0249:
0250:
0251:
0252:
0253:
0254:
0255:
0256:
0257:
0258:
0259:
0260:
0261:
0262:
0263:
0264:
0265:
0266:
0267:
0268:
0269:
0270:
0271:
0272:
0273:
0274:
0275:
0276:
0277:
0278:
0279:
0280:
0281:
0282:
0283:
0284:
0285:
0286:
0287:
0288:
0289:
0290:
0291:
0292:
0293:
0294:
0295:
0296:
0297:
0298:
0299:
0300:
0301:
0302:
0303:
0304:
0305:
0306:
0307:
0308:
0309:
0310:
0311:
0312:
0313:
0314:
0315:
0316:
0317:
0318:
0319:
0320:
0321:
0322:
0323:
0324:
0325:
0326:
0327:
0328:
0329:
0330:
0331:
0332:
0333:
0334:
0335:
0336:
0337:
0338:
0339:
0340:
0341:
0342:
0343:
0344:
0345:
0346:
0347:
0348:
0349:
0350:
0351:
0352:
0353:
0354:
0355:
0356:
0357:
0358:
0359:
0360:
0361:
0362:
0363:
0364:
0365:
0366:
0367:
0368:
0369:
0370:
0371:
0372:
0373:
0374:
0375:
0376:
0377:
0378:
0379:
0380:
0381:
0382:
0383:
0384:
0385:
0386:
0387:
0388:
0389:
0390:
0391:
0392:
0393:
0394:
0395:
0396:
0397:
0398:
0399:
0400:
0401:
0402:
0403:
0404:
0405:
0406:
0407:
0408:
0409:
0410:
0411:
0412:
0413:
0414:
0415:
0416:
0417:
0418:
0419:
0420:
0421:
0422:
0423:
0424:
0425:
0426:
0427:
0428:
0429:
0430:
0431:
0432:
0433:
0434:
0435:
0436:
0437:
0438:
0439:
0440:
0441:
0442:
0443:
0444:
0445:
0446:
0447:
0448:
0449:
0450:
0451:
0452:
0453:
0454:
0455:
0456:
0457:
0458:
0459:
0460:
0461:
0462:
0463:
0464:
0465:
0466:
0467:
0468:
0469:
0470:
0471:
0472:
0473:
0474:
0475:
0476:
0477:
0478:
0479:
0480:
0481:
0482:
0483:
0484:
0485:
0486:
0487:
0488:
0489:
0490:
0491:
0492:
0493:
0494:
0495:
0496:
0497:
0498:
0499:
0500:
0501:
0502:
0503:
0504:
0505:
0506:
0507:
0508:
0509:
0510:
0511:
0512:
0513:
0514:
0515:
0516:
0517:
0518:
0519:
0520:
0521:
0522:
0523:
0524:
0525:
0526:
0527:
0528:
0529:
0530:
0531:
0532:
0533:
0534:
0535:
0536:
0537:
0538:
0539:
0540:
0541:
0542:
0543:
0544:
0545:
0546:
0547:
0548:
0549:
0550:
0551:
0552:
0553:
0554:
0555:
0556:
0557:
0558:
0559:
0560:
0561:
0562:
0563:
0564:
0565:
0566:
0567:
0568:
0569:
0570:
0571:
0572:
0573:
0574:
0575:
0576:
0577:
0578:
0579:
0580:
0581:
0582:
0583:
0584:
0585:
0586:
0587:
0588:
0589:
0590:
0591:
0592:
0593:
0594:
0595:
0596:
0597:
0598:
0599:
0600:
0601:
0602:
0603:
0604:
0605:
0606:
0607:
0608:
0609:
0610:
0611:
0612:
0613:
0614:
0615:
0616:
0617:
0618:
0619:
0620:
0621:
0622:
0623:
0624:
0625:
0626:
0627:
0628:
0629:
0630:
0631:
0632:
0633:
0634:
0635:
0636:
0637:
0638:
0639:
0640:
0641:
0642:
0643:
0644:
0645:
0646:
0647:
0648:
0649:
0650:
0651:
0652:
0653:
0654:
0655:
0656:
0657:
0658:
0659:
0660:
0661:
0662:
0663:
0664:
0665:
0666:
0667:
0668:
0669:
0670:
0671:
0672:
0673:
0674:
0675:
0676:
0677:
0678:
0679:
0680:
0681:
0682:
0683:
0684:
0685:
0686:
0687:
0688:
0689:
0690:
0691:
0692:
0693:
0694:
0695:
0696:
0697:
0698:
0699:
0700:
0701:
0702:
0703:
0704:
0705:
0706:
0707:
0708:
0709:
0710:
0711:
0712:
0713:
0714:
0715:
0716:
0717:
0718:
0719:
0720:
0721:
0722:
0723:
0724:
0725:
0726:
0727:
0728:
0729:
0730:
0731:
0732:
0733:
0734:
0735:
0736:
0737:
0738:
0739:
0740:
0741:
0742:
0743:
0744:
0745:
0746:
0747:
0748:
0749:
0750:
0751:
0752:
0753:
0754:
0755:
0756:
0757:
0758:
0759:
0760:
0761:
0762:
0763:
0764:
0765:
0766:
0767:
0768:
0769:
0770:
0771:
0772:
0773:
0774:
0775:
0776:
0777:
0778:
0779:
0780:
0781:
0782:
0783:
0784:
0785:
0786:
0787:
0788:
0789:
0790:
0791:
0792:
0793:
0794:
0795:
0796:
0797:
0798:
0799:
0800:
0801:
0802:
0803:
0804:
0805:
0806:
0807:
0808:
0809:
0810:
0811:
0812:
0813:
0814:
0815:
0816:
0817:
0818:
0819:
0820:
0821:
0822:
0823:
0824:
0825:
0826:
0827:
0828:
0829:
0830:
0831:
0832:
0833:
0834:
0835:
0836:
0837:
0838:
0839:
0840:
0841:
0842:
0843:
0844:
0845:
0846:
0847:
0848:
0849:
0850:
0851:
0852:
0853:
0854:
0855:
0856:
0857:
0858:
0859:
0860:
0861:
0862:
0863:
0864:
0865:
0866:
0867:
0868:
0869:
0870:
0871:
0872:
0873:
0874:
0875:
0876:
0877:
0878:
0879:
0880:
0881:
0882:
0883:
0884:
0885:
0886:
0887:
0888:
0889:
0890:
0891:
0892:
0893:
0894:
0895:
0896:
0897:
0898:
0899:
0900:
0901:
0902:
0903:
0904:
0905:
0906:
0907:
0908:
0909:
0910:
0911:
0912:
0913:
0914:
0915:
0916:
0917:
0918:
0919:
0920:
0921:
0922:
0923:
0924:
0925:
0926:
0927:
0928:
0929:
0930:
0931:
0932:
0933:
0934:
0935:
0936:
0937:
0938:
0939:
0940:
0941:
0942:
0943:
0944:
0945:
0946:
0947:
0948:
0949:
0950:
0951:
0952:
0953:
0954:
0955:
0956:
0957:
0958:
0959:
0960:
0961:
0962:
0963:
0964:
0965:
0966:
0967:
0968:
0969:
0970:
0971:
0972:
0973:
0974:
0975:
0976:
0977:
0978:
0979:
0980:
0981:
0982:
0983:
0984:
0985:
0986:
0987:
0988:
0989:
0990:
0991:
0992:
0993:
0994:
0995:
0996:
0997:
0998:
0999:
1000:
1001:
1002:
1003:
1004:
1005:
1006:
1007:
1008:
1009:
1010:
1011:
1012:
1013:
1014:
1015:
1016:
1017:
1018:
1019:
1020:
1021:
1022:
1023:
1024:
1025:
1026:
1027:
1028:
1029:
1030:
1031:
1032:
1033:









































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































/*
* Copyright (c), Zeriph Enterprises
* All rights reserved.
*
* Contributor(s):
* Zechariah Perez, omni (at) zeriph (dot) com
*
* THIS SOFTWARE IS PROVIDED BY ZERIPH AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ZERIPH AND CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#if !defined(OMNI_KNOWN_COLORS_HPP)
#define OMNI_KNOWN_COLORS_HPP 1
#include <omni/drawing/color.hpp>

namespace omni {
    namespace drawing {
        class known_colors
        {
            public:
                typedef enum enum_t {
                    ALICEBLUE = 0xF0F8FF,
                    ANTIQUEWHITE = 0xFAEBD7,
                    AQUA = 0x00FFFF,
                    AQUAMARINE = 0x7FFFD4,
                    AZURE = 0xF0FFFF,
                    BEIGE = 0xF5F5DC,
                    BISQUE = 0xFFE4C4,
                    BLACK = 0x000000,
                    BLANCHEDALMOND = 0xFFEBCD,
                    BLUE = 0x0000FF,
                    BLUEVIOLET = 0x8A2BE2,
                    BROWN = 0xA52A2A,
                    BURLYWOOD = 0xDEB887,
                    CADETBLUE = 0x5F9EA0,
                    CHARTREUSE = 0x7FFF00,
                    CHOCOLATE = 0xD2691E,
                    CORAL = 0xFF7F50,
                    CORNFLOWERBLUE = 0x6495ED,
                    CORNSILK = 0xFFF8DC,
                    CRIMSON = 0xDC143C,
                    CYAN = 0x00FFFF,
                    DARKBLUE = 0x00008B,
                    DARKCYAN = 0x008B8B,
                    DARKGOLDENROD = 0xB8860B,
                    DARKGRAY = 0xA9A9A9,
                    DARKGREEN = 0x006400,
                    DARKKHAKI = 0xBDB76B,
                    DARKMAGENTA = 0x8B008B,
                    DARKOLIVEGREEN = 0x556B2F,
                    DARKORANGE = 0xFF8C00,
                    DARKORCHID = 0x9932CC,
                    DARKRED = 0x8B0000,
                    DARKSALMON = 0xE9967A,
                    DARKSEAGREEN = 0x8FBC8F,
                    DARKSLATEBLUE = 0x483D8B,
                    DARKSLATEGRAY = 0x2F4F4F,
                    DARKTURQUOISE = 0x00CED1,
                    DARKVIOLET = 0x9400D3,
                    DEEPPINK = 0xFF1493,
                    DEEPSKYBLUE = 0x00BFFF,
                    DIMGRAY = 0x696969,
                    DODGERBLUE = 0x1E90FF,
                    FIREBRICK = 0xB22222,
                    FLORALWHITE = 0xFFFAF0,
                    FORESTGREEN = 0x228B22,
                    FUCHSIA = 0xFF00FF,
                    GAINSBORO = 0xDCDCDC,
                    GHOSTWHITE = 0xF8F8FF,
                    GOLD = 0xFFD700,
                    GOLDENROD = 0xDAA520,
                    GRAY = 0x808080,
                    GREEN = 0x008000,
                    GREENYELLOW = 0xADFF2F,
                    HONEYDEW = 0xF0FFF0,
                    HOTPINK = 0xFF69B4,
                    INDIANRED = 0xCD5C5C,
                    INDIGO = 0x4B0082,
                    IVORY = 0xFFFFF0,
                    KHAKI = 0xF0E68C,
                    LAVENDER = 0xE6E6FA,
                    LAVENDERBLUSH = 0xFFF0F5,
                    LAWNGREEN = 0x7CFC00,
                    LEMONCHIFFON = 0xFFFACD,
                    LIGHTBLUE = 0xADD8E6,
                    LIGHTCORAL = 0xF08080,
                    LIGHTCYAN = 0xE0FFFF,
                    LIGHTGOLDENRODYELLOW = 0xFAFAD2,
                    LIGHTGRAY = 0xD3D3D3,
                    LIGHTGREEN = 0x90EE90,
                    LIGHTPINK = 0xFFB6C1,
                    LIGHTSALMON = 0xFFA07A,
                    LIGHTSEAGREEN = 0x20B2AA,
                    LIGHTSKYBLUE = 0x87CEFA,
                    LIGHTSLATEGRAY = 0x778899,
                    LIGHTSTEELBLUE = 0xB0C4DE,
                    LIGHTYELLOW = 0xFFFFE0,
                    LIME = 0x00FF00,
                    LIMEGREEN = 0x32CD32,
                    LINEN = 0xFAF0E6,
                    MAGENTA = 0xFF00FF,
                    MAROON = 0x800000,
                    MEDIUMAQUAMARINE = 0x66CDAA,
                    MEDIUMBLUE = 0x0000CD,
                    MEDIUMORCHID = 0xBA55D3,
                    MEDIUMPURPLE = 0x9370DB,
                    MEDIUMSEAGREEN = 0x3CB371,
                    MEDIUMSLATEBLUE = 0x7B68EE,
                    MEDIUMSPRINGGREEN = 0x00FA9A,
                    MEDIUMTURQUOISE = 0x48D1CC,
                    MEDIUMVIOLETRED = 0xC71585,
                    MIDNIGHTBLUE = 0x191970,
                    MINTCREAM = 0xF5FFFA,
                    MISTYROSE = 0xFFE4E1,
                    MOCCASIN = 0xFFE4B5,
                    NAVAJOWHITE = 0xFFDEAD,
                    NAVY = 0x000080,
                    OLDLACE = 0xFDF5E6,
                    OLIVE = 0x808000,
                    OLIVEDRAB = 0x6B8E23,
                    ORANGE = 0xFFA500,
                    ORANGERED = 0xFF4500,
                    ORCHID = 0xDA70D6,
                    PALEGOLDENROD = 0xEEE8AA,
                    PALEGREEN = 0x98FB98,
                    PALETURQUOISE = 0xAFEEEE,
                    PALEVIOLETRED = 0xDB7093,
                    PAPAYAWHIP = 0xFFEFD5,
                    PEACHPUFF = 0xFFDAB9,
                    PERU = 0xCD853F,
                    PINK = 0xFFC0CB,
                    PLUM = 0xDDA0DD,
                    POWDERBLUE = 0xB0E0E6,
                    PURPLE = 0x800080,
                    REBECCAPURPLE = 0x663399,
                    RED = 0xFF0000,
                    ROSYBROWN = 0xBC8F8F,
                    ROYALBLUE = 0x4169E1,
                    SADDLEBROWN = 0x8B4513,
                    SALMON = 0xFA8072,
                    SANDYBROWN = 0xF4A460,
                    SEAGREEN = 0x2E8B57,
                    SEASHELL = 0xFFF5EE,
                    SIENNA = 0xA0522D,
                    SILVER = 0xC0C0C0,
                    SKYBLUE = 0x87CEEB,
                    SLATEBLUE = 0x6A5ACD,
                    SLATEGRAY = 0x708090,
                    SNOW = 0xFFFAFA,
                    SPRINGGREEN = 0x00FF7F,
                    STEELBLUE = 0x4682B4,
                    TAN = 0xD2B48C,
                    TEAL = 0x008080,
                    THISTLE = 0xD8BFD8,
                    TOMATO = 0xFF6347,
                    TURQUOISE = 0x40E0D0,
                    VIOLET = 0xEE82EE,
                    WHEAT = 0xF5DEB3,
                    WHITE = 0xFFFFFF,
                    WHITESMOKE = 0xF5F5F5,
                    YELLOW = 0xFFFF00,
                    YELLOWGREEN = 0x9ACD32
                } enum_t;

                static inline unsigned short COUNT()
                {
                    return 140;
                }

                static inline enum_t DEFAULT_VALUE()
                {
                    return BLACK;
                }

                static std::string to_string(enum_t v)
                {
                    return _to_val<std::stringstream>(v);
                }
            
                static std::wstring to_wstring(enum_t v)
                {
                    return _to_val<std::wstringstream>(v);
                }

                static enum_t parse(const std::string& val)
                {
                    return _parse(val);
                }

                static enum_t parse(const std::wstring& val)
                {
                    return _parse(val);
                }

                static bool try_parse(const std::string& val, enum_t& out)
                {
                    return _try_parse(val, out);
                }

                static bool try_parse(const std::wstring& val, enum_t& out)
                {
                    return _try_parse(val, out);
                }

                static bool try_parse(const std::string& val, known_colors& out)
                {
                    return _try_parse(val, out);
                }

                static bool try_parse(const std::wstring& val, known_colors& out)
                {
                    return _try_parse(val, out);
                }

                static bool is_valid(uint32_t val)
                {
                    return _valid(val);
                }

                static enum_t from_color(const omni::drawing::color_t& val)
                {
                    omni::drawing::color_t::rgb_t rgb = val.to_rgb();
                    if (_valid(rgb)) {
                        return static_cast<enum_t>(rgb);
                    }
                    OMNI_ERR_RETV_FW("Invalid color specified", omni::exceptions::invalid_enum(), DEFAULT_VALUE())
                }

                static enum_t from_rgb(omni::drawing::color_t::rgb_t rgb)
                {
                    if (_valid(rgb)) {
                        return static_cast<enum_t>(rgb);
                    }
                    OMNI_ERR_RETV_FW("Invalid RGB value specified", omni::exceptions::invalid_enum(), DEFAULT_VALUE())
                }

                static color_t get_color(enum_t val)
                {
                    if (_valid(val)) {
                        return omni::drawing::color_t(static_cast<omni::drawing::color_t::rgb_t>(val));
                    }
                    OMNI_ERR_RETV_FW("Invalid enum value specified", omni::exceptions::invalid_enum(), omni::drawing::color_t())
                }

                static omni::drawing::color_t aliceblue() { return omni::drawing::color_t(ALICEBLUE); }
                static omni::drawing::color_t antiquewhite() { return omni::drawing::color_t(ANTIQUEWHITE); }
                static omni::drawing::color_t aqua() { return omni::drawing::color_t(AQUA); }
                static omni::drawing::color_t aquamarine() { return omni::drawing::color_t(AQUAMARINE); }
                static omni::drawing::color_t azure() { return omni::drawing::color_t(AZURE); }
                static omni::drawing::color_t beige() { return omni::drawing::color_t(BEIGE); }
                static omni::drawing::color_t bisque() { return omni::drawing::color_t(BISQUE); }
                static omni::drawing::color_t black() { return omni::drawing::color_t(BLACK); }
                static omni::drawing::color_t blanchedalmond() { return omni::drawing::color_t(BLANCHEDALMOND); }
                static omni::drawing::color_t blue() { return omni::drawing::color_t(BLUE); }
                static omni::drawing::color_t blueviolet() { return omni::drawing::color_t(BLUEVIOLET); }
                static omni::drawing::color_t brown() { return omni::drawing::color_t(BROWN); }
                static omni::drawing::color_t burlywood() { return omni::drawing::color_t(BURLYWOOD); }
                static omni::drawing::color_t cadetblue() { return omni::drawing::color_t(CADETBLUE); }
                static omni::drawing::color_t chartreuse() { return omni::drawing::color_t(CHARTREUSE); }
                static omni::drawing::color_t chocolate() { return omni::drawing::color_t(CHOCOLATE); }
                static omni::drawing::color_t coral() { return omni::drawing::color_t(CORAL); }
                static omni::drawing::color_t cornflowerblue() { return omni::drawing::color_t(CORNFLOWERBLUE); }
                static omni::drawing::color_t cornsilk() { return omni::drawing::color_t(CORNSILK); }
                static omni::drawing::color_t crimson() { return omni::drawing::color_t(CRIMSON); }
                static omni::drawing::color_t cyan() { return omni::drawing::color_t(CYAN); }
                static omni::drawing::color_t darkblue() { return omni::drawing::color_t(DARKBLUE); }
                static omni::drawing::color_t darkcyan() { return omni::drawing::color_t(DARKCYAN); }
                static omni::drawing::color_t darkgoldenrod() { return omni::drawing::color_t(DARKGOLDENROD); }
                static omni::drawing::color_t darkgray() { return omni::drawing::color_t(DARKGRAY); }
                static omni::drawing::color_t darkgreen() { return omni::drawing::color_t(DARKGREEN); }
                static omni::drawing::color_t darkkhaki() { return omni::drawing::color_t(DARKKHAKI); }
                static omni::drawing::color_t darkmagenta() { return omni::drawing::color_t(DARKMAGENTA); }
                static omni::drawing::color_t darkolivegreen() { return omni::drawing::color_t(DARKOLIVEGREEN); }
                static omni::drawing::color_t darkorange() { return omni::drawing::color_t(DARKORANGE); }
                static omni::drawing::color_t darkorchid() { return omni::drawing::color_t(DARKORCHID); }
                static omni::drawing::color_t darkred() { return omni::drawing::color_t(DARKRED); }
                static omni::drawing::color_t darksalmon() { return omni::drawing::color_t(DARKSALMON); }
                static omni::drawing::color_t darkseagreen() { return omni::drawing::color_t(DARKSEAGREEN); }
                static omni::drawing::color_t darkslateblue() { return omni::drawing::color_t(DARKSLATEBLUE); }
                static omni::drawing::color_t darkslategray() { return omni::drawing::color_t(DARKSLATEGRAY); }
                static omni::drawing::color_t darkturquoise() { return omni::drawing::color_t(DARKTURQUOISE); }
                static omni::drawing::color_t darkviolet() { return omni::drawing::color_t(DARKVIOLET); }
                static omni::drawing::color_t deeppink() { return omni::drawing::color_t(DEEPPINK); }
                static omni::drawing::color_t deepskyblue() { return omni::drawing::color_t(DEEPSKYBLUE); }
                static omni::drawing::color_t dimgray() { return omni::drawing::color_t(DIMGRAY); }
                static omni::drawing::color_t dodgerblue() { return omni::drawing::color_t(DODGERBLUE); }
                static omni::drawing::color_t firebrick() { return omni::drawing::color_t(FIREBRICK); }
                static omni::drawing::color_t floralwhite() { return omni::drawing::color_t(FLORALWHITE); }
                static omni::drawing::color_t forestgreen() { return omni::drawing::color_t(FORESTGREEN); }
                static omni::drawing::color_t fuchsia() { return omni::drawing::color_t(FUCHSIA); }
                static omni::drawing::color_t gainsboro() { return omni::drawing::color_t(GAINSBORO); }
                static omni::drawing::color_t ghostwhite() { return omni::drawing::color_t(GHOSTWHITE); }
                static omni::drawing::color_t gold() { return omni::drawing::color_t(GOLD); }
                static omni::drawing::color_t goldenrod() { return omni::drawing::color_t(GOLDENROD); }
                static omni::drawing::color_t gray() { return omni::drawing::color_t(GRAY); }
                static omni::drawing::color_t green() { return omni::drawing::color_t(GREEN); }
                static omni::drawing::color_t greenyellow() { return omni::drawing::color_t(GREENYELLOW); }
                static omni::drawing::color_t honeydew() { return omni::drawing::color_t(HONEYDEW); }
                static omni::drawing::color_t hotpink() { return omni::drawing::color_t(HOTPINK); }
                static omni::drawing::color_t indianred() { return omni::drawing::color_t(INDIANRED); }
                static omni::drawing::color_t indigo() { return omni::drawing::color_t(INDIGO); }
                static omni::drawing::color_t ivory() { return omni::drawing::color_t(IVORY); }
                static omni::drawing::color_t khaki() { return omni::drawing::color_t(KHAKI); }
                static omni::drawing::color_t lavender() { return omni::drawing::color_t(LAVENDER); }
                static omni::drawing::color_t lavenderblush() { return omni::drawing::color_t(LAVENDERBLUSH); }
                static omni::drawing::color_t lawngreen() { return omni::drawing::color_t(LAWNGREEN); }
                static omni::drawing::color_t lemonchiffon() { return omni::drawing::color_t(LEMONCHIFFON); }
                static omni::drawing::color_t lightblue() { return omni::drawing::color_t(LIGHTBLUE); }
                static omni::drawing::color_t lightcoral() { return omni::drawing::color_t(LIGHTCORAL); }
                static omni::drawing::color_t lightcyan() { return omni::drawing::color_t(LIGHTCYAN); }
                static omni::drawing::color_t lightgoldenrodyellow() { return omni::drawing::color_t(LIGHTGOLDENRODYELLOW); }
                static omni::drawing::color_t lightgray() { return omni::drawing::color_t(LIGHTGRAY); }
                static omni::drawing::color_t lightgreen() { return omni::drawing::color_t(LIGHTGREEN); }
                static omni::drawing::color_t lightpink() { return omni::drawing::color_t(LIGHTPINK); }
                static omni::drawing::color_t lightsalmon() { return omni::drawing::color_t(LIGHTSALMON); }
                static omni::drawing::color_t lightseagreen() { return omni::drawing::color_t(LIGHTSEAGREEN); }
                static omni::drawing::color_t lightskyblue() { return omni::drawing::color_t(LIGHTSKYBLUE); }
                static omni::drawing::color_t lightslategray() { return omni::drawing::color_t(LIGHTSLATEGRAY); }
                static omni::drawing::color_t lightsteelblue() { return omni::drawing::color_t(LIGHTSTEELBLUE); }
                static omni::drawing::color_t lightyellow() { return omni::drawing::color_t(LIGHTYELLOW); }
                static omni::drawing::color_t lime() { return omni::drawing::color_t(LIME); }
                static omni::drawing::color_t limegreen() { return omni::drawing::color_t(LIMEGREEN); }
                static omni::drawing::color_t linen() { return omni::drawing::color_t(LINEN); }
                static omni::drawing::color_t magenta() { return omni::drawing::color_t(MAGENTA); }
                static omni::drawing::color_t maroon() { return omni::drawing::color_t(MAROON); }
                static omni::drawing::color_t mediumaquamarine() { return omni::drawing::color_t(MEDIUMAQUAMARINE); }
                static omni::drawing::color_t mediumblue() { return omni::drawing::color_t(MEDIUMBLUE); }
                static omni::drawing::color_t mediumorchid() { return omni::drawing::color_t(MEDIUMORCHID); }
                static omni::drawing::color_t mediumpurple() { return omni::drawing::color_t(MEDIUMPURPLE); }
                static omni::drawing::color_t mediumseagreen() { return omni::drawing::color_t(MEDIUMSEAGREEN); }
                static omni::drawing::color_t mediumslateblue() { return omni::drawing::color_t(MEDIUMSLATEBLUE); }
                static omni::drawing::color_t mediumspringgreen() { return omni::drawing::color_t(MEDIUMSPRINGGREEN); }
                static omni::drawing::color_t mediumturquoise() { return omni::drawing::color_t(MEDIUMTURQUOISE); }
                static omni::drawing::color_t mediumvioletred() { return omni::drawing::color_t(MEDIUMVIOLETRED); }
                static omni::drawing::color_t midnightblue() { return omni::drawing::color_t(MIDNIGHTBLUE); }
                static omni::drawing::color_t mintcream() { return omni::drawing::color_t(MINTCREAM); }
                static omni::drawing::color_t mistyrose() { return omni::drawing::color_t(MISTYROSE); }
                static omni::drawing::color_t moccasin() { return omni::drawing::color_t(MOCCASIN); }
                static omni::drawing::color_t navajowhite() { return omni::drawing::color_t(NAVAJOWHITE); }
                static omni::drawing::color_t navy() { return omni::drawing::color_t(NAVY); }
                static omni::drawing::color_t oldlace() { return omni::drawing::color_t(OLDLACE); }
                static omni::drawing::color_t olive() { return omni::drawing::color_t(OLIVE); }
                static omni::drawing::color_t olivedrab() { return omni::drawing::color_t(OLIVEDRAB); }
                static omni::drawing::color_t orange() { return omni::drawing::color_t(ORANGE); }
                static omni::drawing::color_t orangered() { return omni::drawing::color_t(ORANGERED); }
                static omni::drawing::color_t orchid() { return omni::drawing::color_t(ORCHID); }
                static omni::drawing::color_t palegoldenrod() { return omni::drawing::color_t(PALEGOLDENROD); }
                static omni::drawing::color_t palegreen() { return omni::drawing::color_t(PALEGREEN); }
                static omni::drawing::color_t paleturquoise() { return omni::drawing::color_t(PALETURQUOISE); }
                static omni::drawing::color_t palevioletred() { return omni::drawing::color_t(PALEVIOLETRED); }
                static omni::drawing::color_t papayawhip() { return omni::drawing::color_t(PAPAYAWHIP); }
                static omni::drawing::color_t peachpuff() { return omni::drawing::color_t(PEACHPUFF); }
                static omni::drawing::color_t peru() { return omni::drawing::color_t(PERU); }
                static omni::drawing::color_t pink() { return omni::drawing::color_t(PINK); }
                static omni::drawing::color_t plum() { return omni::drawing::color_t(PLUM); }
                static omni::drawing::color_t powderblue() { return omni::drawing::color_t(POWDERBLUE); }
                static omni::drawing::color_t purple() { return omni::drawing::color_t(PURPLE); }
                static omni::drawing::color_t rebeccapurple() { return omni::drawing::color_t(REBECCAPURPLE); }
                static omni::drawing::color_t red() { return omni::drawing::color_t(RED); }
                static omni::drawing::color_t rosybrown() { return omni::drawing::color_t(ROSYBROWN); }
                static omni::drawing::color_t royalblue() { return omni::drawing::color_t(ROYALBLUE); }
                static omni::drawing::color_t saddlebrown() { return omni::drawing::color_t(SADDLEBROWN); }
                static omni::drawing::color_t salmon() { return omni::drawing::color_t(SALMON); }
                static omni::drawing::color_t sandybrown() { return omni::drawing::color_t(SANDYBROWN); }
                static omni::drawing::color_t seagreen() { return omni::drawing::color_t(SEAGREEN); }
                static omni::drawing::color_t seashell() { return omni::drawing::color_t(SEASHELL); }
                static omni::drawing::color_t sienna() { return omni::drawing::color_t(SIENNA); }
                static omni::drawing::color_t silver() { return omni::drawing::color_t(SILVER); }
                static omni::drawing::color_t skyblue() { return omni::drawing::color_t(SKYBLUE); }
                static omni::drawing::color_t slateblue() { return omni::drawing::color_t(SLATEBLUE); }
                static omni::drawing::color_t slategray() { return omni::drawing::color_t(SLATEGRAY); }
                static omni::drawing::color_t snow() { return omni::drawing::color_t(SNOW); }
                static omni::drawing::color_t springgreen() { return omni::drawing::color_t(SPRINGGREEN); }
                static omni::drawing::color_t steelblue() { return omni::drawing::color_t(STEELBLUE); }
                static omni::drawing::color_t tan() { return omni::drawing::color_t(TAN); }
                static omni::drawing::color_t teal() { return omni::drawing::color_t(TEAL); }
                static omni::drawing::color_t thistle() { return omni::drawing::color_t(THISTLE); }
                static omni::drawing::color_t tomato() { return omni::drawing::color_t(TOMATO); }
                static omni::drawing::color_t turquoise() { return omni::drawing::color_t(TURQUOISE); }
                static omni::drawing::color_t violet() { return omni::drawing::color_t(VIOLET); }
                static omni::drawing::color_t wheat() { return omni::drawing::color_t(WHEAT); }
                static omni::drawing::color_t white() { return omni::drawing::color_t(WHITE); }
                static omni::drawing::color_t whitesmoke() { return omni::drawing::color_t(WHITESMOKE); }
                static omni::drawing::color_t yellow() { return omni::drawing::color_t(YELLOW); }
                static omni::drawing::color_t yellowgreen() { return omni::drawing::color_t(YELLOWGREEN); }

                known_colors() :
                    OMNI_CTOR_FW(omni::drawing::known_colors)
                    m_val(DEFAULT_VALUE())
                { }

                known_colors(const known_colors& cp) :
                    OMNI_CPCTOR_FW(cp)
                    m_val(cp.m_val)
                { }

                known_colors(enum_t val) :
                    OMNI_CTOR_FW(omni::drawing::known_colors)
                    m_val(val)
                { }

                ~known_colors()
                {
                    OMNI_TRY_FW
                    OMNI_DTOR_FW
                    OMNI_CATCH_FW
                    OMNI_D5_FW("destroyed");
                }

                enum_t value() const
                {
                    return this->m_val;
                }

                const std::string to_string() const
                {
                    return to_string(this->m_val);
                }

                const std::wstring to_wstring() const
                {
                    return to_wstring(this->m_val);
                }

                bool operator!=(const known_colors& val) const
                {
                    return !(*this == val);
                }
                
                bool operator!=(enum_t val) const
                {
                    return (this->m_val != val);
                }
                
                known_colors& operator=(const known_colors& val)
                {
                    if (this != &val) {
                        OMNI_ASSIGN_FW(val)
                        this->m_val = val.m_val;
                    }
                    return *this;
                }

                known_colors& operator=(enum_t val)
                {
                    this->m_val = val;
                    return *this;
                }

                known_colors& operator=(uint32_t val)
                {
                    if (!known_colors::is_valid(val)) {
                        OMNI_ERR_RET_FW("Invalid enumeration value specified.", omni::exceptions::invalid_enum(val));
                    } else {
                        this->m_val = static_cast<enum_t>(val);
                    }
                    return *this;
                }

                bool operator<(const known_colors& val) const
                {
                    return this->m_val < val.m_val;
                }

                bool operator<(enum_t val) const
                {
                    return this->m_val < val;
                }

                bool operator<(uint32_t val) const
                {
                    return this->m_val < static_cast<enum_t>(val);
                }

                bool operator>(const known_colors& val) const
                {
                    return this->m_val > val.m_val;
                }

                bool operator>(enum_t val) const
                {
                    return this->m_val > val;
                }

                bool operator>(uint32_t val) const
                {
                    return this->m_val > val;
                }

                bool operator==(const known_colors& val) const
                {
                    if (this == &val) { return true; }
                    return this->m_val == val.m_val
                            OMNI_EQUAL_FW(val);
                }

                bool operator==(enum_t val) const
                {
                    return this->m_val == val;
                }

                bool operator==(uint32_t val) const
                {
                    return this->m_val == val;
                }

                operator enum_t() const
                {
                    return this->m_val;
                }

                operator uint32_t() const
                {
                    return static_cast<uint32_t>(this->m_val);
                }

                operator std::string() const
                {
                    return this->to_string();
                }

                operator std::wstring() const
                {
                    return this->to_wstring();
                }

                omni::drawing::color_t::rgb_t to_rgb() const
                {
                    return static_cast<omni::drawing::color_t::rgb_t>(this->m_val);
                }

                color_t to_color() const
                {
                    return omni::drawing::known_colors::get_color(this->m_val);
                }

                OMNI_MEMBERS_FW(omni::drawing::known_colors) // disposing,name,type(),hash()

                OMNI_OSTREAM_FW(omni::drawing::known_colors)
                OMNI_OSTREAM_FN_FW(enum_t)

            private:
                enum_t m_val;

                template < typename S >
                static enum_t _parse(const S& val)
                {
                    enum_t ret;
                    if (_try_parse(val, ret)) { return ret; }
                    OMNI_ERR_FW("invalid enum parse", omni::exceptions::invalid_enum())
                    return DEFAULT_VALUE();
                }

                template < typename S >
                static bool _try_parse(const S& str, enum_t& out)
                {
                    return _try_parse(omni::string::util::to_upper(str), out);
                }

                template < typename S >
                static bool _try_parse(const S& val, known_colors& out)
                {
                    enum_t tmp;
                    if (_try_parse(val, tmp)) {
                        out.m_val = tmp;
                        return true;
                    }
                    return false;
                }

                static bool _try_parse(const std::wstring& val, enum_t& out)
                {
                    return _try_parse(omni::string::util::to_string(val), out);
                }

                static bool _try_parse(const std::string& val, enum_t& out)
                {
                    if (!val.empty()) {
                        OMNI_S2E_FW(ALICEBLUE)
                        OMNI_S2E_FW(ANTIQUEWHITE)
                        OMNI_S2E_FW(AQUA)
                        OMNI_S2E_FW(AQUAMARINE)
                        OMNI_S2E_FW(AZURE)
                        OMNI_S2E_FW(BEIGE)
                        OMNI_S2E_FW(BISQUE)
                        OMNI_S2E_FW(BLACK)
                        OMNI_S2E_FW(BLANCHEDALMOND)
                        OMNI_S2E_FW(BLUE)
                        OMNI_S2E_FW(BLUEVIOLET)
                        OMNI_S2E_FW(BROWN)
                        OMNI_S2E_FW(BURLYWOOD)
                        OMNI_S2E_FW(CADETBLUE)
                        OMNI_S2E_FW(CHARTREUSE)
                        OMNI_S2E_FW(CHOCOLATE)
                        OMNI_S2E_FW(CORAL)
                        OMNI_S2E_FW(CORNFLOWERBLUE)
                        OMNI_S2E_FW(CORNSILK)
                        OMNI_S2E_FW(CRIMSON)
                        OMNI_S2E_FW(CYAN)
                        OMNI_S2E_FW(DARKBLUE)
                        OMNI_S2E_FW(DARKCYAN)
                        OMNI_S2E_FW(DARKGOLDENROD)
                        OMNI_S2E_FW(DARKGRAY)
                        OMNI_S2E_FW(DARKGREEN)
                        OMNI_S2E_FW(DARKKHAKI)
                        OMNI_S2E_FW(DARKMAGENTA)
                        OMNI_S2E_FW(DARKOLIVEGREEN)
                        OMNI_S2E_FW(DARKORANGE)
                        OMNI_S2E_FW(DARKORCHID)
                        OMNI_S2E_FW(DARKRED)
                        OMNI_S2E_FW(DARKSALMON)
                        OMNI_S2E_FW(DARKSEAGREEN)
                        OMNI_S2E_FW(DARKSLATEBLUE)
                        OMNI_S2E_FW(DARKSLATEGRAY)
                        OMNI_S2E_FW(DARKTURQUOISE)
                        OMNI_S2E_FW(DARKVIOLET)
                        OMNI_S2E_FW(DEEPPINK)
                        OMNI_S2E_FW(DEEPSKYBLUE)
                        OMNI_S2E_FW(DIMGRAY)
                        OMNI_S2E_FW(DODGERBLUE)
                        OMNI_S2E_FW(FIREBRICK)
                        OMNI_S2E_FW(FLORALWHITE)
                        OMNI_S2E_FW(FORESTGREEN)
                        OMNI_S2E_FW(FUCHSIA)
                        OMNI_S2E_FW(GAINSBORO)
                        OMNI_S2E_FW(GHOSTWHITE)
                        OMNI_S2E_FW(GOLD)
                        OMNI_S2E_FW(GOLDENROD)
                        OMNI_S2E_FW(GRAY)
                        OMNI_S2E_FW(GREEN)
                        OMNI_S2E_FW(GREENYELLOW)
                        OMNI_S2E_FW(HONEYDEW)
                        OMNI_S2E_FW(HOTPINK)
                        OMNI_S2E_FW(INDIANRED)
                        OMNI_S2E_FW(INDIGO)
                        OMNI_S2E_FW(IVORY)
                        OMNI_S2E_FW(KHAKI)
                        OMNI_S2E_FW(LAVENDER)
                        OMNI_S2E_FW(LAVENDERBLUSH)
                        OMNI_S2E_FW(LAWNGREEN)
                        OMNI_S2E_FW(LEMONCHIFFON)
                        OMNI_S2E_FW(LIGHTBLUE)
                        OMNI_S2E_FW(LIGHTCORAL)
                        OMNI_S2E_FW(LIGHTCYAN)
                        OMNI_S2E_FW(LIGHTGOLDENRODYELLOW)
                        OMNI_S2E_FW(LIGHTGRAY)
                        OMNI_S2E_FW(LIGHTGREEN)
                        OMNI_S2E_FW(LIGHTPINK)
                        OMNI_S2E_FW(LIGHTSALMON)
                        OMNI_S2E_FW(LIGHTSEAGREEN)
                        OMNI_S2E_FW(LIGHTSKYBLUE)
                        OMNI_S2E_FW(LIGHTSLATEGRAY)
                        OMNI_S2E_FW(LIGHTSTEELBLUE)
                        OMNI_S2E_FW(LIGHTYELLOW)
                        OMNI_S2E_FW(LIME)
                        OMNI_S2E_FW(LIMEGREEN)
                        OMNI_S2E_FW(LINEN)
                        OMNI_S2E_FW(MAGENTA)
                        OMNI_S2E_FW(MAROON)
                        OMNI_S2E_FW(MEDIUMAQUAMARINE)
                        OMNI_S2E_FW(MEDIUMBLUE)
                        OMNI_S2E_FW(MEDIUMORCHID)
                        OMNI_S2E_FW(MEDIUMPURPLE)
                        OMNI_S2E_FW(MEDIUMSEAGREEN)
                        OMNI_S2E_FW(MEDIUMSLATEBLUE)
                        OMNI_S2E_FW(MEDIUMSPRINGGREEN)
                        OMNI_S2E_FW(MEDIUMTURQUOISE)
                        OMNI_S2E_FW(MEDIUMVIOLETRED)
                        OMNI_S2E_FW(MIDNIGHTBLUE)
                        OMNI_S2E_FW(MINTCREAM)
                        OMNI_S2E_FW(MISTYROSE)
                        OMNI_S2E_FW(MOCCASIN)
                        OMNI_S2E_FW(NAVAJOWHITE)
                        OMNI_S2E_FW(NAVY)
                        OMNI_S2E_FW(OLDLACE)
                        OMNI_S2E_FW(OLIVE)
                        OMNI_S2E_FW(OLIVEDRAB)
                        OMNI_S2E_FW(ORANGE)
                        OMNI_S2E_FW(ORANGERED)
                        OMNI_S2E_FW(ORCHID)
                        OMNI_S2E_FW(PALEGOLDENROD)
                        OMNI_S2E_FW(PALEGREEN)
                        OMNI_S2E_FW(PALETURQUOISE)
                        OMNI_S2E_FW(PALEVIOLETRED)
                        OMNI_S2E_FW(PAPAYAWHIP)
                        OMNI_S2E_FW(PEACHPUFF)
                        OMNI_S2E_FW(PERU)
                        OMNI_S2E_FW(PINK)
                        OMNI_S2E_FW(PLUM)
                        OMNI_S2E_FW(POWDERBLUE)
                        OMNI_S2E_FW(PURPLE)
                        OMNI_S2E_FW(REBECCAPURPLE)
                        OMNI_S2E_FW(RED)
                        OMNI_S2E_FW(ROSYBROWN)
                        OMNI_S2E_FW(ROYALBLUE)
                        OMNI_S2E_FW(SADDLEBROWN)
                        OMNI_S2E_FW(SALMON)
                        OMNI_S2E_FW(SANDYBROWN)
                        OMNI_S2E_FW(SEAGREEN)
                        OMNI_S2E_FW(SEASHELL)
                        OMNI_S2E_FW(SIENNA)
                        OMNI_S2E_FW(SILVER)
                        OMNI_S2E_FW(SKYBLUE)
                        OMNI_S2E_FW(SLATEBLUE)
                        OMNI_S2E_FW(SLATEGRAY)
                        OMNI_S2E_FW(SNOW)
                        OMNI_S2E_FW(SPRINGGREEN)
                        OMNI_S2E_FW(STEELBLUE)
                        OMNI_S2E_FW(TAN)
                        OMNI_S2E_FW(TEAL)
                        OMNI_S2E_FW(THISTLE)
                        OMNI_S2E_FW(TOMATO)
                        OMNI_S2E_FW(TURQUOISE)
                        OMNI_S2E_FW(VIOLET)
                        OMNI_S2E_FW(WHEAT)
                        OMNI_S2E_FW(WHITE)
                        OMNI_S2E_FW(WHITESMOKE)
                        OMNI_S2E_FW(YELLOW)
                        OMNI_S2E_FW(YELLOWGREEN)
                    }
                    return false;
                }

                template < typename S >
                static std::basic_string< typename S::char_type > _to_val(enum_t v)
                {
                    S ss;
                    switch (v) {
                        OMNI_E2SS_FW(ALICEBLUE);
                        OMNI_E2SS_FW(ANTIQUEWHITE);
                        OMNI_E2SS_FW(AQUA);
                        OMNI_E2SS_FW(AQUAMARINE);
                        OMNI_E2SS_FW(AZURE);
                        OMNI_E2SS_FW(BEIGE);
                        OMNI_E2SS_FW(BISQUE);
                        OMNI_E2SS_FW(BLACK);
                        OMNI_E2SS_FW(BLANCHEDALMOND);
                        OMNI_E2SS_FW(BLUE);
                        OMNI_E2SS_FW(BLUEVIOLET);
                        OMNI_E2SS_FW(BROWN);
                        OMNI_E2SS_FW(BURLYWOOD);
                        OMNI_E2SS_FW(CADETBLUE);
                        OMNI_E2SS_FW(CHARTREUSE);
                        OMNI_E2SS_FW(CHOCOLATE);
                        OMNI_E2SS_FW(CORAL);
                        OMNI_E2SS_FW(CORNFLOWERBLUE);
                        OMNI_E2SS_FW(CORNSILK);
                        OMNI_E2SS_FW(CRIMSON);
                        //OMNI_E2SS_FW(CYAN); // same as aqua
                        OMNI_E2SS_FW(DARKBLUE);
                        OMNI_E2SS_FW(DARKCYAN);
                        OMNI_E2SS_FW(DARKGOLDENROD);
                        OMNI_E2SS_FW(DARKGRAY);
                        OMNI_E2SS_FW(DARKGREEN);
                        OMNI_E2SS_FW(DARKKHAKI);
                        OMNI_E2SS_FW(DARKMAGENTA);
                        OMNI_E2SS_FW(DARKOLIVEGREEN);
                        OMNI_E2SS_FW(DARKORANGE);
                        OMNI_E2SS_FW(DARKORCHID);
                        OMNI_E2SS_FW(DARKRED);
                        OMNI_E2SS_FW(DARKSALMON);
                        OMNI_E2SS_FW(DARKSEAGREEN);
                        OMNI_E2SS_FW(DARKSLATEBLUE);
                        OMNI_E2SS_FW(DARKSLATEGRAY);
                        OMNI_E2SS_FW(DARKTURQUOISE);
                        OMNI_E2SS_FW(DARKVIOLET);
                        OMNI_E2SS_FW(DEEPPINK);
                        OMNI_E2SS_FW(DEEPSKYBLUE);
                        OMNI_E2SS_FW(DIMGRAY);
                        OMNI_E2SS_FW(DODGERBLUE);
                        OMNI_E2SS_FW(FIREBRICK);
                        OMNI_E2SS_FW(FLORALWHITE);
                        OMNI_E2SS_FW(FORESTGREEN);
                        OMNI_E2SS_FW(FUCHSIA);
                        OMNI_E2SS_FW(GAINSBORO);
                        OMNI_E2SS_FW(GHOSTWHITE);
                        OMNI_E2SS_FW(GOLD);
                        OMNI_E2SS_FW(GOLDENROD);
                        OMNI_E2SS_FW(GRAY);
                        OMNI_E2SS_FW(GREEN);
                        OMNI_E2SS_FW(GREENYELLOW);
                        OMNI_E2SS_FW(HONEYDEW);
                        OMNI_E2SS_FW(HOTPINK);
                        OMNI_E2SS_FW(INDIANRED);
                        OMNI_E2SS_FW(INDIGO);
                        OMNI_E2SS_FW(IVORY);
                        OMNI_E2SS_FW(KHAKI);
                        OMNI_E2SS_FW(LAVENDER);
                        OMNI_E2SS_FW(LAVENDERBLUSH);
                        OMNI_E2SS_FW(LAWNGREEN);
                        OMNI_E2SS_FW(LEMONCHIFFON);
                        OMNI_E2SS_FW(LIGHTBLUE);
                        OMNI_E2SS_FW(LIGHTCORAL);
                        OMNI_E2SS_FW(LIGHTCYAN);
                        OMNI_E2SS_FW(LIGHTGOLDENRODYELLOW);
                        OMNI_E2SS_FW(LIGHTGRAY);
                        OMNI_E2SS_FW(LIGHTGREEN);
                        OMNI_E2SS_FW(LIGHTPINK);
                        OMNI_E2SS_FW(LIGHTSALMON);
                        OMNI_E2SS_FW(LIGHTSEAGREEN);
                        OMNI_E2SS_FW(LIGHTSKYBLUE);
                        OMNI_E2SS_FW(LIGHTSLATEGRAY);
                        OMNI_E2SS_FW(LIGHTSTEELBLUE);
                        OMNI_E2SS_FW(LIGHTYELLOW);
                        OMNI_E2SS_FW(LIME);
                        OMNI_E2SS_FW(LIMEGREEN);
                        OMNI_E2SS_FW(LINEN);
                        //OMNI_E2SS_FW(MAGENTA); // same as fuchsia
                        OMNI_E2SS_FW(MAROON);
                        OMNI_E2SS_FW(MEDIUMAQUAMARINE);
                        OMNI_E2SS_FW(MEDIUMBLUE);
                        OMNI_E2SS_FW(MEDIUMORCHID);
                        OMNI_E2SS_FW(MEDIUMPURPLE);
                        OMNI_E2SS_FW(MEDIUMSEAGREEN);
                        OMNI_E2SS_FW(MEDIUMSLATEBLUE);
                        OMNI_E2SS_FW(MEDIUMSPRINGGREEN);
                        OMNI_E2SS_FW(MEDIUMTURQUOISE);
                        OMNI_E2SS_FW(MEDIUMVIOLETRED);
                        OMNI_E2SS_FW(MIDNIGHTBLUE);
                        OMNI_E2SS_FW(MINTCREAM);
                        OMNI_E2SS_FW(MISTYROSE);
                        OMNI_E2SS_FW(MOCCASIN);
                        OMNI_E2SS_FW(NAVAJOWHITE);
                        OMNI_E2SS_FW(NAVY);
                        OMNI_E2SS_FW(OLDLACE);
                        OMNI_E2SS_FW(OLIVE);
                        OMNI_E2SS_FW(OLIVEDRAB);
                        OMNI_E2SS_FW(ORANGE);
                        OMNI_E2SS_FW(ORANGERED);
                        OMNI_E2SS_FW(ORCHID);
                        OMNI_E2SS_FW(PALEGOLDENROD);
                        OMNI_E2SS_FW(PALEGREEN);
                        OMNI_E2SS_FW(PALETURQUOISE);
                        OMNI_E2SS_FW(PALEVIOLETRED);
                        OMNI_E2SS_FW(PAPAYAWHIP);
                        OMNI_E2SS_FW(PEACHPUFF);
                        OMNI_E2SS_FW(PERU);
                        OMNI_E2SS_FW(PINK);
                        OMNI_E2SS_FW(PLUM);
                        OMNI_E2SS_FW(POWDERBLUE);
                        OMNI_E2SS_FW(PURPLE);
                        OMNI_E2SS_FW(REBECCAPURPLE);
                        OMNI_E2SS_FW(RED);
                        OMNI_E2SS_FW(ROSYBROWN);
                        OMNI_E2SS_FW(ROYALBLUE);
                        OMNI_E2SS_FW(SADDLEBROWN);
                        OMNI_E2SS_FW(SALMON);
                        OMNI_E2SS_FW(SANDYBROWN);
                        OMNI_E2SS_FW(SEAGREEN);
                        OMNI_E2SS_FW(SEASHELL);
                        OMNI_E2SS_FW(SIENNA);
                        OMNI_E2SS_FW(SILVER);
                        OMNI_E2SS_FW(SKYBLUE);
                        OMNI_E2SS_FW(SLATEBLUE);
                        OMNI_E2SS_FW(SLATEGRAY);
                        OMNI_E2SS_FW(SNOW);
                        OMNI_E2SS_FW(SPRINGGREEN);
                        OMNI_E2SS_FW(STEELBLUE);
                        OMNI_E2SS_FW(TAN);
                        OMNI_E2SS_FW(TEAL);
                        OMNI_E2SS_FW(THISTLE);
                        OMNI_E2SS_FW(TOMATO);
                        OMNI_E2SS_FW(TURQUOISE);
                        OMNI_E2SS_FW(VIOLET);
                        OMNI_E2SS_FW(WHEAT);
                        OMNI_E2SS_FW(WHITE);
                        OMNI_E2SS_FW(WHITESMOKE);
                        OMNI_E2SS_FW(YELLOW);
                        OMNI_E2SS_FW(YELLOWGREEN);
                        default: ss << "UNKNOWN"; break;
                    }
                    return ss.str();
                }

                static bool _valid(uint32_t val)
                {
                    return (val ==
                            ALICEBLUE ||
                            ANTIQUEWHITE ||
                            AQUA ||
                            AQUAMARINE ||
                            AZURE ||
                            BEIGE ||
                            BISQUE ||
                            BLACK ||
                            BLANCHEDALMOND ||
                            BLUE ||
                            BLUEVIOLET ||
                            BROWN ||
                            BURLYWOOD ||
                            CADETBLUE ||
                            CHARTREUSE ||
                            CHOCOLATE ||
                            CORAL ||
                            CORNFLOWERBLUE ||
                            CORNSILK ||
                            CRIMSON ||
                            //CYAN || // same as aqua
                            DARKBLUE ||
                            DARKCYAN ||
                            DARKGOLDENROD ||
                            DARKGRAY ||
                            DARKGREEN ||
                            DARKKHAKI ||
                            DARKMAGENTA ||
                            DARKOLIVEGREEN ||
                            DARKORANGE ||
                            DARKORCHID ||
                            DARKRED ||
                            DARKSALMON ||
                            DARKSEAGREEN ||
                            DARKSLATEBLUE ||
                            DARKSLATEGRAY ||
                            DARKTURQUOISE ||
                            DARKVIOLET ||
                            DEEPPINK ||
                            DEEPSKYBLUE ||
                            DIMGRAY ||
                            DODGERBLUE ||
                            FIREBRICK ||
                            FLORALWHITE ||
                            FORESTGREEN ||
                            FUCHSIA ||
                            GAINSBORO ||
                            GHOSTWHITE ||
                            GOLD ||
                            GOLDENROD ||
                            GRAY ||
                            GREEN ||
                            GREENYELLOW ||
                            HONEYDEW ||
                            HOTPINK ||
                            INDIANRED ||
                            INDIGO ||
                            IVORY ||
                            KHAKI ||
                            LAVENDER ||
                            LAVENDERBLUSH ||
                            LAWNGREEN ||
                            LEMONCHIFFON ||
                            LIGHTBLUE ||
                            LIGHTCORAL ||
                            LIGHTCYAN ||
                            LIGHTGOLDENRODYELLOW ||
                            LIGHTGRAY ||
                            LIGHTGREEN ||
                            LIGHTPINK ||
                            LIGHTSALMON ||
                            LIGHTSEAGREEN ||
                            LIGHTSKYBLUE ||
                            LIGHTSLATEGRAY ||
                            LIGHTSTEELBLUE ||
                            LIGHTYELLOW ||
                            LIME ||
                            LIMEGREEN ||
                            LINEN ||
                            //MAGENTA || // same as fuchsia
                            MAROON ||
                            MEDIUMAQUAMARINE ||
                            MEDIUMBLUE ||
                            MEDIUMORCHID ||
                            MEDIUMPURPLE ||
                            MEDIUMSEAGREEN ||
                            MEDIUMSLATEBLUE ||
                            MEDIUMSPRINGGREEN ||
                            MEDIUMTURQUOISE ||
                            MEDIUMVIOLETRED ||
                            MIDNIGHTBLUE ||
                            MINTCREAM ||
                            MISTYROSE ||
                            MOCCASIN ||
                            NAVAJOWHITE ||
                            NAVY ||
                            OLDLACE ||
                            OLIVE ||
                            OLIVEDRAB ||
                            ORANGE ||
                            ORANGERED ||
                            ORCHID ||
                            PALEGOLDENROD ||
                            PALEGREEN ||
                            PALETURQUOISE ||
                            PALEVIOLETRED ||
                            PAPAYAWHIP ||
                            PEACHPUFF ||
                            PERU ||
                            PINK ||
                            PLUM ||
                            POWDERBLUE ||
                            PURPLE ||
                            REBECCAPURPLE ||
                            RED ||
                            ROSYBROWN ||
                            ROYALBLUE ||
                            SADDLEBROWN ||
                            SALMON ||
                            SANDYBROWN ||
                            SEAGREEN ||
                            SEASHELL ||
                            SIENNA ||
                            SILVER ||
                            SKYBLUE ||
                            SLATEBLUE ||
                            SLATEGRAY ||
                            SNOW ||
                            SPRINGGREEN ||
                            STEELBLUE ||
                            TAN ||
                            TEAL ||
                            THISTLE ||
                            TOMATO ||
                            TURQUOISE ||
                            VIOLET ||
                            WHEAT ||
                            WHITE ||
                            WHITESMOKE ||
                            YELLOW ||
                            YELLOWGREEN
                    );
                }
        };
    }
}

#endif // OMNI_KNOWN_COLORS_HPP