/* Copyright 2006-2020 The QElectroTech Team This file is part of QElectroTech. QElectroTech is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. QElectroTech is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with QElectroTech. If not, see . */ #include "elementpicturefactory.h" #include "elementslocation.h" #include "qet.h" #include "qetapp.h" #include "partline.h" #include #include #include #include #include #include #include ElementPictureFactory* ElementPictureFactory::m_factory = nullptr; /** @brief ElementPictureFactory::getPictures Set the picture of the element at location. Note, picture can be null @param location @param picture @param low_picture */ void ElementPictureFactory::getPictures(const ElementsLocation &location, QPicture &picture, QPicture &low_picture) { if(!location.exist()) { return; } QUuid uuid = location.uuid(); if(Q_UNLIKELY(uuid.isNull())) { build(location, &picture, &low_picture); return; } if(m_pictures_H.keys().contains(uuid)) { picture = m_pictures_H.value(uuid); low_picture = m_low_pictures_H.value(uuid); } else { if (build(location)) { picture = m_pictures_H.value(uuid); low_picture = m_low_pictures_H.value(uuid); } } } /** @brief ElementPictureFactory::pixmap @param location @return the pixmap of the element at location Note pixmap can be null */ QPixmap ElementPictureFactory::pixmap(const ElementsLocation &location) { QUuid uuid = location.uuid(); if (m_pixmap_H.contains(uuid)) { return m_pixmap_H.value(uuid); } if(build(location)) { auto doc = location.pugiXml(); //size int w = doc.document_element().attribute("width").as_int(); int h = doc.document_element().attribute("height").as_int(); while (w % 10) ++ w; while (h % 10) ++ h; //hotspot int hsx = qMin(doc.document_element().attribute("hotspot_x").as_int(), w); int hsy = qMin(doc.document_element().attribute("hotspot_y").as_int(), h); QPixmap pix(w, h); pix.fill(QColor(255, 255, 255, 0)); QPainter painter(&pix); painter.setRenderHint(QPainter::Antialiasing, true); painter.setRenderHint(QPainter::SmoothPixmapTransform, true); painter.translate(hsx, hsy); painter.drawPicture(0, 0, m_pictures_H.value(uuid)); if (!uuid.isNull()) { m_pixmap_H.insert(uuid, pix); } return pix; } return QPixmap(); } /** @brief ElementPictureFactory::getPrimitives @param location @return The primtive used to draw the element at location */ ElementPictureFactory::primitives ElementPictureFactory::getPrimitives( const ElementsLocation &location) { if(!m_primitives_H.contains(location.uuid())) build(location); return m_primitives_H.value(location.uuid()); } ElementPictureFactory::~ElementPictureFactory() { for (primitives p : m_primitives_H.values()) { qDeleteAll(p.m_texts); } } /** @brief ElementPictureFactory::build Build the picture from location. @param location @param picture @param low_picture if picture and/or low_picture are not null this function draw on it and don't store it. if null, this function create a QPicture for normal and low zoom, draw on it and store it in m_pictures_H and m_low_pictures_H @return */ bool ElementPictureFactory::build(const ElementsLocation &location, QPicture *picture, QPicture *low_picture) { QDomElement dom = location.xml(); //Check if the curent version can read the xml description if (dom.hasAttribute("version")) { bool conv_ok; qreal element_version = dom.attribute("version").toDouble(&conv_ok); if (conv_ok && QET::version.toDouble() < element_version) { std::cerr << qPrintable( QObject::tr("Avertissement : l'élément " " a été enregistré avec une version" " ultérieure de QElectroTech.") ) << std::endl; } } //This attributes must be present and valid int w, h, hot_x, hot_y; if (!QET::attributeIsAnInteger(dom, QString("width"), &w) ||\ !QET::attributeIsAnInteger(dom, QString("height"), &h) ||\ !QET::attributeIsAnInteger(dom, QString("hotspot_x"), &hot_x) ||\ !QET::attributeIsAnInteger(dom, QString("hotspot_y"), &hot_y)) { return(false); } QPainter painter; QPicture pic; primitives primitives_; if (picture) { painter.begin(picture); } else { painter.begin(&pic); } painter.setRenderHint(QPainter::Antialiasing, true); painter.setRenderHint(QPainter::TextAntialiasing, true); painter.setRenderHint(QPainter::SmoothPixmapTransform,true); QPainter low_painter; QPicture low_pic; if (low_picture) { low_painter.begin(low_picture); } else { low_painter.begin(&low_pic); } low_painter.setRenderHint(QPainter::Antialiasing, true); low_painter.setRenderHint(QPainter::TextAntialiasing, true); low_painter.setRenderHint(QPainter::SmoothPixmapTransform,true); QPen tmp; tmp.setWidthF(1.0); //Vaudoo line to take into account the setCosmetic - don't remove tmp.setCosmetic(true); low_painter.setPen(tmp); //scroll of the Children of the Definition: Parts of the Drawing for (QDomNode node = dom.firstChild() ; !node.isNull() ; node = node.nextSibling()) { QDomElement elmts = node.toElement(); if (elmts.isNull()) { continue; } if (elmts.tagName() == "description") { //Manage the graphic description = part of drawing for (QDomNode n = node.firstChild() ; !n.isNull() ; n = n.nextSibling()) { QDomElement qde = n.toElement(); if (qde.isNull()) { continue; } parseElement(qde, painter, primitives_); primitives fake_prim; parseElement(qde, low_painter, fake_prim); } } } //End of the drawing painter.end(); low_painter.end(); if (!picture) { m_pictures_H.insert(location.uuid(), pic); m_primitives_H.insert(location.uuid(), primitives_); } if (!low_picture) { m_low_pictures_H.insert(location.uuid(), low_pic); m_primitives_H.insert(location.uuid(), primitives_); } return true; } void ElementPictureFactory::parseElement(const QDomElement &dom, QPainter &painter, primitives &prim) const { if (dom.tagName() == "line") (parseLine (dom, painter, prim)); else if (dom.tagName() == "rect") (parseRect (dom, painter, prim)); else if (dom.tagName() == "ellipse") (parseEllipse(dom, painter, prim)); else if (dom.tagName() == "circle") (parseCircle (dom, painter, prim)); else if (dom.tagName() == "arc") (parseArc (dom, painter, prim)); else if (dom.tagName() == "polygon") (parsePolygon(dom, painter, prim)); else if (dom.tagName() == "text") (parseText (dom, painter, prim)); } void ElementPictureFactory::parseLine(const QDomElement &dom, QPainter &painter, primitives &prim) const { //This attributes must be present and valid qreal x1, y1, x2, y2; if (!QET::attributeIsAReal(dom, QString("x1"), &x1)) return; if (!QET::attributeIsAReal(dom, QString("y1"), &y1)) return; if (!QET::attributeIsAReal(dom, QString("x2"), &x2)) return; if (!QET::attributeIsAReal(dom, QString("y2"), &y2)) return; Qet::EndType first_end = Qet::endTypeFromString(dom.attribute("end1")); Qet::EndType second_end = Qet::endTypeFromString(dom.attribute("end2")); qreal length1, length2; if (!QET::attributeIsAReal(dom, QString("length1"), &length1)) length1 = 1.5; if (!QET::attributeIsAReal(dom, QString("length2"), &length2)) length2 = 1.5; painter.save(); setPainterStyle(dom, painter); QPen t = painter.pen(); t.setJoinStyle(Qt::MiterJoin); painter.setPen(t); QLineF line(x1, y1, x2, y2); prim.m_lines << line; QPointF point1(line.p1()); QPointF point2(line.p2()); qreal line_length(line.length()); qreal pen_width = painter.pen().widthF(); //Check if we must to draw extremity bool draw_1st_end, draw_2nd_end; qreal reduced_line_length = line_length - (length1 * PartLine::requiredLengthForEndType(first_end)); draw_1st_end = first_end && reduced_line_length >= 0; if (draw_1st_end) { reduced_line_length -= (length2 * PartLine::requiredLengthForEndType(second_end)); } else { reduced_line_length = line_length - (length2 * PartLine::requiredLengthForEndType(second_end)); } draw_2nd_end = second_end && reduced_line_length >= 0; //Draw first extremity QPointF start_point, stop_point; if (draw_1st_end) { QList four_points1(PartLine::fourEndPoints(point1, point2, length1)); if (first_end == Qet::Circle) { painter.drawEllipse(QRectF(four_points1[0] - QPointF(length1, length1), QSizeF(length1 * 2.0, length1 * 2.0))); start_point = four_points1[1]; } else if (first_end == Qet::Diamond) { painter.drawPolygon(QPolygonF() << four_points1[1] << four_points1[2] << point1 << four_points1[3]); start_point = four_points1[1]; } else if (first_end == Qet::Simple) { painter.drawPolyline(QPolygonF() << four_points1[3] << point1 << four_points1[2]); start_point = point1; } else if (first_end == Qet::Triangle) { painter.drawPolygon(QPolygonF() << four_points1[0] << four_points1[2] << point1 << four_points1[3]); start_point = four_points1[0]; } //Adjust the begining according to the width of the pen if (pen_width && (first_end == Qet::Simple || first_end == Qet::Circle)) { start_point = QLineF(start_point, point2).pointAt(pen_width / 2.0 / line_length); } } else { start_point = point1; } //Draw second extremity if (draw_2nd_end) { QList four_points2(PartLine::fourEndPoints(point2, point1, length2)); if (second_end == Qet::Circle) { painter.drawEllipse(QRectF(four_points2[0] - QPointF(length2, length2), QSizeF(length2 * 2.0, length2 * 2.0))); stop_point = four_points2[1]; } else if (second_end == Qet::Diamond) { painter.drawPolygon(QPolygonF() << four_points2[2] << point2 << four_points2[3] << four_points2[1]); stop_point = four_points2[1]; } else if (second_end == Qet::Simple) { painter.drawPolyline(QPolygonF() << four_points2[3] << point2 << four_points2[2]); stop_point = point2; } else if (second_end == Qet::Triangle) { painter.drawPolygon(QPolygonF() << four_points2[0] << four_points2[2] << point2 << four_points2[3] << four_points2[0]); stop_point = four_points2[0]; } //Adjust the end according to the width of the pen if (pen_width && (second_end == Qet::Simple || second_end == Qet::Circle)) { stop_point = QLineF(point1, stop_point).pointAt((line_length - (pen_width / 2.0)) / line_length); } } else { stop_point = point2; } painter.drawLine(start_point, stop_point); painter.restore(); } void ElementPictureFactory::parseRect(const QDomElement &dom, QPainter &painter, ElementPictureFactory::primitives &prim) const { //This attributes must be present and valid qreal rect_x, rect_y, rect_w, rect_h, rect_rx, rect_ry; if (!QET::attributeIsAReal(dom, QString("x"), &rect_x)) return; if (!QET::attributeIsAReal(dom, QString("y"), &rect_y)) return; if (!QET::attributeIsAReal(dom, QString("width"), &rect_w)) return; if (!QET::attributeIsAReal(dom, QString("height"), &rect_h)) return; rect_rx = dom.attribute("rx", "0").toDouble(); rect_ry = dom.attribute("ry", "0").toDouble(); prim.m_rectangles << QRectF(rect_x, rect_y, rect_w, rect_h); painter.save(); setPainterStyle(dom, painter); QPen p = painter.pen(); p.setJoinStyle(Qt::MiterJoin); painter.setPen(p); painter.drawRoundedRect(QRectF(rect_x, rect_y, rect_w, rect_h), rect_rx, rect_ry); painter.restore(); } void ElementPictureFactory::parseEllipse(const QDomElement &dom, QPainter &painter, ElementPictureFactory::primitives &prim) const { //This attributes must be present and valid qreal ellipse_x, ellipse_y, ellipse_l, ellipse_h; if (!QET::attributeIsAReal(dom, QString("x"), &ellipse_x)) return; if (!QET::attributeIsAReal(dom, QString("y"), &ellipse_y)) return; if (!QET::attributeIsAReal(dom, QString("width"), &ellipse_l)) return; if (!QET::attributeIsAReal(dom, QString("height"), &ellipse_h)) return; painter.save(); setPainterStyle(dom, painter); QVector arc; arc.push_back(ellipse_x); arc.push_back(ellipse_y); arc.push_back(ellipse_l); arc.push_back(ellipse_h); arc.push_back(0); arc.push_back(360); prim.m_arcs << arc; painter.drawEllipse(QRectF(ellipse_x, ellipse_y, ellipse_l, ellipse_h)); painter.restore(); } void ElementPictureFactory::parseCircle(const QDomElement &dom, QPainter &painter, ElementPictureFactory::primitives &prim) const { //This attributes must be present and valid qreal cercle_x, cercle_y, cercle_r; if (!QET::attributeIsAReal(dom, QString("x"), &cercle_x)) return; if (!QET::attributeIsAReal(dom, QString("y"), &cercle_y)) return; if (!QET::attributeIsAReal(dom, QString("diameter"), &cercle_r)) return; painter.save(); setPainterStyle(dom, painter); QRectF circle_bounding_rect(cercle_x, cercle_y, cercle_r, cercle_r); prim.m_circles << circle_bounding_rect; painter.drawEllipse(circle_bounding_rect); painter.restore(); } void ElementPictureFactory::parseArc(const QDomElement &dom, QPainter &painter, ElementPictureFactory::primitives &prim) const { //This attributes must be present and valid qreal arc_x, arc_y, arc_l, arc_h, arc_s, arc_a; if (!QET::attributeIsAReal(dom, QString("x"), &arc_x)) return; if (!QET::attributeIsAReal(dom, QString("y"), &arc_y)) return; if (!QET::attributeIsAReal(dom, QString("width"), &arc_l)) return; if (!QET::attributeIsAReal(dom, QString("height"), &arc_h)) return; if (!QET::attributeIsAReal(dom, QString("start"), &arc_s)) return; if (!QET::attributeIsAReal(dom, QString("angle"), &arc_a)) return; painter.save(); setPainterStyle(dom, painter); QVector arc; arc.push_back(arc_x); arc.push_back(arc_y); arc.push_back(arc_l); arc.push_back(arc_h); arc.push_back(arc_s); arc.push_back(arc_a); prim.m_arcs << arc; painter.drawArc(QRectF(arc_x, arc_y, arc_l, arc_h), (int)(arc_s * 16), (int)(arc_a * 16)); painter.restore(); } void ElementPictureFactory::parsePolygon(const QDomElement &dom, QPainter &painter, ElementPictureFactory::primitives &prim) const { int i = 1; while(true) { if (QET::attributeIsAReal(dom, QString("x%1").arg(i)) && QET::attributeIsAReal(dom, QString("y%1").arg(i))) ++ i; else break; } if (i < 3) { return; } QVector points; // empty vector created instead of default initialized vector with i-1 elements. for (int j = 1 ; j < i ; ++ j) { points.insert( j - 1, QPointF( dom.attribute(QString("x%1").arg(j)).toDouble(), dom.attribute(QString("y%1").arg(j)).toDouble() ) ); } painter.save(); setPainterStyle(dom, painter); if (dom.attribute("closed") == "false") painter.drawPolyline(points.data(), i-1); else { painter.drawPolygon(points.data(), i-1); // insert first point at the end again for DXF export. points.push_back(points[0]); } prim.m_polygons << points; painter.restore(); } void ElementPictureFactory::parseText(const QDomElement &dom, QPainter &painter, ElementPictureFactory::primitives &prim) const { Q_UNUSED(prim); if (dom.tagName() != "text") { return; } painter.save(); setPainterStyle(dom, painter); //Get the font and metric QFont font_; if (dom.hasAttribute("size")) { font_ = QETApp::diagramTextsFont(dom.attribute("size").toDouble()); } else if (dom.hasAttribute("font")) { font_.fromString(dom.attribute("font")); } QColor text_color(dom.attribute("color", "#000000")); //Instanciate a QTextDocument (like the QGraphicsTextItem class) //for generate the graphics rendering of the text QTextDocument text_document; text_document.setDefaultFont(font_); text_document.setPlainText(dom.attribute("text")); painter.setTransform(QTransform(), false); painter.translate(dom.attribute("x").toDouble(), dom.attribute("y").toDouble()); painter.rotate(dom.attribute("rotation", "0").toDouble()); /* Deplace le systeme de coordonnees du QPainter pour effectuer le rendu au bon endroit ; note : on soustrait l'ascent() de la police pour determiner le coin superieur gauche du texte alors que la position indiquee correspond a la baseline. */ QFontMetrics qfm(font_); QPointF qpainter_offset(0.0, -qfm.ascent()); //adjusts the offset by the margin of the text document text_document.setDocumentMargin(0.0); painter.translate(qpainter_offset); // force the palette used to render the QTextDocument QAbstractTextDocumentLayout::PaintContext ctx; ctx.palette.setColor(QPalette::Text, text_color); text_document.documentLayout() -> draw(&painter, ctx); //A very dirty workaround for export this text to dxf QGraphicsSimpleTextItem *qgsti = new QGraphicsSimpleTextItem(); qgsti->setText(dom.attribute("text")); qgsti->setFont(font_); qgsti->setPos(dom.attribute("x").toDouble(), dom.attribute("y").toDouble()); qgsti->setRotation(dom.attribute("rotation", "0").toDouble()); prim.m_texts << qgsti; painter.restore(); } /** @brief ElementPictureFactory::setPainterStyle apply the style store in dom to painter. @param dom @param painter */ void ElementPictureFactory::setPainterStyle(const QDomElement &dom, QPainter &painter) const { QPen pen = painter.pen(); QBrush brush = painter.brush(); pen.setJoinStyle(Qt::BevelJoin); pen.setCapStyle(Qt::SquareCap); //Get the couples style/value #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) // ### Qt 6: remove const QStringList styles = dom.attribute("style").split(";", QString::SkipEmptyParts); #else #pragma message("@TODO remove code for QT 5.14 or later") const QStringList styles = dom.attribute("style").split(";", Qt::SkipEmptyParts); #endif QRegExp rx("^\\s*([a-z-]+)\\s*:\\s*([a-zA-Z-]+)\\s*$"); for (QString style : styles) { if (rx.exactMatch(style)) { QString style_name = rx.cap(1); QString style_value = rx.cap(2); if (style_name == "line-style") { if (style_value == "dashed") pen.setStyle(Qt::DashLine); else if (style_value == "dotted") pen.setStyle(Qt::DotLine); else if (style_value == "dashdotted") pen.setStyle(Qt::DashDotLine); else if (style_value == "normal") pen.setStyle(Qt::SolidLine); } else if (style_name == "line-weight") { if (style_value == "none") pen.setColor(QColor(0, 0, 0, 0)); else if (style_value == "thin") pen.setWidth(0); else if (style_value == "normal") pen.setWidthF(1.0); else if (style_value == "hight") pen.setWidthF(2.0); else if (style_value == "eleve") pen.setWidthF(5.0); } else if (style_name == "filling") { if (style_value == "white") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::white); } else if (style_value == "black") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::black); } else if (style_value == "blue") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::blue); } else if (style_value == "red") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::red); } else if (style_value == "green") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::green); } else if (style_value == "gray") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::gray); } else if (style_value == "brun") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(97, 44, 0)); } else if (style_value == "yellow") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::yellow); } else if (style_value == "cyan") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::cyan); } else if (style_value == "magenta") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::magenta); } else if (style_value == "lightgray") { brush.setStyle(Qt::SolidPattern); brush.setColor(Qt::lightGray); } else if (style_value == "orange") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 128, 0)); } else if (style_value == "purple") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(136, 28, 168)); } else if (style_value == "HTMLPinkPink") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 192, 203)); } else if (style_value == "HTMLPinkLightPink") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 182, 193)); } else if (style_value == "HTMLPinkHotPink") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 105, 180)); } else if (style_value == "HTMLPinkDeepPink") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 20, 147)); } else if (style_value == "HTMLPinkPaleVioletRed") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(219, 112, 147)); } else if (style_value == "HTMLPinkMediumVioletRed") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(199, 21, 133)); } else if (style_value == "HTMLRedLightSalmon") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 160, 122)); } else if (style_value == "HTMLRedSalmon") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(250, 128, 114)); } else if (style_value == "HTMLRedDarkSalmon") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(233, 150, 122)); } else if (style_value == "HTMLRedLightCoral") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(240, 128, 128)); } else if (style_value == "HTMLRedIndianRed") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(205, 92, 92)); } else if (style_value == "HTMLRedCrimson") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(220, 20, 60)); } else if (style_value == "HTMLRedFirebrick") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(178, 34, 34)); } else if (style_value == "HTMLRedDarkRed") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(139, 0, 0)); } else if (style_value == "HTMLRedRed") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 0, 0)); } else if (style_value == "HTMLOrangeOrangeRed") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 69, 0)); } else if (style_value == "HTMLOrangeTomato") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 99, 71)); } else if (style_value == "HTMLOrangeCoral") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 127, 80)); } else if (style_value == "HTMLOrangeDarkOrange") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 140, 0)); } else if (style_value == "HTMLOrangeOrange") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 165, 0)); } else if (style_value == "HTMLYellowYellow") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 255, 0)); } else if (style_value == "HTMLYellowLightYellow") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 255, 224)); } else if (style_value == "HTMLYellowLemonChiffon") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 250, 205)); } else if (style_value == "HTMLYellowLightGoldenrodYellow") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(250, 250, 210)); } else if (style_value == "HTMLYellowPapayaWhip") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 239, 213)); } else if (style_value == "HTMLYellowMoccasin") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 228, 181)); } else if (style_value == "HTMLYellowPeachPuff") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 218, 185)); } else if (style_value == "HTMLYellowPaleGoldenrod") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(238, 232, 170)); } else if (style_value == "HTMLYellowKhaki") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(240, 230, 140)); } else if (style_value == "HTMLYellowDarkKhaki") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(189, 183, 107)); } else if (style_value == "HTMLYellowGold") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 215, 0)); } else if (style_value == "HTMLBrownCornsilk") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 248, 220)); } else if (style_value == "HTMLBrownBlanchedAlmond") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 235, 205)); } else if (style_value == "HTMLBrownBisque") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 228, 196)); } else if (style_value == "HTMLBrownNavajoWhite") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 222, 173)); } else if (style_value == "HTMLBrownWheat") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(245, 222, 179)); } else if (style_value == "HTMLBrownBurlywood") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(222, 184, 135)); } else if (style_value == "HTMLBrownTan") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(210, 180, 140)); } else if (style_value == "HTMLBrownRosyBrown") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(188, 143, 143)); } else if (style_value == "HTMLBrownSandyBrown") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(244, 164, 96)); } else if (style_value == "HTMLBrownGoldenrod") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(218, 165, 32)); } else if (style_value == "HTMLBrownDarkGoldenrod") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(184, 134, 11)); } else if (style_value == "HTMLBrownPeru") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(205, 133, 63)); } else if (style_value == "HTMLBrownChocolate") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(210, 105, 30)); } else if (style_value == "HTMLBrownSaddleBrown") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(139, 69, 19)); } else if (style_value == "HTMLBrownSienna") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(160, 82, 45)); } else if (style_value == "HTMLBrownBrown") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(165, 42, 42)); } else if (style_value == "HTMLBrownMaroon") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(128, 0, 0)); } else if (style_value == "HTMLGreenDarkOliveGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(85, 107, 47)); } else if (style_value == "HTMLGreenOlive") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(128, 128, 0)); } else if (style_value == "HTMLGreenOliveDrab") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(107, 142, 35)); } else if (style_value == "HTMLGreenYellowGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(154, 205, 50)); } else if (style_value == "HTMLGreenLimeGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(50, 205, 50)); } else if (style_value == "HTMLGreenLime") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 255, 0)); } else if (style_value == "HTMLGreenLawnGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(124, 252, 0)); } else if (style_value == "HTMLGreenChartreuse") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(127, 255, 0)); } else if (style_value == "HTMLGreenGreenYellow") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(173, 255, 47)); } else if (style_value == "HTMLGreenSpringGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 255, 127)); } else if (style_value == "HTMLGreenMediumSpringGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 250, 154)); } else if (style_value == "HTMLGreenLightGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(144, 238, 144)); } else if (style_value == "HTMLGreenPaleGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(152, 251, 152)); } else if (style_value == "HTMLGreenDarkSeaGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(143, 188, 143)); } else if (style_value == "HTMLGreenMediumAquamarine") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(102, 205, 170)); } else if (style_value == "HTMLGreenMediumSeaGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(60, 179, 113)); } else if (style_value == "HTMLGreenSeaGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(46, 139, 87)); } else if (style_value == "HTMLGreenForestGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(34, 139, 34)); } else if (style_value == "HTMLGreenGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 128, 0)); } else if (style_value == "HTMLGreenDarkGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 100, 0)); } else if (style_value == "HTMLCyanAqua") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 255, 255)); } else if (style_value == "HTMLCyanCyan") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 255, 255)); } else if (style_value == "HTMLCyanLightCyan") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(224, 255, 255)); } else if (style_value == "HTMLCyanPaleTurquoise") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(175, 238, 238)); } else if (style_value == "HTMLCyanAquamarine") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(127, 255, 212)); } else if (style_value == "HTMLCyanTurquoise") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(64, 224, 208)); } else if (style_value == "HTMLCyanMediumTurquoise") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(72, 209, 204)); } else if (style_value == "HTMLCyanDarkTurquoise") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 206, 209)); } else if (style_value == "HTMLCyanLightSeaGreen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(32, 178, 170)); } else if (style_value == "HTMLCyanCadetBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(95, 158, 160)); } else if (style_value == "HTMLCyanDarkCyan") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 139, 139)); } else if (style_value == "HTMLCyanTeal") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 128, 128)); } else if (style_value == "HTMLBlueLightSteelBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(176, 196, 222)); } else if (style_value == "HTMLBluePowderBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(176, 224, 230)); } else if (style_value == "HTMLBlueLightBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(173, 216, 230)); } else if (style_value == "HTMLBlueSkyBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(135, 206, 235)); } else if (style_value == "HTMLBlueLightSkyBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(135, 206, 250)); } else if (style_value == "HTMLBlueDeepSkyBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 191, 255)); } else if (style_value == "HTMLBlueDodgerBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(30, 144, 255)); } else if (style_value == "HTMLBlueCornflowerBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(100, 149, 237)); } else if (style_value == "HTMLBlueSteelBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(70, 130, 180)); } else if (style_value == "HTMLBlueRoyalBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(65, 105, 225)); } else if (style_value == "HTMLBlueBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 0, 255)); } else if (style_value == "HTMLBlueMediumBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 0, 205)); } else if (style_value == "HTMLBlueDarkBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 0, 139)); } else if (style_value == "HTMLBlueNavy") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 0, 128)); } else if (style_value == "HTMLBlueMidnightBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(25, 25, 112)); } else if (style_value == "HTMLPurpleLavender") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(230, 230, 250)); } else if (style_value == "HTMLPurpleThistle") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(216, 191, 216)); } else if (style_value == "HTMLPurplePlum") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(221, 160, 221)); } else if (style_value == "HTMLPurpleViolet") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(238, 130, 238)); } else if (style_value == "HTMLPurpleOrchid") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(218, 112, 214)); } else if (style_value == "HTMLPurpleFuchsia") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 0, 255)); } else if (style_value == "HTMLPurpleMagenta") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 0, 255)); } else if (style_value == "HTMLPurpleMediumOrchid") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(186, 85, 211)); } else if (style_value == "HTMLPurpleMediumPurple") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(147, 112, 219)); } else if (style_value == "HTMLPurpleBlueViolet") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(138, 43, 226)); } else if (style_value == "HTMLPurpleDarkViolet") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(148, 0, 211)); } else if (style_value == "HTMLPurpleDarkOrchid") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(153, 50, 204)); } else if (style_value == "HTMLPurpleDarkMagenta") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(139, 0, 139)); } else if (style_value == "HTMLPurplePurple") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(128, 0, 128)); } else if (style_value == "HTMLPurpleIndigo") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(75, 0, 130)); } else if (style_value == "HTMLPurpleDarkSlateBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(72, 61, 139)); } else if (style_value == "HTMLPurpleSlateBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(106, 90, 205)); } else if (style_value == "HTMLPurpleMediumSlateBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(123, 104, 238)); } else if (style_value == "HTMLWhiteWhite") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 255, 255)); } else if (style_value == "HTMLWhiteSnow") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 250, 250)); } else if (style_value == "HTMLWhiteHoneydew") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(240, 255, 240)); } else if (style_value == "HTMLWhiteMintCream") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(245, 255, 250)); } else if (style_value == "HTMLWhiteAzure") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(240, 255, 255)); } else if (style_value == "HTMLWhiteAliceBlue") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(240, 248, 255)); } else if (style_value == "HTMLWhiteGhostWhite") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(248, 248, 255)); } else if (style_value == "HTMLWhiteWhiteSmoke") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(245, 245, 245)); } else if (style_value == "HTMLWhiteSeashell") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 245, 238)); } else if (style_value == "HTMLWhiteBeige") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(245, 245, 220)); } else if (style_value == "HTMLWhiteOldLace") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(253, 245, 230)); } else if (style_value == "HTMLWhiteFloralWhite") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 250, 240)); } else if (style_value == "HTMLWhiteIvory") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 255, 240)); } else if (style_value == "HTMLWhiteAntiqueWhite") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(250, 235, 215)); } else if (style_value == "HTMLWhiteLinen") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(250, 240, 230)); } else if (style_value == "HTMLWhiteLavenderBlush") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 240, 245)); } else if (style_value == "HTMLWhiteMistyRose") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(255, 228, 225)); } else if (style_value == "HTMLGrayGainsboro") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(220, 220, 220)); } else if (style_value == "HTMLGrayLightGray") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(211, 211, 211)); } else if (style_value == "HTMLGraySilver") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(192, 192, 192)); } else if (style_value == "HTMLGrayDarkGray") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(169, 169, 169)); } else if (style_value == "HTMLGrayGray") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(128, 128, 128)); } else if (style_value == "HTMLGrayDimGray") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(105, 105, 105)); } else if (style_value == "HTMLGrayLightSlateGray") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(119, 136, 153)); } else if (style_value == "HTMLGraySlateGray") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(112, 128, 144)); } else if (style_value == "HTMLGrayDarkSlateGray") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(47, 79, 79)); } else if (style_value == "HTMLGrayBlack") { brush.setStyle(Qt::SolidPattern); brush.setColor(QColor(0, 0, 0)); } else if (style_value == "hor") { brush.setStyle(Qt::HorPattern); brush.setColor(Qt::black); } else if (style_value == "ver") { brush.setStyle(Qt::VerPattern); brush.setColor(Qt::black); } else if (style_value == "bdiag") { brush.setStyle(Qt::BDiagPattern); brush.setColor(Qt::black); } else if (style_value == "fdiag") { brush.setStyle(Qt::FDiagPattern); brush.setColor(Qt::black); } else if (style_value == "none") { brush.setStyle(Qt::NoBrush); } } else if (style_name == "color") { if (style_value == "black") { pen.setColor(QColor(0, 0, 0, pen.color().alpha())); } else if (style_value == "white") { pen.setColor(QColor(255, 255, 255, pen.color().alpha())); } else if (style_value == "red") { pen.setColor(Qt::red); } else if (style_value == "blue") { pen.setColor(Qt::blue); } else if (style_value == "green") { pen.setColor(Qt::green); } else if (style_value == "gray") { pen.setColor(Qt::gray); } else if (style_value == "brun") { pen.setColor(QColor(97, 44, 0)); } else if (style_value == "yellow") { pen.setColor(Qt::yellow); } else if (style_value == "cyan") { pen.setColor(Qt::cyan); } else if (style_value == "magenta") { pen.setColor(Qt::magenta); } else if (style_value == "lightgray") { pen.setColor(Qt::lightGray); } else if (style_value == "orange") { pen.setColor(QColor(255, 128, 0)); } else if (style_value == "purple") { pen.setColor(QColor(136, 28, 168)); } else if (style_value == "HTMLPinkPink") { pen.setColor(QColor(255, 192, 203)); } else if (style_value == "HTMLPinkLightPink") { pen.setColor(QColor(255, 182, 193)); } else if (style_value == "HTMLPinkHotPink") { pen.setColor(QColor(255, 105, 180)); } else if (style_value == "HTMLPinkDeepPink") { pen.setColor(QColor(255, 20, 147)); } else if (style_value == "HTMLPinkPaleVioletRed") { pen.setColor(QColor(219, 112, 147)); } else if (style_value == "HTMLPinkMediumVioletRed") { pen.setColor(QColor(199, 21, 133)); } else if (style_value == "HTMLRedLightSalmon") { pen.setColor(QColor(255, 160, 122)); } else if (style_value == "HTMLRedSalmon") { pen.setColor(QColor(250, 128, 114)); } else if (style_value == "HTMLRedDarkSalmon") { pen.setColor(QColor(233, 150, 122)); } else if (style_value == "HTMLRedLightCoral") { pen.setColor(QColor(240, 128, 128)); } else if (style_value == "HTMLRedIndianRed") { pen.setColor(QColor(205, 92, 92)); } else if (style_value == "HTMLRedCrimson") { pen.setColor(QColor(220, 20, 60)); } else if (style_value == "HTMLRedFirebrick") { pen.setColor(QColor(178, 34, 34)); } else if (style_value == "HTMLRedDarkRed") { pen.setColor(QColor(139, 0, 0)); } else if (style_value == "HTMLRedRed") { pen.setColor(QColor(255, 0, 0)); } else if (style_value == "HTMLOrangeOrangeRed") { pen.setColor(QColor(255, 69, 0)); } else if (style_value == "HTMLOrangeTomato") { pen.setColor(QColor(255, 99, 71)); } else if (style_value == "HTMLOrangeCoral") { pen.setColor(QColor(255, 127, 80)); } else if (style_value == "HTMLOrangeDarkOrange") { pen.setColor(QColor(255, 140, 0)); } else if (style_value == "HTMLOrangeOrange") { pen.setColor(QColor(255, 165, 0)); } else if (style_value == "HTMLYellowYellow") { pen.setColor(QColor(255, 255, 0)); } else if (style_value == "HTMLYellowLightYellow") { pen.setColor(QColor(255, 255, 224)); } else if (style_value == "HTMLYellowLemonChiffon") { pen.setColor(QColor(255, 250, 205)); } else if (style_value == "HTMLYellowLightGoldenrodYellow") { pen.setColor(QColor(250, 250, 210)); } else if (style_value == "HTMLYellowPapayaWhip") { pen.setColor(QColor(255, 239, 213)); } else if (style_value == "HTMLYellowMoccasin") { pen.setColor(QColor(255, 228, 181)); } else if (style_value == "HTMLYellowPeachPuff") { pen.setColor(QColor(255, 218, 185)); } else if (style_value == "HTMLYellowPaleGoldenrod") { pen.setColor(QColor(238, 232, 170)); } else if (style_value == "HTMLYellowKhaki") { pen.setColor(QColor(240, 230, 140)); } else if (style_value == "HTMLYellowDarkKhaki") { pen.setColor(QColor(189, 183, 107)); } else if (style_value == "HTMLYellowGold") { pen.setColor(QColor(255, 215, 0)); } else if (style_value == "HTMLBrownCornsilk") { pen.setColor(QColor(255, 248, 220)); } else if (style_value == "HTMLBrownBlanchedAlmond") { pen.setColor(QColor(255, 235, 205)); } else if (style_value == "HTMLBrownBisque") { pen.setColor(QColor(255, 228, 196)); } else if (style_value == "HTMLBrownNavajoWhite") { pen.setColor(QColor(255, 222, 173)); } else if (style_value == "HTMLBrownWheat") { pen.setColor(QColor(245, 222, 179)); } else if (style_value == "HTMLBrownBurlywood") { pen.setColor(QColor(222, 184, 135)); } else if (style_value == "HTMLBrownTan") { pen.setColor(QColor(210, 180, 140)); } else if (style_value == "HTMLBrownRosyBrown") { pen.setColor(QColor(188, 143, 143)); } else if (style_value == "HTMLBrownSandyBrown") { pen.setColor(QColor(244, 164, 96)); } else if (style_value == "HTMLBrownGoldenrod") { pen.setColor(QColor(218, 165, 32)); } else if (style_value == "HTMLBrownDarkGoldenrod") { pen.setColor(QColor(184, 134, 11)); } else if (style_value == "HTMLBrownPeru") { pen.setColor(QColor(205, 133, 63)); } else if (style_value == "HTMLBrownChocolate") { pen.setColor(QColor(210, 105, 30)); } else if (style_value == "HTMLBrownSaddleBrown") { pen.setColor(QColor(139, 69, 19)); } else if (style_value == "HTMLBrownSienna") { pen.setColor(QColor(160, 82, 45)); } else if (style_value == "HTMLBrownBrown") { pen.setColor(QColor(165, 42, 42)); } else if (style_value == "HTMLBrownMaroon") { pen.setColor(QColor(128, 0, 0)); } else if (style_value == "HTMLGreenDarkOliveGreen") { pen.setColor(QColor(85, 107, 47)); } else if (style_value == "HTMLGreenOlive") { pen.setColor(QColor(128, 128, 0)); } else if (style_value == "HTMLGreenOliveDrab") { pen.setColor(QColor(107, 142, 35)); } else if (style_value == "HTMLGreenYellowGreen") { pen.setColor(QColor(154, 205, 50)); } else if (style_value == "HTMLGreenLimeGreen") { pen.setColor(QColor(50, 205, 50)); } else if (style_value == "HTMLGreenLime") { pen.setColor(QColor(0, 255, 0)); } else if (style_value == "HTMLGreenLawnGreen") { pen.setColor(QColor(124, 252, 0)); } else if (style_value == "HTMLGreenChartreuse") { pen.setColor(QColor(127, 255, 0)); } else if (style_value == "HTMLGreenGreenYellow") { pen.setColor(QColor(173, 255, 47)); } else if (style_value == "HTMLGreenSpringGreen") { pen.setColor(QColor(0, 255, 127)); } else if (style_value == "HTMLGreenMediumSpringGreen") { pen.setColor(QColor(0, 250, 154)); } else if (style_value == "HTMLGreenLightGreen") { pen.setColor(QColor(144, 238, 144)); } else if (style_value == "HTMLGreenPaleGreen") { pen.setColor(QColor(152, 251, 152)); } else if (style_value == "HTMLGreenDarkSeaGreen") { pen.setColor(QColor(143, 188, 143)); } else if (style_value == "HTMLGreenMediumAquamarine") { pen.setColor(QColor(102, 205, 170)); } else if (style_value == "HTMLGreenMediumSeaGreen") { pen.setColor(QColor(60, 179, 113)); } else if (style_value == "HTMLGreenSeaGreen") { pen.setColor(QColor(46, 139, 87)); } else if (style_value == "HTMLGreenForestGreen") { pen.setColor(QColor(34, 139, 34)); } else if (style_value == "HTMLGreenGreen") { pen.setColor(QColor(0, 128, 0)); } else if (style_value == "HTMLGreenDarkGreen") { pen.setColor(QColor(0, 100, 0)); } else if (style_value == "HTMLCyanAqua") { pen.setColor(QColor(0, 255, 255)); } else if (style_value == "HTMLCyanCyan") { pen.setColor(QColor(0, 255, 255)); } else if (style_value == "HTMLCyanLightCyan") { pen.setColor(QColor(224, 255, 255)); } else if (style_value == "HTMLCyanPaleTurquoise") { pen.setColor(QColor(175, 238, 238)); } else if (style_value == "HTMLCyanAquamarine") { pen.setColor(QColor(127, 255, 212)); } else if (style_value == "HTMLCyanTurquoise") { pen.setColor(QColor(64, 224, 208)); } else if (style_value == "HTMLCyanMediumTurquoise") { pen.setColor(QColor(72, 209, 204)); } else if (style_value == "HTMLCyanDarkTurquoise") { pen.setColor(QColor(0, 206, 209)); } else if (style_value == "HTMLCyanLightSeaGreen") { pen.setColor(QColor(32, 178, 170)); } else if (style_value == "HTMLCyanCadetBlue") { pen.setColor(QColor(95, 158, 160)); } else if (style_value == "HTMLCyanDarkCyan") { pen.setColor(QColor(0, 139, 139)); } else if (style_value == "HTMLCyanTeal") { pen.setColor(QColor(0, 128, 128)); } else if (style_value == "HTMLBlueLightSteelBlue") { pen.setColor(QColor(176, 196, 222)); } else if (style_value == "HTMLBluePowderBlue") { pen.setColor(QColor(176, 224, 230)); } else if (style_value == "HTMLBlueLightBlue") { pen.setColor(QColor(173, 216, 230)); } else if (style_value == "HTMLBlueSkyBlue") { pen.setColor(QColor(135, 206, 235)); } else if (style_value == "HTMLBlueLightSkyBlue") { pen.setColor(QColor(135, 206, 250)); } else if (style_value == "HTMLBlueDeepSkyBlue") { pen.setColor(QColor(0, 191, 255)); } else if (style_value == "HTMLBlueDodgerBlue") { pen.setColor(QColor(30, 144, 255)); } else if (style_value == "HTMLBlueCornflowerBlue") { pen.setColor(QColor(100, 149, 237)); } else if (style_value == "HTMLBlueSteelBlue") { pen.setColor(QColor(70, 130, 180)); } else if (style_value == "HTMLBlueRoyalBlue") { pen.setColor(QColor(65, 105, 225)); } else if (style_value == "HTMLBlueBlue") { pen.setColor(QColor(0, 0, 255)); } else if (style_value == "HTMLBlueMediumBlue") { pen.setColor(QColor(0, 0, 205)); } else if (style_value == "HTMLBlueDarkBlue") { pen.setColor(QColor(0, 0, 139)); } else if (style_value == "HTMLBlueNavy") { pen.setColor(QColor(0, 0, 128)); } else if (style_value == "HTMLBlueMidnightBlue") { pen.setColor(QColor(25, 25, 112)); } else if (style_value == "HTMLPurpleLavender") { pen.setColor(QColor(230, 230, 250)); } else if (style_value == "HTMLPurpleThistle") { pen.setColor(QColor(216, 191, 216)); } else if (style_value == "HTMLPurplePlum") { pen.setColor(QColor(221, 160, 221)); } else if (style_value == "HTMLPurpleViolet") { pen.setColor(QColor(238, 130, 238)); } else if (style_value == "HTMLPurpleOrchid") { pen.setColor(QColor(218, 112, 214)); } else if (style_value == "HTMLPurpleFuchsia") { pen.setColor(QColor(255, 0, 255)); } else if (style_value == "HTMLPurpleMagenta") { pen.setColor(QColor(255, 0, 255)); } else if (style_value == "HTMLPurpleMediumOrchid") { pen.setColor(QColor(186, 85, 211)); } else if (style_value == "HTMLPurpleMediumPurple") { pen.setColor(QColor(147, 112, 219)); } else if (style_value == "HTMLPurpleBlueViolet") { pen.setColor(QColor(138, 43, 226)); } else if (style_value == "HTMLPurpleDarkViolet") { pen.setColor(QColor(148, 0, 211)); } else if (style_value == "HTMLPurpleDarkOrchid") { pen.setColor(QColor(153, 50, 204)); } else if (style_value == "HTMLPurpleDarkMagenta") { pen.setColor(QColor(139, 0, 139)); } else if (style_value == "HTMLPurplePurple") { pen.setColor(QColor(128, 0, 128)); } else if (style_value == "HTMLPurpleIndigo") { pen.setColor(QColor(75, 0, 130)); } else if (style_value == "HTMLPurpleDarkSlateBlue") { pen.setColor(QColor(72, 61, 139)); } else if (style_value == "HTMLPurpleSlateBlue") { pen.setColor(QColor(106, 90, 205)); } else if (style_value == "HTMLPurpleMediumSlateBlue") { pen.setColor(QColor(123, 104, 238)); } else if (style_value == "HTMLWhiteWhite") { pen.setColor(QColor(255, 255, 255)); } else if (style_value == "HTMLWhiteSnow") { pen.setColor(QColor(255, 250, 250)); } else if (style_value == "HTMLWhiteHoneydew") { pen.setColor(QColor(240, 255, 240)); } else if (style_value == "HTMLWhiteMintCream") { pen.setColor(QColor(245, 255, 250)); } else if (style_value == "HTMLWhiteAzure") { pen.setColor(QColor(240, 255, 255)); } else if (style_value == "HTMLWhiteAliceBlue") { pen.setColor(QColor(240, 248, 255)); } else if (style_value == "HTMLWhiteGhostWhite") { pen.setColor(QColor(248, 248, 255)); } else if (style_value == "HTMLWhiteWhiteSmoke") { pen.setColor(QColor(245, 245, 245)); } else if (style_value == "HTMLWhiteSeashell") { pen.setColor(QColor(255, 245, 238)); } else if (style_value == "HTMLWhiteBeige") { pen.setColor(QColor(245, 245, 220)); } else if (style_value == "HTMLWhiteOldLace") { pen.setColor(QColor(253, 245, 230)); } else if (style_value == "HTMLWhiteFloralWhite") { pen.setColor(QColor(255, 250, 240)); } else if (style_value == "HTMLWhiteIvory") { pen.setColor(QColor(255, 255, 240)); } else if (style_value == "HTMLWhiteAntiqueWhite") { pen.setColor(QColor(250, 235, 215)); } else if (style_value == "HTMLWhiteLinen") { pen.setColor(QColor(250, 240, 230)); } else if (style_value == "HTMLWhiteLavenderBlush") { pen.setColor(QColor(255, 240, 245)); } else if (style_value == "HTMLWhiteMistyRose") { pen.setColor(QColor(255, 228, 225)); } else if (style_value == "HTMLGrayGainsboro") { pen.setColor(QColor(220, 220, 220)); } else if (style_value == "HTMLGrayLightGray") { pen.setColor(QColor(211, 211, 211)); } else if (style_value == "HTMLGraySilver") { pen.setColor(QColor(192, 192, 192)); } else if (style_value == "HTMLGrayDarkGray") { pen.setColor(QColor(169, 169, 169)); } else if (style_value == "HTMLGrayGray") { pen.setColor(QColor(128, 128, 128)); } else if (style_value == "HTMLGrayDimGray") { pen.setColor(QColor(105, 105, 105)); } else if (style_value == "HTMLGrayLightSlateGray") { pen.setColor(QColor(119, 136, 153)); } else if (style_value == "HTMLGraySlateGray") { pen.setColor(QColor(112, 128, 144)); } else if (style_value == "HTMLGrayDarkSlateGray") { pen.setColor(QColor(47, 79, 79)); } else if (style_value == "HTMLGrayBlack") { pen.setColor(QColor(0, 0, 0)); } else if (style_value == "none") { pen.setBrush(Qt::transparent); } } } } painter.setPen(pen); painter.setBrush(brush); }