File indexing completed on 2024-05-19 15:27:46

0001 /***************************************************************************
0002  *   Copyright (C) 2005-2007 by Gael de Chalendar (aka Kleag)  *
0003  *   kleag@free.fr   *
0004  *                                                                         *
0005  *   This program is free software; you can redistribute it and/or modify  *
0006  *   it under the terms of the GNU General Public License as published by  *
0007  *   the Free Software Foundation; either version 2 of the License, or     *
0008  *   (at your option) any later version.                                   *
0009  *                                                                         *
0010  *   This program is distributed in the hope that it will be useful,       *
0011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
0012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
0013  *   GNU General Public License for more details.                          *
0014  *                                                                         *
0015    You should have received a copy of the GNU General Public License
0016    along with this program; if not, write to the Free Software
0017    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
0018    02110-1301, USA
0019  ***************************************************************************/
0020 #include "dot2qtconsts.h"
0021 #include "canvasnode.h"
0022 #include "dotgrammar.h"
0023 #include "kgraphviewerlib_debug.h"
0024 
0025 #include <QColor>
0026 #include <QDebug>
0027 
0028 const Dot2QtConsts Dot2QtConsts::m_componentData;
0029 
0030 static const struct {
0031     const char *input;
0032     const char *roman;
0033     const char *italic;
0034     const char *bold;
0035     const char *boldItalic;
0036     const char *light;
0037     const char *lightItalic;
0038 } postscriptFontNames[] = {{"arial", "Arial", nullptr, nullptr, nullptr, nullptr, nullptr},
0039                            {"avantgarde", "AvantGarde-Book", nullptr, nullptr, nullptr, nullptr, nullptr},
0040                            {"charter", "CharterBT-Roman", nullptr, nullptr, nullptr, nullptr, nullptr},
0041                            {"garamond", "Garamond-Regular", nullptr, nullptr, nullptr, nullptr, nullptr},
0042                            {"gillsans", "GillSans", nullptr, nullptr, nullptr, nullptr, nullptr},
0043                            {"helvetica", "Helvetica", "Helvetica-Oblique", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Outline", "Helvetica-OutlineOblique"},
0044                            {"palatino", "Palatino", "Palatino-Italic", "Palatino-Bold", "Palatino-BoldItalic", "Palatino", "Palatino-Italic"},
0045                            {"times", "Times-Roman", "Times-Italic", "Times-Bold", "Times-BoldItalic", "Times-Outline", "Times-Italic"},
0046                            {"new century schoolbook", "NewCenturySchlbk-Roman", nullptr, nullptr, nullptr, nullptr, nullptr},
0047                            {"symbol", "Symbol", "Symbol", "Symbol", "Symbol", "Symbol", "Symbol"},
0048                            {"terminal", "Courier", nullptr, nullptr, nullptr, nullptr, nullptr},
0049                            {"times new roman", "TimesNewRoman", nullptr, nullptr, nullptr, nullptr, nullptr},
0050                            {"utopia", "Utopia-Regular", nullptr, nullptr, nullptr, nullptr, nullptr},
0051                            {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}};
0052 
0053 static const struct {
0054     const char *name;
0055     unsigned int r;
0056     unsigned int g;
0057     unsigned int b;
0058 } color_lib[] = {{"snow", 255, 250, 250},
0059                  {"ghost white", 248, 248, 255},
0060                  {"ghostwhite", 248, 248, 255},
0061                  {"white smoke", 245, 245, 245},
0062                  {"whitesmoke", 245, 245, 245},
0063                  {"gainsboro", 220, 220, 220},
0064                  {"floral white", 255, 250, 240},
0065                  {"floralwhite", 255, 250, 240},
0066                  {"old lace", 253, 245, 230},
0067                  {"oldlace", 253, 245, 230},
0068                  {"linen", 250, 240, 230},
0069                  {"antique white", 250, 235, 215},
0070                  {"antiquewhite", 250, 235, 215},
0071                  {"papaya whip", 255, 239, 213},
0072                  {"papayawhip", 255, 239, 213},
0073                  {"blanched almond", 255, 235, 205},
0074                  {"blanchedalmond", 255, 235, 205},
0075                  {"bisque", 255, 228, 196},
0076                  {"peach puff", 255, 218, 185},
0077                  {"peachpuff", 255, 218, 185},
0078                  {"navajo white", 255, 222, 173},
0079                  {"navajowhite", 255, 222, 173},
0080                  {"moccasin", 255, 228, 181},
0081                  {"cornsilk", 255, 248, 220},
0082                  {"ivory", 255, 255, 240},
0083                  {"lemon chiffon", 255, 250, 205},
0084                  {"lemonchiffon", 255, 250, 205},
0085                  {"seashell", 255, 245, 238},
0086                  {"honeydew", 240, 255, 240},
0087                  {"mint cream", 245, 255, 250},
0088                  {"mintcream", 245, 255, 250},
0089                  {"azure", 240, 255, 255},
0090                  {"alice blue", 240, 248, 255},
0091                  {"aliceblue", 240, 248, 255},
0092                  {"lavender", 230, 230, 250},
0093                  {"lavender blush", 255, 240, 245},
0094                  {"lavenderblush", 255, 240, 245},
0095                  {"misty rose", 255, 228, 225},
0096                  {"mistyrose", 255, 228, 225},
0097                  {"white", 255, 255, 255},
0098                  {"black", 0, 0, 0},
0099                  {"dark slate gray", 47, 79, 79},
0100                  {"darkslategray", 47, 79, 79},
0101                  {"dark slate grey", 47, 79, 79},
0102                  {"darkslategrey", 47, 79, 79},
0103                  {"dim gray", 105, 105, 105},
0104                  {"dimgray", 105, 105, 105},
0105                  {"dim grey", 105, 105, 105},
0106                  {"dimgrey", 105, 105, 105},
0107                  {"slate gray", 112, 128, 144},
0108                  {"slategray", 112, 128, 144},
0109                  {"slate grey", 112, 128, 144},
0110                  {"slategrey", 112, 128, 144},
0111                  {"light slate gray", 119, 136, 153},
0112                  {"lightslategray", 119, 136, 153},
0113                  {"light slate grey", 119, 136, 153},
0114                  {"lightslategrey", 119, 136, 153},
0115                  {"gray", 190, 190, 190},
0116                  {"grey", 190, 190, 190},
0117                  {"light grey", 211, 211, 211},
0118                  {"lightgrey", 211, 211, 211},
0119                  {"light gray", 211, 211, 211},
0120                  {"lightgray", 211, 211, 211},
0121                  {"midnight blue", 25, 25, 112},
0122                  {"midnightblue", 25, 25, 112},
0123                  {"navy", 0, 0, 128},
0124                  {"navy blue", 0, 0, 128},
0125                  {"navyblue", 0, 0, 128},
0126                  {"cornflower blue", 100, 149, 237},
0127                  {"cornflowerblue", 100, 149, 237},
0128                  {"dark slate blue", 72, 61, 139},
0129                  {"darkslateblue", 72, 61, 139},
0130                  {"slate blue", 106, 90, 205},
0131                  {"slateblue", 106, 90, 205},
0132                  {"medium slate blue", 123, 104, 238},
0133                  {"mediumslateblue", 123, 104, 238},
0134                  {"light slate blue", 132, 112, 255},
0135                  {"lightslateblue", 132, 112, 255},
0136                  {"medium blue", 0, 0, 205},
0137                  {"mediumblue", 0, 0, 205},
0138                  {"royal blue", 65, 105, 225},
0139                  {"royalblue", 65, 105, 225},
0140                  {"blue", 0, 0, 255},
0141                  {"dodger blue", 30, 144, 255},
0142                  {"dodgerblue", 30, 144, 255},
0143                  {"deep sky blue", 0, 191, 255},
0144                  {"deepskyblue", 0, 191, 255},
0145                  {"sky blue", 135, 206, 235},
0146                  {"skyblue", 135, 206, 235},
0147                  {"light sky blue", 135, 206, 250},
0148                  {"lightskyblue", 135, 206, 250},
0149                  {"steel blue", 70, 130, 180},
0150                  {"steelblue", 70, 130, 180},
0151                  {"light steel blue", 176, 196, 222},
0152                  {"lightsteelblue", 176, 196, 222},
0153                  {"light blue", 173, 216, 230},
0154                  {"lightblue", 173, 216, 230},
0155                  {"powder blue", 176, 224, 230},
0156                  {"powderblue", 176, 224, 230},
0157                  {"pale turquoise", 175, 238, 238},
0158                  {"paleturquoise", 175, 238, 238},
0159                  {"dark turquoise", 0, 206, 209},
0160                  {"darkturquoise", 0, 206, 209},
0161                  {"medium turquoise", 72, 209, 204},
0162                  {"mediumturquoise", 72, 209, 204},
0163                  {"turquoise", 64, 224, 208},
0164                  {"cyan", 0, 255, 255},
0165                  {"light cyan", 224, 255, 255},
0166                  {"lightcyan", 224, 255, 255},
0167                  {"cadet blue", 95, 158, 160},
0168                  {"cadetblue", 95, 158, 160},
0169                  {"medium aquamarine", 102, 205, 170},
0170                  {"mediumaquamarine", 102, 205, 170},
0171                  {"aquamarine", 127, 255, 212},
0172                  {"dark green", 0, 100, 0},
0173                  {"darkgreen", 0, 100, 0},
0174                  {"dark olive green", 85, 107, 47},
0175                  {"darkolivegreen", 85, 107, 47},
0176                  {"dark sea green", 143, 188, 143},
0177                  {"darkseagreen", 143, 188, 143},
0178                  {"sea green", 46, 139, 87},
0179                  {"seagreen", 46, 139, 87},
0180                  {"medium sea green", 60, 179, 113},
0181                  {"mediumseagreen", 60, 179, 113},
0182                  {"light sea green", 32, 178, 170},
0183                  {"lightseagreen", 32, 178, 170},
0184                  {"pale green", 152, 251, 152},
0185                  {"palegreen", 152, 251, 152},
0186                  {"spring green", 0, 255, 127},
0187                  {"springgreen", 0, 255, 127},
0188                  {"lawn green", 124, 252, 0},
0189                  {"lawngreen", 124, 252, 0},
0190                  {"green", 0, 255, 0},
0191                  {"chartreuse", 127, 255, 0},
0192                  {"medium spring green", 0, 250, 154},
0193                  {"mediumspringgreen", 0, 250, 154},
0194                  {"green yellow", 173, 255, 47},
0195                  {"greenyellow", 173, 255, 47},
0196                  {"lime green", 50, 205, 50},
0197                  {"limegreen", 50, 205, 50},
0198                  {"yellow green", 154, 205, 50},
0199                  {"yellowgreen", 154, 205, 50},
0200                  {"forest green", 34, 139, 34},
0201                  {"forestgreen", 34, 139, 34},
0202                  {"olive drab", 107, 142, 35},
0203                  {"olivedrab", 107, 142, 35},
0204                  {"dark khaki", 189, 183, 107},
0205                  {"darkkhaki", 189, 183, 107},
0206                  {"khaki", 240, 230, 140},
0207                  {"pale goldenrod", 238, 232, 170},
0208                  {"palegoldenrod", 238, 232, 170},
0209                  {"light goldenrod yellow", 250, 250, 210},
0210                  {"lightgoldenrodyellow", 250, 250, 210},
0211                  {"light yellow", 255, 255, 224},
0212                  {"lightyellow", 255, 255, 224},
0213                  {"yellow", 255, 255, 0},
0214                  {"gold", 255, 215, 0},
0215                  {"light goldenrod", 238, 221, 130},
0216                  {"lightgoldenrod", 238, 221, 130},
0217                  {"goldenrod", 218, 165, 32},
0218                  {"dark goldenrod", 184, 134, 11},
0219                  {"darkgoldenrod", 184, 134, 11},
0220                  {"rosy brown", 188, 143, 143},
0221                  {"rosybrown", 188, 143, 143},
0222                  {"indian red", 205, 92, 92},
0223                  {"indianred", 205, 92, 92},
0224                  {"saddle brown", 139, 69, 19},
0225                  {"saddlebrown", 139, 69, 19},
0226                  {"sienna", 160, 82, 45},
0227                  {"peru", 205, 133, 63},
0228                  {"burlywood", 222, 184, 135},
0229                  {"beige", 245, 245, 220},
0230                  {"wheat", 245, 222, 179},
0231                  {"sandy brown", 244, 164, 96},
0232                  {"sandybrown", 244, 164, 96},
0233                  {"tan", 210, 180, 140},
0234                  {"chocolate", 210, 105, 30},
0235                  {"firebrick", 178, 34, 34},
0236                  {"brown", 165, 42, 42},
0237                  {"dark salmon", 233, 150, 122},
0238                  {"darksalmon", 233, 150, 122},
0239                  {"salmon", 250, 128, 114},
0240                  {"light salmon", 255, 160, 122},
0241                  {"lightsalmon", 255, 160, 122},
0242                  {"orange", 255, 165, 0},
0243                  {"dark orange", 255, 140, 0},
0244                  {"darkorange", 255, 140, 0},
0245                  {"coral", 255, 127, 80},
0246                  {"light coral", 240, 128, 128},
0247                  {"lightcoral", 240, 128, 128},
0248                  {"tomato", 255, 99, 71},
0249                  {"orange red", 255, 69, 0},
0250                  {"orangered", 255, 69, 0},
0251                  {"red", 255, 0, 0},
0252                  {"hot pink", 255, 105, 180},
0253                  {"hotpink", 255, 105, 180},
0254                  {"deep pink", 255, 20, 147},
0255                  {"deeppink", 255, 20, 147},
0256                  {"pink", 255, 192, 203},
0257                  {"light pink", 255, 182, 193},
0258                  {"lightpink", 255, 182, 193},
0259                  {"pale violet red", 219, 112, 147},
0260                  {"palevioletred", 219, 112, 147},
0261                  {"maroon", 176, 48, 96},
0262                  {"medium violet red", 199, 21, 133},
0263                  {"mediumvioletred", 199, 21, 133},
0264                  {"violet red", 208, 32, 144},
0265                  {"violetred", 208, 32, 144},
0266                  {"magenta", 255, 0, 255},
0267                  {"violet", 238, 130, 238},
0268                  {"plum", 221, 160, 221},
0269                  {"orchid", 218, 112, 214},
0270                  {"medium orchid", 186, 85, 211},
0271                  {"mediumorchid", 186, 85, 211},
0272                  {"dark orchid", 153, 50, 204},
0273                  {"darkorchid", 153, 50, 204},
0274                  {"dark violet", 148, 0, 211},
0275                  {"darkviolet", 148, 0, 211},
0276                  {"blue violet", 138, 43, 226},
0277                  {"blueviolet", 138, 43, 226},
0278                  {"purple", 160, 32, 240},
0279                  {"medium purple", 147, 112, 219},
0280                  {"mediumpurple", 147, 112, 219},
0281                  {"thistle", 216, 191, 216},
0282                  {"snow1", 255, 250, 250},
0283                  {"snow2", 238, 233, 233},
0284                  {"snow3", 205, 201, 201},
0285                  {"snow4", 139, 137, 137},
0286                  {"seashell1", 255, 245, 238},
0287                  {"seashell2", 238, 229, 222},
0288                  {"seashell3", 205, 197, 191},
0289                  {"seashell4", 139, 134, 130},
0290                  {"antiquewhite1", 255, 239, 219},
0291                  {"antiquewhite2", 238, 223, 204},
0292                  {"antiquewhite3", 205, 192, 176},
0293                  {"antiquewhite4", 139, 131, 120},
0294                  {"bisque1", 255, 228, 196},
0295                  {"bisque2", 238, 213, 183},
0296                  {"bisque3", 205, 183, 158},
0297                  {"bisque4", 139, 125, 107},
0298                  {"peachpuff1", 255, 218, 185},
0299                  {"peachpuff2", 238, 203, 173},
0300                  {"peachpuff3", 205, 175, 149},
0301                  {"peachpuff4", 139, 119, 101},
0302                  {"navajowhite1", 255, 222, 173},
0303                  {"navajowhite2", 238, 207, 161},
0304                  {"navajowhite3", 205, 179, 139},
0305                  {"navajowhite4", 139, 121, 94},
0306                  {"lemonchiffon1", 255, 250, 205},
0307                  {"lemonchiffon2", 238, 233, 191},
0308                  {"lemonchiffon3", 205, 201, 165},
0309                  {"lemonchiffon4", 139, 137, 112},
0310                  {"cornsilk1", 255, 248, 220},
0311                  {"cornsilk2", 238, 232, 205},
0312                  {"cornsilk3", 205, 200, 177},
0313                  {"cornsilk4", 139, 136, 120},
0314                  {"ivory1", 255, 255, 240},
0315                  {"ivory2", 238, 238, 224},
0316                  {"ivory3", 205, 205, 193},
0317                  {"ivory4", 139, 139, 131},
0318                  {"honeydew1", 240, 255, 240},
0319                  {"honeydew2", 224, 238, 224},
0320                  {"honeydew3", 193, 205, 193},
0321                  {"honeydew4", 131, 139, 131},
0322                  {"lavenderblush1", 255, 240, 245},
0323                  {"lavenderblush2", 238, 224, 229},
0324                  {"lavenderblush3", 205, 193, 197},
0325                  {"lavenderblush4", 139, 131, 134},
0326                  {"mistyrose1", 255, 228, 225},
0327                  {"mistyrose2", 238, 213, 210},
0328                  {"mistyrose3", 205, 183, 181},
0329                  {"mistyrose4", 139, 125, 123},
0330                  {"azure1", 240, 255, 255},
0331                  {"azure2", 224, 238, 238},
0332                  {"azure3", 193, 205, 205},
0333                  {"azure4", 131, 139, 139},
0334                  {"slateblue1", 131, 111, 255},
0335                  {"slateblue2", 122, 103, 238},
0336                  {"slateblue3", 105, 89, 205},
0337                  {"slateblue4", 71, 60, 139},
0338                  {"royalblue1", 72, 118, 255},
0339                  {"royalblue2", 67, 110, 238},
0340                  {"royalblue3", 58, 95, 205},
0341                  {"royalblue4", 39, 64, 139},
0342                  {"blue1", 0, 0, 255},
0343                  {"blue2", 0, 0, 238},
0344                  {"blue3", 0, 0, 205},
0345                  {"blue4", 0, 0, 139},
0346                  {"dodgerblue1", 30, 144, 255},
0347                  {"dodgerblue2", 28, 134, 238},
0348                  {"dodgerblue3", 24, 116, 205},
0349                  {"dodgerblue4", 16, 78, 139},
0350                  {"steelblue1", 99, 184, 255},
0351                  {"steelblue2", 92, 172, 238},
0352                  {"steelblue3", 79, 148, 205},
0353                  {"steelblue4", 54, 100, 139},
0354                  {"deepskyblue1", 0, 191, 255},
0355                  {"deepskyblue2", 0, 178, 238},
0356                  {"deepskyblue3", 0, 154, 205},
0357                  {"deepskyblue4", 0, 104, 139},
0358                  {"skyblue1", 135, 206, 255},
0359                  {"skyblue2", 126, 192, 238},
0360                  {"skyblue3", 108, 166, 205},
0361                  {"skyblue4", 74, 112, 139},
0362                  {"lightskyblue1", 176, 226, 255},
0363                  {"lightskyblue2", 164, 211, 238},
0364                  {"lightskyblue3", 141, 182, 205},
0365                  {"lightskyblue4", 96, 123, 139},
0366                  {"slategray1", 198, 226, 255},
0367                  {"slategray2", 185, 211, 238},
0368                  {"slategray3", 159, 182, 205},
0369                  {"slategray4", 108, 123, 139},
0370                  {"lightsteelblue1", 202, 225, 255},
0371                  {"lightsteelblue2", 188, 210, 238},
0372                  {"lightsteelblue3", 162, 181, 205},
0373                  {"lightsteelblue4", 110, 123, 139},
0374                  {"lightblue1", 191, 239, 255},
0375                  {"lightblue2", 178, 223, 238},
0376                  {"lightblue3", 154, 192, 205},
0377                  {"lightblue4", 104, 131, 139},
0378                  {"lightcyan1", 224, 255, 255},
0379                  {"lightcyan2", 209, 238, 238},
0380                  {"lightcyan3", 180, 205, 205},
0381                  {"lightcyan4", 122, 139, 139},
0382                  {"paleturquoise1", 187, 255, 255},
0383                  {"paleturquoise2", 174, 238, 238},
0384                  {"paleturquoise3", 150, 205, 205},
0385                  {"paleturquoise4", 102, 139, 139},
0386                  {"cadetblue1", 152, 245, 255},
0387                  {"cadetblue2", 142, 229, 238},
0388                  {"cadetblue3", 122, 197, 205},
0389                  {"cadetblue4", 83, 134, 139},
0390                  {"turquoise1", 0, 245, 255},
0391                  {"turquoise2", 0, 229, 238},
0392                  {"turquoise3", 0, 197, 205},
0393                  {"turquoise4", 0, 134, 139},
0394                  {"cyan1", 0, 255, 255},
0395                  {"cyan2", 0, 238, 238},
0396                  {"cyan3", 0, 205, 205},
0397                  {"cyan4", 0, 139, 139},
0398                  {"darkslategray1", 151, 255, 255},
0399                  {"darkslategray2", 141, 238, 238},
0400                  {"darkslategray3", 121, 205, 205},
0401                  {"darkslategray4", 82, 139, 139},
0402                  {"aquamarine1", 127, 255, 212},
0403                  {"aquamarine2", 118, 238, 198},
0404                  {"aquamarine3", 102, 205, 170},
0405                  {"aquamarine4", 69, 139, 116},
0406                  {"darkseagreen1", 193, 255, 193},
0407                  {"darkseagreen2", 180, 238, 180},
0408                  {"darkseagreen3", 155, 205, 155},
0409                  {"darkseagreen4", 105, 139, 105},
0410                  {"seagreen1", 84, 255, 159},
0411                  {"seagreen2", 78, 238, 148},
0412                  {"seagreen3", 67, 205, 128},
0413                  {"seagreen4", 46, 139, 87},
0414                  {"palegreen1", 154, 255, 154},
0415                  {"palegreen2", 144, 238, 144},
0416                  {"palegreen3", 124, 205, 124},
0417                  {"palegreen4", 84, 139, 84},
0418                  {"springgreen1", 0, 255, 127},
0419                  {"springgreen2", 0, 238, 118},
0420                  {"springgreen3", 0, 205, 102},
0421                  {"springgreen4", 0, 139, 69},
0422                  {"green1", 0, 255, 0},
0423                  {"green2", 0, 238, 0},
0424                  {"green3", 0, 205, 0},
0425                  {"green4", 0, 139, 0},
0426                  {"chartreuse1", 127, 255, 0},
0427                  {"chartreuse2", 118, 238, 0},
0428                  {"chartreuse3", 102, 205, 0},
0429                  {"chartreuse4", 69, 139, 0},
0430                  {"olivedrab1", 192, 255, 62},
0431                  {"olivedrab2", 179, 238, 58},
0432                  {"olivedrab3", 154, 205, 50},
0433                  {"olivedrab4", 105, 139, 34},
0434                  {"darkolivegreen1", 202, 255, 112},
0435                  {"darkolivegreen2", 188, 238, 104},
0436                  {"darkolivegreen3", 162, 205, 90},
0437                  {"darkolivegreen4", 110, 139, 61},
0438                  {"khaki1", 255, 246, 143},
0439                  {"khaki2", 238, 230, 133},
0440                  {"khaki3", 205, 198, 115},
0441                  {"khaki4", 139, 134, 78},
0442                  {"lightgoldenrod1", 255, 236, 139},
0443                  {"lightgoldenrod2", 238, 220, 130},
0444                  {"lightgoldenrod3", 205, 190, 112},
0445                  {"lightgoldenrod4", 139, 129, 76},
0446                  {"lightyellow1", 255, 255, 224},
0447                  {"lightyellow2", 238, 238, 209},
0448                  {"lightyellow3", 205, 205, 180},
0449                  {"lightyellow4", 139, 139, 122},
0450                  {"yellow1", 255, 255, 0},
0451                  {"yellow2", 238, 238, 0},
0452                  {"yellow3", 205, 205, 0},
0453                  {"yellow4", 139, 139, 0},
0454                  {"gold1", 255, 215, 0},
0455                  {"gold2", 238, 201, 0},
0456                  {"gold3", 205, 173, 0},
0457                  {"gold4", 139, 117, 0},
0458                  {"goldenrod1", 255, 193, 37},
0459                  {"goldenrod2", 238, 180, 34},
0460                  {"goldenrod3", 205, 155, 29},
0461                  {"goldenrod4", 139, 105, 20},
0462                  {"darkgoldenrod1", 255, 185, 15},
0463                  {"darkgoldenrod2", 238, 173, 14},
0464                  {"darkgoldenrod3", 205, 149, 12},
0465                  {"darkgoldenrod4", 139, 101, 8},
0466                  {"rosybrown1", 255, 193, 193},
0467                  {"rosybrown2", 238, 180, 180},
0468                  {"rosybrown3", 205, 155, 155},
0469                  {"rosybrown4", 139, 105, 105},
0470                  {"indianred1", 255, 106, 106},
0471                  {"indianred2", 238, 99, 99},
0472                  {"indianred3", 205, 85, 85},
0473                  {"indianred4", 139, 58, 58},
0474                  {"sienna1", 255, 130, 71},
0475                  {"sienna2", 238, 121, 66},
0476                  {"sienna3", 205, 104, 57},
0477                  {"sienna4", 139, 71, 38},
0478                  {"burlywood1", 255, 211, 155},
0479                  {"burlywood2", 238, 197, 145},
0480                  {"burlywood3", 205, 170, 125},
0481                  {"burlywood4", 139, 115, 85},
0482                  {"wheat1", 255, 231, 186},
0483                  {"wheat2", 238, 216, 174},
0484                  {"wheat3", 205, 186, 150},
0485                  {"wheat4", 139, 126, 102},
0486                  {"tan1", 255, 165, 79},
0487                  {"tan2", 238, 154, 73},
0488                  {"tan3", 205, 133, 63},
0489                  {"tan4", 139, 90, 43},
0490                  {"chocolate1", 255, 127, 36},
0491                  {"chocolate2", 238, 118, 33},
0492                  {"chocolate3", 205, 102, 29},
0493                  {"chocolate4", 139, 69, 19},
0494                  {"firebrick1", 255, 48, 48},
0495                  {"firebrick2", 238, 44, 44},
0496                  {"firebrick3", 205, 38, 38},
0497                  {"firebrick4", 139, 26, 26},
0498                  {"brown1", 255, 64, 64},
0499                  {"brown2", 238, 59, 59},
0500                  {"brown3", 205, 51, 51},
0501                  {"brown4", 139, 35, 35},
0502                  {"salmon1", 255, 140, 105},
0503                  {"salmon2", 238, 130, 98},
0504                  {"salmon3", 205, 112, 84},
0505                  {"salmon4", 139, 76, 57},
0506                  {"lightsalmon1", 255, 160, 122},
0507                  {"lightsalmon2", 238, 149, 114},
0508                  {"lightsalmon3", 205, 129, 98},
0509                  {"lightsalmon4", 139, 87, 66},
0510                  {"orange1", 255, 165, 0},
0511                  {"orange2", 238, 154, 0},
0512                  {"orange3", 205, 133, 0},
0513                  {"orange4", 139, 90, 0},
0514                  {"darkorange1", 255, 127, 0},
0515                  {"darkorange2", 238, 118, 0},
0516                  {"darkorange3", 205, 102, 0},
0517                  {"darkorange4", 139, 69, 0},
0518                  {"coral1", 255, 114, 86},
0519                  {"coral2", 238, 106, 80},
0520                  {"coral3", 205, 91, 69},
0521                  {"coral4", 139, 62, 47},
0522                  {"tomato1", 255, 99, 71},
0523                  {"tomato2", 238, 92, 66},
0524                  {"tomato3", 205, 79, 57},
0525                  {"tomato4", 139, 54, 38},
0526                  {"orangered1", 255, 69, 0},
0527                  {"orangered2", 238, 64, 0},
0528                  {"orangered3", 205, 55, 0},
0529                  {"orangered4", 139, 37, 0},
0530                  {"red1", 255, 0, 0},
0531                  {"red2", 238, 0, 0},
0532                  {"red3", 205, 0, 0},
0533                  {"red4", 139, 0, 0},
0534                  {"deeppink1", 255, 20, 147},
0535                  {"deeppink2", 238, 18, 137},
0536                  {"deeppink3", 205, 16, 118},
0537                  {"deeppink4", 139, 10, 80},
0538                  {"hotpink1", 255, 110, 180},
0539                  {"hotpink2", 238, 106, 167},
0540                  {"hotpink3", 205, 96, 144},
0541                  {"hotpink4", 139, 58, 98},
0542                  {"pink1", 255, 181, 197},
0543                  {"pink2", 238, 169, 184},
0544                  {"pink3", 205, 145, 158},
0545                  {"pink4", 139, 99, 108},
0546                  {"lightpink1", 255, 174, 185},
0547                  {"lightpink2", 238, 162, 173},
0548                  {"lightpink3", 205, 140, 149},
0549                  {"lightpink4", 139, 95, 101},
0550                  {"palevioletred1", 255, 130, 171},
0551                  {"palevioletred2", 238, 121, 159},
0552                  {"palevioletred3", 205, 104, 137},
0553                  {"palevioletred4", 139, 71, 93},
0554                  {"maroon1", 255, 52, 179},
0555                  {"maroon2", 238, 48, 167},
0556                  {"maroon3", 205, 41, 144},
0557                  {"maroon4", 139, 28, 98},
0558                  {"violetred1", 255, 62, 150},
0559                  {"violetred2", 238, 58, 140},
0560                  {"violetred3", 205, 50, 120},
0561                  {"violetred4", 139, 34, 82},
0562                  {"magenta1", 255, 0, 255},
0563                  {"magenta2", 238, 0, 238},
0564                  {"magenta3", 205, 0, 205},
0565                  {"magenta4", 139, 0, 139},
0566                  {"orchid1", 255, 131, 250},
0567                  {"orchid2", 238, 122, 233},
0568                  {"orchid3", 205, 105, 201},
0569                  {"orchid4", 139, 71, 137},
0570                  {"plum1", 255, 187, 255},
0571                  {"plum2", 238, 174, 238},
0572                  {"plum3", 205, 150, 205},
0573                  {"plum4", 139, 102, 139},
0574                  {"mediumorchid1", 224, 102, 255},
0575                  {"mediumorchid2", 209, 95, 238},
0576                  {"mediumorchid3", 180, 82, 205},
0577                  {"mediumorchid4", 122, 55, 139},
0578                  {"darkorchid1", 191, 62, 255},
0579                  {"darkorchid2", 178, 58, 238},
0580                  {"darkorchid3", 154, 50, 205},
0581                  {"darkorchid4", 104, 34, 139},
0582                  {"purple1", 155, 48, 255},
0583                  {"purple2", 145, 44, 238},
0584                  {"purple3", 125, 38, 205},
0585                  {"purple4", 85, 26, 139},
0586                  {"mediumpurple1", 171, 130, 255},
0587                  {"mediumpurple2", 159, 121, 238},
0588                  {"mediumpurple3", 137, 104, 205},
0589                  {"mediumpurple4", 93, 71, 139},
0590                  {"thistle1", 255, 225, 255},
0591                  {"thistle2", 238, 210, 238},
0592                  {"thistle3", 205, 181, 205},
0593                  {"thistle4", 139, 123, 139},
0594                  {"gray0", 0, 0, 0},
0595                  {"grey0", 0, 0, 0},
0596                  {"gray1", 3, 3, 3},
0597                  {"grey1", 3, 3, 3},
0598                  {"gray2", 5, 5, 5},
0599                  {"grey2", 5, 5, 5},
0600                  {"gray3", 8, 8, 8},
0601                  {"grey3", 8, 8, 8},
0602                  {"gray4", 10, 10, 10},
0603                  {"grey4", 10, 10, 10},
0604                  {"gray5", 13, 13, 13},
0605                  {"grey5", 13, 13, 13},
0606                  {"gray6", 15, 15, 15},
0607                  {"grey6", 15, 15, 15},
0608                  {"gray7", 18, 18, 18},
0609                  {"grey7", 18, 18, 18},
0610                  {"gray8", 20, 20, 20},
0611                  {"grey8", 20, 20, 20},
0612                  {"gray9", 23, 23, 23},
0613                  {"grey9", 23, 23, 23},
0614                  {"gray10", 26, 26, 26},
0615                  {"grey10", 26, 26, 26},
0616                  {"gray11", 28, 28, 28},
0617                  {"grey11", 28, 28, 28},
0618                  {"gray12", 31, 31, 31},
0619                  {"grey12", 31, 31, 31},
0620                  {"gray13", 33, 33, 33},
0621                  {"grey13", 33, 33, 33},
0622                  {"gray14", 36, 36, 36},
0623                  {"grey14", 36, 36, 36},
0624                  {"gray15", 38, 38, 38},
0625                  {"grey15", 38, 38, 38},
0626                  {"gray16", 41, 41, 41},
0627                  {"grey16", 41, 41, 41},
0628                  {"gray17", 43, 43, 43},
0629                  {"grey17", 43, 43, 43},
0630                  {"gray18", 46, 46, 46},
0631                  {"grey18", 46, 46, 46},
0632                  {"gray19", 48, 48, 48},
0633                  {"grey19", 48, 48, 48},
0634                  {"gray20", 51, 51, 51},
0635                  {"grey20", 51, 51, 51},
0636                  {"gray21", 54, 54, 54},
0637                  {"grey21", 54, 54, 54},
0638                  {"gray22", 56, 56, 56},
0639                  {"grey22", 56, 56, 56},
0640                  {"gray23", 59, 59, 59},
0641                  {"grey23", 59, 59, 59},
0642                  {"gray24", 61, 61, 61},
0643                  {"grey24", 61, 61, 61},
0644                  {"gray25", 64, 64, 64},
0645                  {"grey25", 64, 64, 64},
0646                  {"gray26", 66, 66, 66},
0647                  {"grey26", 66, 66, 66},
0648                  {"gray27", 69, 69, 69},
0649                  {"grey27", 69, 69, 69},
0650                  {"gray28", 71, 71, 71},
0651                  {"grey28", 71, 71, 71},
0652                  {"gray29", 74, 74, 74},
0653                  {"grey29", 74, 74, 74},
0654                  {"gray30", 77, 77, 77},
0655                  {"grey30", 77, 77, 77},
0656                  {"gray31", 79, 79, 79},
0657                  {"grey31", 79, 79, 79},
0658                  {"gray32", 82, 82, 82},
0659                  {"grey32", 82, 82, 82},
0660                  {"gray33", 84, 84, 84},
0661                  {"grey33", 84, 84, 84},
0662                  {"gray34", 87, 87, 87},
0663                  {"grey34", 87, 87, 87},
0664                  {"gray35", 89, 89, 89},
0665                  {"grey35", 89, 89, 89},
0666                  {"gray36", 92, 92, 92},
0667                  {"grey36", 92, 92, 92},
0668                  {"gray37", 94, 94, 94},
0669                  {"grey37", 94, 94, 94},
0670                  {"gray38", 97, 97, 97},
0671                  {"grey38", 97, 97, 97},
0672                  {"gray39", 99, 99, 99},
0673                  {"grey39", 99, 99, 99},
0674                  {"gray40", 102, 102, 102},
0675                  {"grey40", 102, 102, 102},
0676                  {"gray41", 105, 105, 105},
0677                  {"grey41", 105, 105, 105},
0678                  {"gray42", 107, 107, 107},
0679                  {"grey42", 107, 107, 107},
0680                  {"gray43", 110, 110, 110},
0681                  {"grey43", 110, 110, 110},
0682                  {"gray44", 112, 112, 112},
0683                  {"grey44", 112, 112, 112},
0684                  {"gray45", 115, 115, 115},
0685                  {"grey45", 115, 115, 115},
0686                  {"gray46", 117, 117, 117},
0687                  {"grey46", 117, 117, 117},
0688                  {"gray47", 120, 120, 120},
0689                  {"grey47", 120, 120, 120},
0690                  {"gray48", 122, 122, 122},
0691                  {"grey48", 122, 122, 122},
0692                  {"gray49", 125, 125, 125},
0693                  {"grey49", 125, 125, 125},
0694                  {"gray50", 127, 127, 127},
0695                  {"grey50", 127, 127, 127},
0696                  {"gray51", 130, 130, 130},
0697                  {"grey51", 130, 130, 130},
0698                  {"gray52", 133, 133, 133},
0699                  {"grey52", 133, 133, 133},
0700                  {"gray53", 135, 135, 135},
0701                  {"grey53", 135, 135, 135},
0702                  {"gray54", 138, 138, 138},
0703                  {"grey54", 138, 138, 138},
0704                  {"gray55", 140, 140, 140},
0705                  {"grey55", 140, 140, 140},
0706                  {"gray56", 143, 143, 143},
0707                  {"grey56", 143, 143, 143},
0708                  {"gray57", 145, 145, 145},
0709                  {"grey57", 145, 145, 145},
0710                  {"gray58", 148, 148, 148},
0711                  {"grey58", 148, 148, 148},
0712                  {"gray59", 150, 150, 150},
0713                  {"grey59", 150, 150, 150},
0714                  {"gray60", 153, 153, 153},
0715                  {"grey60", 153, 153, 153},
0716                  {"gray61", 156, 156, 156},
0717                  {"grey61", 156, 156, 156},
0718                  {"gray62", 158, 158, 158},
0719                  {"grey62", 158, 158, 158},
0720                  {"gray63", 161, 161, 161},
0721                  {"grey63", 161, 161, 161},
0722                  {"gray64", 163, 163, 163},
0723                  {"grey64", 163, 163, 163},
0724                  {"gray65", 166, 166, 166},
0725                  {"grey65", 166, 166, 166},
0726                  {"gray66", 168, 168, 168},
0727                  {"grey66", 168, 168, 168},
0728                  {"gray67", 171, 171, 171},
0729                  {"grey67", 171, 171, 171},
0730                  {"gray68", 173, 173, 173},
0731                  {"grey68", 173, 173, 173},
0732                  {"gray69", 176, 176, 176},
0733                  {"grey69", 176, 176, 176},
0734                  {"gray70", 179, 179, 179},
0735                  {"grey70", 179, 179, 179},
0736                  {"gray71", 181, 181, 181},
0737                  {"grey71", 181, 181, 181},
0738                  {"gray72", 184, 184, 184},
0739                  {"grey72", 184, 184, 184},
0740                  {"gray73", 186, 186, 186},
0741                  {"grey73", 186, 186, 186},
0742                  {"gray74", 189, 189, 189},
0743                  {"grey74", 189, 189, 189},
0744                  {"gray75", 191, 191, 191},
0745                  {"grey75", 191, 191, 191},
0746                  {"gray76", 194, 194, 194},
0747                  {"grey76", 194, 194, 194},
0748                  {"gray77", 196, 196, 196},
0749                  {"grey77", 196, 196, 196},
0750                  {"gray78", 199, 199, 199},
0751                  {"grey78", 199, 199, 199},
0752                  {"gray79", 201, 201, 201},
0753                  {"grey79", 201, 201, 201},
0754                  {"gray80", 204, 204, 204},
0755                  {"grey80", 204, 204, 204},
0756                  {"gray81", 207, 207, 207},
0757                  {"grey81", 207, 207, 207},
0758                  {"gray82", 209, 209, 209},
0759                  {"grey82", 209, 209, 209},
0760                  {"gray83", 212, 212, 212},
0761                  {"grey83", 212, 212, 212},
0762                  {"gray84", 214, 214, 214},
0763                  {"grey84", 214, 214, 214},
0764                  {"gray85", 217, 217, 217},
0765                  {"grey85", 217, 217, 217},
0766                  {"gray86", 219, 219, 219},
0767                  {"grey86", 219, 219, 219},
0768                  {"gray87", 222, 222, 222},
0769                  {"grey87", 222, 222, 222},
0770                  {"gray88", 224, 224, 224},
0771                  {"grey88", 224, 224, 224},
0772                  {"gray89", 227, 227, 227},
0773                  {"grey89", 227, 227, 227},
0774                  {"gray90", 229, 229, 229},
0775                  {"grey90", 229, 229, 229},
0776                  {"gray91", 232, 232, 232},
0777                  {"grey91", 232, 232, 232},
0778                  {"gray92", 235, 235, 235},
0779                  {"grey92", 235, 235, 235},
0780                  {"gray93", 237, 237, 237},
0781                  {"grey93", 237, 237, 237},
0782                  {"gray94", 240, 240, 240},
0783                  {"grey94", 240, 240, 240},
0784                  {"gray95", 242, 242, 242},
0785                  {"grey95", 242, 242, 242},
0786                  {"gray96", 245, 245, 245},
0787                  {"grey96", 245, 245, 245},
0788                  {"gray97", 247, 247, 247},
0789                  {"grey97", 247, 247, 247},
0790                  {"gray98", 250, 250, 250},
0791                  {"grey98", 250, 250, 250},
0792                  {"gray99", 252, 252, 252},
0793                  {"grey99", 252, 252, 252},
0794                  {"gray100", 255, 255, 255},
0795                  {"grey100", 255, 255, 255},
0796                  {nullptr, 0, 0, 0}};
0797 
0798 Dot2QtConsts::Dot2QtConsts()
0799 {
0800     m_penStyles["solid"] = Qt::SolidLine;
0801     m_penStyles["dashed"] = Qt::DashLine;
0802     m_penStyles["dotted"] = Qt::DotLine;
0803     m_penStyles["invis"] = Qt::NoPen;
0804 
0805     m_colors["crimson"] = "#DC143C";
0806     m_colors["hot_pink"] = "#FF69B4";
0807     m_colors["light_yellow"] = "#FFFFE0";
0808     m_colors["slate_blue"] = "#6A5ACD";
0809 
0810     uint i = 0;
0811     while (postscriptFontNames[i].input) {
0812         QFont font(postscriptFontNames[i].input);
0813         m_psFonts[postscriptFontNames[i].roman] = font;
0814         if (postscriptFontNames[i].italic) {
0815             QFont italic = font;
0816             italic.setItalic(true);
0817             m_psFonts[postscriptFontNames[i].italic] = italic;
0818         }
0819         if (postscriptFontNames[i].bold) {
0820             QFont bold = font;
0821             bold.setBold(true);
0822             m_psFonts[postscriptFontNames[i].bold] = bold;
0823         }
0824         if (postscriptFontNames[i].boldItalic) {
0825             QFont boldItalic = font;
0826             boldItalic.setItalic(true);
0827             boldItalic.setBold(true);
0828             m_psFonts[postscriptFontNames[i].boldItalic] = boldItalic;
0829         }
0830         if (postscriptFontNames[i].light) {
0831             QFont light = font;
0832             light.setWeight(QFont::Light);
0833             m_psFonts[postscriptFontNames[i].light] = light;
0834         }
0835         if (postscriptFontNames[i].lightItalic) {
0836             QFont lightItalic = font;
0837             lightItalic.setWeight(QFont::Light);
0838             lightItalic.setItalic(true);
0839             m_psFonts[postscriptFontNames[i].lightItalic] = lightItalic;
0840         }
0841         i++;
0842     }
0843 
0844     uint j = 0;
0845     while (color_lib[j].name) {
0846         //     () << "Adding color " << color_lib[j].name;
0847         m_qcolors[color_lib[j].name] = QColor(color_lib[j].r, color_lib[j].g, color_lib[j].b);
0848         j++;
0849     }
0850 }
0851 
0852 Dot2QtConsts::~Dot2QtConsts()
0853 {
0854 }
0855 
0856 QColor Dot2QtConsts::qtColor(const QString &dotColor) const
0857 {
0858     //   () << "Dot2QtConsts::qtColor";
0859     QColor color;
0860     if (parse_numeric_color(qPrintable(dotColor), color)) {
0861         return color;
0862     } else {
0863         if (m_qcolors.find(dotColor) != m_qcolors.end()) {
0864             return (*m_qcolors.find(dotColor));
0865         }
0866         QColor res(dotColor);
0867         if (res.isValid()) {
0868             return res;
0869         } else {
0870             if (m_colors.find(dotColor) != m_colors.end()) {
0871                 res = QColor((*m_colors.find(dotColor)));
0872                 if (res.isValid()) {
0873                     return res;
0874                 } else {
0875                     qCWarning(KGRAPHVIEWERLIB_LOG) << "Unknown stored DOT color '" << dotColor << "'. returning Qt black";
0876                     return Qt::black;
0877                 }
0878             } else {
0879                 //           qCWarning(KGRAPHVIEWERLIB_LOG) << "Unknown DOT color '" << dotColor << "'. returning Qt black";
0880                 return Qt::black;
0881             }
0882         }
0883     }
0884 }
0885 
0886 Qt::PenStyle Dot2QtConsts::qtPenStyle(const QString &dotLineStyle) const
0887 {
0888     if (m_penStyles.find(dotLineStyle) != m_penStyles.end())
0889         return (*(m_penStyles.find(dotLineStyle)));
0890     else {
0891         if (!dotLineStyle.left(12).isEmpty() && dotLineStyle.left(12) != "setlinewidth")
0892             qCWarning(KGRAPHVIEWERLIB_LOG) << "Unknown DOT line style '" << dotLineStyle << "'. returning Qt solid line";
0893         return Qt::SolidLine;
0894     }
0895 }
0896 
0897 QFont Dot2QtConsts::qtFont(const QString &dotFont) const
0898 {
0899     if (m_psFonts.find(dotFont) != m_psFonts.end())
0900         return (*(m_psFonts.find(dotFont)));
0901     else {
0902         return QFont(QFont::substitute(dotFont));
0903     }
0904 }