qelectrotech-source-mirror/sources/editor/graphicspart/customelementgraphicpart.cpp
Laurent Trinques 43f0107eb1 Revert "Try Clazy fix-its"
Segfault on old Qt versions!
This reverts commit dba7caed3035585af4b301ed87bd4131dcac994c.
2025-02-14 16:17:58 +01:00

1369 lines
58 KiB
C++

/*
Copyright 2006-2025 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 <http://www.gnu.org/licenses/>.
*/
#include "customelementgraphicpart.h"
#include "../../QPropertyUndoCommand/qpropertyundocommand.h"
#include "../elementscene.h"
#include <QRegularExpression>
/**
@brief CustomElementGraphicPart::CustomElementGraphicPart
Default constructor.
By default, item is selectable, send geometry change (Qt > 4.6),
accept mouse left button and accept hover event
@param editor QETElement editor that belong this.
@param parent
*/
CustomElementGraphicPart::CustomElementGraphicPart(QETElementEditor *editor,
QGraphicsItem *parent) :
QGraphicsObject (parent),
CustomElementPart(editor),
m_hovered (false),
_linestyle(NormalStyle),
_lineweight(NormalWeight),
_filling(NoneFilling),
_color(BlackColor),
_antialiased(false)
{
setFlags(QGraphicsItem::ItemIsSelectable
| QGraphicsItem::ItemIsMovable
| QGraphicsItem::ItemSendsGeometryChanges);
setAcceptHoverEvents(true);
}
/**
@brief CustomElementGraphicPart::~CustomElementGraphicPart
Destructor
*/
CustomElementGraphicPart::~CustomElementGraphicPart() {}
/**
@brief CustomElementGraphicPart::drawCross
Draw a cross at pos center
@param center : center of cross
@param painter : painter to use for draw cross,
the painter state is restored at end of this method.
*/
void CustomElementGraphicPart::drawCross(const QPointF &center,
QPainter *painter)
{
painter -> save();
painter -> setRenderHint(QPainter::Antialiasing, false);
painter -> setPen((painter -> brush().color()
== QColor(Qt::black)
&& painter -> brush().isOpaque())
? Qt::yellow
: Qt::blue);
painter -> drawLine(QLineF(center.x() - 2.0,
center.y(),
center.x() + 2.0,
center.y()));
painter -> drawLine(QLineF(center.x(),
center.y() - 2.0,
center.x(),
center.y() + 2.0));
painter -> restore();
}
/**
@brief CustomElementGraphicPart::setLineStyle
Set line style to ls
@param ls
*/
void CustomElementGraphicPart::setLineStyle(const LineStyle ls)
{
if (_linestyle == ls) return;
_linestyle = ls;
update();
}
/**
@brief CustomElementGraphicPart::setLineWeight
Set line weight to lw
@param lw
*/
void CustomElementGraphicPart::setLineWeight(const LineWeight lw)
{
if (_lineweight == lw) return;
_lineweight = lw;
update();
}
/**
@brief CustomElementGraphicPart::penWeight
@return the weight of pen
*/
qreal CustomElementGraphicPart::penWeight() const
{
if (_lineweight == NoneWeight || _lineweight == ThinWeight) return 0;
else if (_lineweight == NormalWeight) return 1;
else if (_lineweight == UltraWeight) return 2;
else if (_lineweight == BigWeight) return 5;
return 1;
}
/**
@brief CustomElementGraphicPart::setFilling
Set filling to f
@param f
*/
void CustomElementGraphicPart::setFilling(const Filling f)
{
if (_filling == f) return;
_filling = f;
update();
}
/**
@brief CustomElementGraphicPart::setColor
Set color to c
@param c
*/
void CustomElementGraphicPart::setColor(const Color c)
{
if (_color == c) return;
_color = c;
update();
}
/**
@brief CustomElementGraphicPart::setAntialiased
Set antialias to b
@param b
*/
void CustomElementGraphicPart::setAntialiased(const bool b)
{
if (_antialiased == b) return;
_antialiased = b;
update();
}
/**
@brief CustomElementGraphicPart::stylesToXml
Write the current style to xml element.
The style are stored like this:
name-of-style:value;name-of-style:value
Each style separate by ; and name-style/value are separate by :
@param qde : QDOmElement used to write the style.
*/
void CustomElementGraphicPart::stylesToXml(QDomElement &qde) const
{
QString css_like_styles;
css_like_styles += "line-style:";
if (_linestyle == DashedStyle) css_like_styles += "dashed";
else if (_linestyle == DottedStyle) css_like_styles += "dotted";
else if (_linestyle == DashdottedStyle) css_like_styles += "dashdotted";
else if (_linestyle == NormalStyle) css_like_styles += "normal";
css_like_styles += ";line-weight:";
if (_lineweight == NoneWeight) css_like_styles += "none";
else if (_lineweight == ThinWeight) css_like_styles += "thin";
else if (_lineweight == NormalWeight) css_like_styles += "normal";
else if (_lineweight == UltraWeight) css_like_styles += "hight";
else if (_lineweight == BigWeight) css_like_styles += "eleve";
static const QMap<Filling, QString> filling_map = {
{NoneFilling, "none"},
{BlackFilling, "black"},
{WhiteFilling, "white"},
{GreenFilling, "green"},
{BlueFilling, "blue"},
{RedFilling, "red"},
{GrayFilling, "gray"},
{BrunFilling, "brun"},
{YellowFilling, "yellow"},
{CyanFilling, "cyan"},
{MagentaFilling, "magenta"},
{LightgrayFilling, "lightgray"},
{OrangeFilling, "orange"},
{PurpleFilling, "purple"},
{HTMLPinkPinkFilling, "HTMLPinkPink"},
{HTMLPinkLightPinkFilling, "HTMLPinkLightPink"},
{HTMLPinkHotPinkFilling, "HTMLPinkHotPink"},
{HTMLPinkDeepPinkFilling, "HTMLPinkDeepPink"},
{HTMLPinkPaleVioletRedFilling, "HTMLPinkPaleVioletRed"},
{HTMLPinkMediumVioletRedFilling, "HTMLPinkMediumVioletRed"},
{HTMLRedLightSalmonFilling, "HTMLRedLightSalmon"},
{HTMLRedSalmonFilling, "HTMLRedSalmon"},
{HTMLRedDarkSalmonFilling, "HTMLRedDarkSalmon"},
{HTMLRedLightCoralFilling, "HTMLRedLightCoral"},
{HTMLRedIndianRedFilling, "HTMLRedIndianRed"},
{HTMLRedCrimsonFilling, "HTMLRedCrimson"},
{HTMLRedFirebrickFilling, "HTMLRedFirebrick"},
{HTMLRedDarkRedFilling, "HTMLRedDarkRed"},
{HTMLRedRedFilling, "HTMLRedRed"},
{HTMLOrangeOrangeRedFilling, "HTMLOrangeOrangeRed"},
{HTMLOrangeTomatoFilling, "HTMLOrangeTomato"},
{HTMLOrangeCoralFilling, "HTMLOrangeCoral"},
{HTMLOrangeDarkOrangeFilling, "HTMLOrangeDarkOrange"},
{HTMLOrangeOrangeFilling, "HTMLOrangeOrange"},
{HTMLYellowYellowFilling, "HTMLYellowYellow"},
{HTMLYellowLightYellowFilling, "HTMLYellowLightYellow"},
{HTMLYellowLemonChiffonFilling, "HTMLYellowLemonChiffon"},
{HTMLYellowLightGoldenrodYellowFilling, "HTMLYellowLightGoldenrodYellow"},
{HTMLYellowPapayaWhipFilling, "HTMLYellowPapayaWhip"},
{HTMLYellowMoccasinFilling, "HTMLYellowMoccasin"},
{HTMLYellowPeachPuffFilling, "HTMLYellowPeachPuff"},
{HTMLYellowPaleGoldenrodFilling, "HTMLYellowPaleGoldenrod"},
{HTMLYellowKhakiFilling, "HTMLYellowKhaki"},
{HTMLYellowDarkKhakiFilling, "HTMLYellowDarkKhaki"},
{HTMLYellowGoldFilling, "HTMLYellowGold"},
{HTMLBrownCornsilkFilling, "HTMLBrownCornsilk"},
{HTMLBrownBlanchedAlmondFilling, "HTMLBrownBlanchedAlmond"},
{HTMLBrownBisqueFilling, "HTMLBrownBisque"},
{HTMLBrownNavajoWhiteFilling, "HTMLBrownNavajoWhite"},
{HTMLBrownWheatFilling, "HTMLBrownWheat"},
{HTMLBrownBurlywoodFilling, "HTMLBrownBurlywood"},
{HTMLBrownTanFilling, "HTMLBrownTan"},
{HTMLBrownRosyBrownFilling, "HTMLBrownRosyBrown"},
{HTMLBrownSandyBrownFilling, "HTMLBrownSandyBrown"},
{HTMLBrownGoldenrodFilling, "HTMLBrownGoldenrod"},
{HTMLBrownDarkGoldenrodFilling, "HTMLBrownDarkGoldenrod"},
{HTMLBrownPeruFilling, "HTMLBrownPeru"},
{HTMLBrownChocolateFilling, "HTMLBrownChocolate"},
{HTMLBrownSaddleBrownFilling, "HTMLBrownSaddleBrown"},
{HTMLBrownSiennaFilling, "HTMLBrownSienna"},
{HTMLBrownBrownFilling, "HTMLBrownBrown"},
{HTMLBrownMaroonFilling, "HTMLBrownMaroon"},
{HTMLGreenDarkOliveGreenFilling, "HTMLGreenDarkOliveGreen"},
{HTMLGreenOliveFilling, "HTMLGreenOlive"},
{HTMLGreenOliveDrabFilling, "HTMLGreenOliveDrab"},
{HTMLGreenYellowGreenFilling, "HTMLGreenYellowGreen"},
{HTMLGreenLimeGreenFilling, "HTMLGreenLimeGreen"},
{HTMLGreenLimeFilling, "HTMLGreenLime"},
{HTMLGreenLawnGreenFilling, "HTMLGreenLawnGreen"},
{HTMLGreenChartreuseFilling, "HTMLGreenChartreuse"},
{HTMLGreenGreenYellowFilling, "HTMLGreenGreenYellow"},
{HTMLGreenSpringGreenFilling, "HTMLGreenSpringGreen"},
{HTMLGreenMediumSpringGreenFilling, "HTMLGreenMediumSpringGreen"},
{HTMLGreenLightGreenFilling, "HTMLGreenLightGreen"},
{HTMLGreenPaleGreenFilling, "HTMLGreenPaleGreen"},
{HTMLGreenDarkSeaGreenFilling, "HTMLGreenDarkSeaGreen"},
{HTMLGreenMediumAquamarineFilling, "HTMLGreenMediumAquamarine"},
{HTMLGreenMediumSeaGreenFilling, "HTMLGreenMediumSeaGreen"},
{HTMLGreenSeaGreenFilling, "HTMLGreenSeaGreen"},
{HTMLGreenForestGreenFilling, "HTMLGreenForestGreen"},
{HTMLGreenGreenFilling, "HTMLGreenGreen"},
{HTMLGreenDarkGreenFilling, "HTMLGreenDarkGreen"},
{HTMLCyanAquaFilling, "HTMLCyanAqua"},
{HTMLCyanCyanFilling, "HTMLCyanCyan"},
{HTMLCyanLightCyanFilling, "HTMLCyanLightCyan"},
{HTMLCyanPaleTurquoiseFilling, "HTMLCyanPaleTurquoise"},
{HTMLCyanAquamarineFilling, "HTMLCyanAquamarine"},
{HTMLCyanTurquoiseFilling, "HTMLCyanTurquoise"},
{HTMLCyanMediumTurquoiseFilling, "HTMLCyanMediumTurquoise"},
{HTMLCyanDarkTurquoiseFilling, "HTMLCyanDarkTurquoise"},
{HTMLCyanLightSeaGreenFilling, "HTMLCyanLightSeaGreen"},
{HTMLCyanCadetBlueFilling, "HTMLCyanCadetBlue"},
{HTMLCyanDarkCyanFilling, "HTMLCyanDarkCyan"},
{HTMLCyanTealFilling, "HTMLCyanTeal"},
{HTMLBlueLightSteelBlueFilling, "HTMLBlueLightSteelBlue"},
{HTMLBluePowderBlueFilling, "HTMLBluePowderBlue"},
{HTMLBlueLightBlueFilling, "HTMLBlueLightBlue"},
{HTMLBlueSkyBlueFilling, "HTMLBlueSkyBlue"},
{HTMLBlueLightSkyBlueFilling, "HTMLBlueLightSkyBlue"},
{HTMLBlueDeepSkyBlueFilling, "HTMLBlueDeepSkyBlue"},
{HTMLBlueDodgerBlueFilling, "HTMLBlueDodgerBlue"},
{HTMLBlueCornflowerBlueFilling, "HTMLBlueCornflowerBlue"},
{HTMLBlueSteelBlueFilling, "HTMLBlueSteelBlue"},
{HTMLBlueRoyalBlueFilling, "HTMLBlueRoyalBlue"},
{HTMLBlueBlueFilling, "HTMLBlueBlue"},
{HTMLBlueMediumBlueFilling, "HTMLBlueMediumBlue"},
{HTMLBlueDarkBlueFilling, "HTMLBlueDarkBlue"},
{HTMLBlueNavyFilling, "HTMLBlueNavy"},
{HTMLBlueMidnightBlueFilling, "HTMLBlueMidnightBlue"},
{HTMLPurpleLavenderFilling, "HTMLPurpleLavender"},
{HTMLPurpleThistleFilling, "HTMLPurpleThistle"},
{HTMLPurplePlumFilling, "HTMLPurplePlum"},
{HTMLPurpleVioletFilling, "HTMLPurpleViolet"},
{HTMLPurpleOrchidFilling, "HTMLPurpleOrchid"},
{HTMLPurpleFuchsiaFilling, "HTMLPurpleFuchsia"},
{HTMLPurpleMagentaFilling, "HTMLPurpleMagenta"},
{HTMLPurpleMediumOrchidFilling, "HTMLPurpleMediumOrchid"},
{HTMLPurpleMediumPurpleFilling, "HTMLPurpleMediumPurple"},
{HTMLPurpleBlueVioletFilling, "HTMLPurpleBlueViolet"},
{HTMLPurpleDarkVioletFilling, "HTMLPurpleDarkViolet"},
{HTMLPurpleDarkOrchidFilling, "HTMLPurpleDarkOrchid"},
{HTMLPurpleDarkMagentaFilling, "HTMLPurpleDarkMagenta"},
{HTMLPurplePurpleFilling, "HTMLPurplePurple"},
{HTMLPurpleIndigoFilling, "HTMLPurpleIndigo"},
{HTMLPurpleDarkSlateBlueFilling, "HTMLPurpleDarkSlateBlue"},
{HTMLPurpleSlateBlueFilling, "HTMLPurpleSlateBlue"},
{HTMLPurpleMediumSlateBlueFilling, "HTMLPurpleMediumSlateBlue"},
{HTMLWhiteWhiteFilling, "HTMLWhiteWhite"},
{HTMLWhiteSnowFilling, "HTMLWhiteSnow"},
{HTMLWhiteHoneydewFilling, "HTMLWhiteHoneydew"},
{HTMLWhiteMintCreamFilling, "HTMLWhiteMintCream"},
{HTMLWhiteAzureFilling, "HTMLWhiteAzure"},
{HTMLWhiteAliceBlueFilling, "HTMLWhiteAliceBlue"},
{HTMLWhiteGhostWhiteFilling, "HTMLWhiteGhostWhite"},
{HTMLWhiteWhiteSmokeFilling, "HTMLWhiteWhiteSmoke"},
{HTMLWhiteSeashellFilling, "HTMLWhiteSeashell"},
{HTMLWhiteBeigeFilling, "HTMLWhiteBeige"},
{HTMLWhiteOldLaceFilling, "HTMLWhiteOldLace"},
{HTMLWhiteFloralWhiteFilling, "HTMLWhiteFloralWhite"},
{HTMLWhiteIvoryFilling, "HTMLWhiteIvory"},
{HTMLWhiteAntiqueWhiteFilling, "HTMLWhiteAntiqueWhite"},
{HTMLWhiteLinenFilling, "HTMLWhiteLinen"},
{HTMLWhiteLavenderBlushFilling, "HTMLWhiteLavenderBlush"},
{HTMLWhiteMistyRoseFilling, "HTMLWhiteMistyRose"},
{HTMLGrayGainsboroFilling, "HTMLGrayGainsboro"},
{HTMLGrayLightGrayFilling, "HTMLGrayLightGray"},
{HTMLGraySilverFilling, "HTMLGraySilver"},
{HTMLGrayDarkGrayFilling, "HTMLGrayDarkGray"},
{HTMLGrayGrayFilling, "HTMLGrayGray"},
{HTMLGrayDimGrayFilling, "HTMLGrayDimGray"},
{HTMLGrayLightSlateGrayFilling, "HTMLGrayLightSlateGray"},
{HTMLGraySlateGrayFilling, "HTMLGraySlateGray"},
{HTMLGrayDarkSlateGrayFilling, "HTMLGrayDarkSlateGray"},
{HTMLGrayBlackFilling, "HTMLGrayBlack"},
{HorFilling, "hor"},
{VerFilling, "ver"},
{BdiagFilling, "bdiag"},
{FdiagFilling, "fdiag"}};
css_like_styles += ";filling:";
auto filling = filling_map.find(_filling);
if (filling != filling_map.end()) { css_like_styles += filling.value(); }
static const QMap<Color, QString> color_map = {
{WhiteColor, "white"},
{BlackColor, "black"},
{GreenColor, "green"},
{RedColor, "red"},
{BlueColor, "blue"},
{GrayColor, "gray"},
{BrunColor, "brun"},
{YellowColor, "yellow"},
{CyanColor, "cyan"},
{MagentaColor, "magenta"},
{LightgrayColor, "lightgray"},
{OrangeColor, "orange"},
{PurpleColor, "purple"},
{HTMLPinkPinkColor, "HTMLPinkPink"},
{HTMLPinkLightPinkColor, "HTMLPinkLightPink"},
{HTMLPinkHotPinkColor, "HTMLPinkHotPink"},
{HTMLPinkDeepPinkColor, "HTMLPinkDeepPink"},
{HTMLPinkPaleVioletRedColor, "HTMLPinkPaleVioletRed"},
{HTMLPinkMediumVioletRedColor, "HTMLPinkMediumVioletRed"},
{HTMLRedLightSalmonColor, "HTMLRedLightSalmon"},
{HTMLRedSalmonColor, "HTMLRedSalmon"},
{HTMLRedDarkSalmonColor, "HTMLRedDarkSalmon"},
{HTMLRedLightCoralColor, "HTMLRedLightCoral"},
{HTMLRedIndianRedColor, "HTMLRedIndianRed"},
{HTMLRedCrimsonColor, "HTMLRedCrimson"},
{HTMLRedFirebrickColor, "HTMLRedFirebrick"},
{HTMLRedDarkRedColor, "HTMLRedDarkRed"},
{HTMLRedRedColor, "HTMLRedRed"},
{HTMLOrangeOrangeRedColor, "HTMLOrangeOrangeRed"},
{HTMLOrangeTomatoColor, "HTMLOrangeTomato"},
{HTMLOrangeCoralColor, "HTMLOrangeCoral"},
{HTMLOrangeDarkOrangeColor, "HTMLOrangeDarkOrange"},
{HTMLOrangeOrangeColor, "HTMLOrangeOrange"},
{HTMLYellowYellowColor, "HTMLYellowYellow"},
{HTMLYellowLightYellowColor, "HTMLYellowLightYellow"},
{HTMLYellowLemonChiffonColor, "HTMLYellowLemonChiffon"},
{HTMLYellowLightGoldenrodYellowColor, "HTMLYellowLightGoldenrodYellow"},
{HTMLYellowPapayaWhipColor, "HTMLYellowPapayaWhip"},
{HTMLYellowMoccasinColor, "HTMLYellowMoccasin"},
{HTMLYellowPeachPuffColor, "HTMLYellowPeachPuff"},
{HTMLYellowPaleGoldenrodColor, "HTMLYellowPaleGoldenrod"},
{HTMLYellowKhakiColor, "HTMLYellowKhaki"},
{HTMLYellowDarkKhakiColor, "HTMLYellowDarkKhaki"},
{HTMLYellowGoldColor, "HTMLYellowGold"},
{HTMLBrownCornsilkColor, "HTMLBrownCornsilk"},
{HTMLBrownBlanchedAlmondColor, "HTMLBrownBlanchedAlmond"},
{HTMLBrownBisqueColor, "HTMLBrownBisque"},
{HTMLBrownNavajoWhiteColor, "HTMLBrownNavajoWhite"},
{HTMLBrownWheatColor, "HTMLBrownWheat"},
{HTMLBrownBurlywoodColor, "HTMLBrownBurlywood"},
{HTMLBrownTanColor, "HTMLBrownTan"},
{HTMLBrownRosyBrownColor, "HTMLBrownRosyBrown"},
{HTMLBrownSandyBrownColor, "HTMLBrownSandyBrown"},
{HTMLBrownGoldenrodColor, "HTMLBrownGoldenrod"},
{HTMLBrownDarkGoldenrodColor, "HTMLBrownDarkGoldenrod"},
{HTMLBrownPeruColor, "HTMLBrownPeru"},
{HTMLBrownChocolateColor, "HTMLBrownChocolate"},
{HTMLBrownSaddleBrownColor, "HTMLBrownSaddleBrown"},
{HTMLBrownSiennaColor, "HTMLBrownSienna"},
{HTMLBrownBrownColor, "HTMLBrownBrown"},
{HTMLBrownMaroonColor, "HTMLBrownMaroon"},
{HTMLGreenDarkOliveGreenColor, "HTMLGreenDarkOliveGreen"},
{HTMLGreenOliveColor, "HTMLGreenOlive"},
{HTMLGreenOliveDrabColor, "HTMLGreenOliveDrab"},
{HTMLGreenYellowGreenColor, "HTMLGreenYellowGreen"},
{HTMLGreenLimeGreenColor, "HTMLGreenLimeGreen"},
{HTMLGreenLimeColor, "HTMLGreenLime"},
{HTMLGreenLawnGreenColor, "HTMLGreenLawnGreen"},
{HTMLGreenChartreuseColor, "HTMLGreenChartreuse"},
{HTMLGreenGreenYellowColor, "HTMLGreenGreenYellow"},
{HTMLGreenSpringGreenColor, "HTMLGreenSpringGreen"},
{HTMLGreenMediumSpringGreenColor, "HTMLGreenMediumSpringGreen"},
{HTMLGreenLightGreenColor, "HTMLGreenLightGreen"},
{HTMLGreenPaleGreenColor, "HTMLGreenPaleGreen"},
{HTMLGreenDarkSeaGreenColor, "HTMLGreenDarkSeaGreen"},
{HTMLGreenMediumAquamarineColor, "HTMLGreenMediumAquamarine"},
{HTMLGreenMediumSeaGreenColor, "HTMLGreenMediumSeaGreen"},
{HTMLGreenSeaGreenColor, "HTMLGreenSeaGreen"},
{HTMLGreenForestGreenColor, "HTMLGreenForestGreen"},
{HTMLGreenGreenColor, "HTMLGreenGreen"},
{HTMLGreenDarkGreenColor, "HTMLGreenDarkGreen"},
{HTMLCyanAquaColor, "HTMLCyanAqua"},
{HTMLCyanCyanColor, "HTMLCyanCyan"},
{HTMLCyanLightCyanColor, "HTMLCyanLightCyan"},
{HTMLCyanPaleTurquoiseColor, "HTMLCyanPaleTurquoise"},
{HTMLCyanAquamarineColor, "HTMLCyanAquamarine"},
{HTMLCyanTurquoiseColor, "HTMLCyanTurquoise"},
{HTMLCyanMediumTurquoiseColor, "HTMLCyanMediumTurquoise"},
{HTMLCyanDarkTurquoiseColor, "HTMLCyanDarkTurquoise"},
{HTMLCyanLightSeaGreenColor, "HTMLCyanLightSeaGreen"},
{HTMLCyanCadetBlueColor, "HTMLCyanCadetBlue"},
{HTMLCyanDarkCyanColor, "HTMLCyanDarkCyan"},
{HTMLCyanTealColor, "HTMLCyanTeal"},
{HTMLBlueLightSteelBlueColor, "HTMLBlueLightSteelBlue"},
{HTMLBluePowderBlueColor, "HTMLBluePowderBlue"},
{HTMLBlueLightBlueColor, "HTMLBlueLightBlue"},
{HTMLBlueSkyBlueColor, "HTMLBlueSkyBlue"},
{HTMLBlueLightSkyBlueColor, "HTMLBlueLightSkyBlue"},
{HTMLBlueDeepSkyBlueColor, "HTMLBlueDeepSkyBlue"},
{HTMLBlueDodgerBlueColor, "HTMLBlueDodgerBlue"},
{HTMLBlueCornflowerBlueColor, "HTMLBlueCornflowerBlue"},
{HTMLBlueSteelBlueColor, "HTMLBlueSteelBlue"},
{HTMLBlueRoyalBlueColor, "HTMLBlueRoyalBlue"},
{HTMLBlueBlueColor, "HTMLBlueBlue"},
{HTMLBlueMediumBlueColor, "HTMLBlueMediumBlue"},
{HTMLBlueDarkBlueColor, "HTMLBlueDarkBlue"},
{HTMLBlueNavyColor, "HTMLBlueNavy"},
{HTMLBlueMidnightBlueColor, "HTMLBlueMidnightBlue"},
{HTMLPurpleLavenderColor, "HTMLPurpleLavender"},
{HTMLPurpleThistleColor, "HTMLPurpleThistle"},
{HTMLPurplePlumColor, "HTMLPurplePlum"},
{HTMLPurpleVioletColor, "HTMLPurpleViolet"},
{HTMLPurpleOrchidColor, "HTMLPurpleOrchid"},
{HTMLPurpleFuchsiaColor, "HTMLPurpleFuchsia"},
{HTMLPurpleMagentaColor, "HTMLPurpleMagenta"},
{HTMLPurpleMediumOrchidColor, "HTMLPurpleMediumOrchid"},
{HTMLPurpleMediumPurpleColor, "HTMLPurpleMediumPurple"},
{HTMLPurpleBlueVioletColor, "HTMLPurpleBlueViolet"},
{HTMLPurpleDarkVioletColor, "HTMLPurpleDarkViolet"},
{HTMLPurpleDarkOrchidColor, "HTMLPurpleDarkOrchid"},
{HTMLPurpleDarkMagentaColor, "HTMLPurpleDarkMagenta"},
{HTMLPurplePurpleColor, "HTMLPurplePurple"},
{HTMLPurpleIndigoColor, "HTMLPurpleIndigo"},
{HTMLPurpleDarkSlateBlueColor, "HTMLPurpleDarkSlateBlue"},
{HTMLPurpleSlateBlueColor, "HTMLPurpleSlateBlue"},
{HTMLPurpleMediumSlateBlueColor, "HTMLPurpleMediumSlateBlue"},
{HTMLWhiteWhiteColor, "HTMLWhiteWhite"},
{HTMLWhiteSnowColor, "HTMLWhiteSnow"},
{HTMLWhiteHoneydewColor, "HTMLWhiteHoneydew"},
{HTMLWhiteMintCreamColor, "HTMLWhiteMintCream"},
{HTMLWhiteAzureColor, "HTMLWhiteAzure"},
{HTMLWhiteAliceBlueColor, "HTMLWhiteAliceBlue"},
{HTMLWhiteGhostWhiteColor, "HTMLWhiteGhostWhite"},
{HTMLWhiteWhiteSmokeColor, "HTMLWhiteWhiteSmoke"},
{HTMLWhiteSeashellColor, "HTMLWhiteSeashell"},
{HTMLWhiteBeigeColor, "HTMLWhiteBeige"},
{HTMLWhiteOldLaceColor, "HTMLWhiteOldLace"},
{HTMLWhiteFloralWhiteColor, "HTMLWhiteFloralWhite"},
{HTMLWhiteIvoryColor, "HTMLWhiteIvory"},
{HTMLWhiteAntiqueWhiteColor, "HTMLWhiteAntiqueWhite"},
{HTMLWhiteLinenColor, "HTMLWhiteLinen"},
{HTMLWhiteLavenderBlushColor, "HTMLWhiteLavenderBlush"},
{HTMLWhiteMistyRoseColor, "HTMLWhiteMistyRose"},
{HTMLGrayGainsboroColor, "HTMLGrayGainsboro"},
{HTMLGrayLightGrayColor, "HTMLGrayLightGray"},
{HTMLGraySilverColor, "HTMLGraySilver"},
{HTMLGrayDarkGrayColor, "HTMLGrayDarkGray"},
{HTMLGrayGrayColor, "HTMLGrayGray"},
{HTMLGrayDimGrayColor, "HTMLGrayDimGray"},
{HTMLGrayLightSlateGrayColor, "HTMLGrayLightSlateGray"},
{HTMLGraySlateGrayColor, "HTMLGraySlateGray"},
{HTMLGrayDarkSlateGrayColor, "HTMLGrayDarkSlateGray"},
{HTMLGrayBlackColor, "HTMLGrayBlack"},
{NoneColor, "none"}};
css_like_styles += ";color:";
auto color = color_map.find(_color);
if (color != color_map.end()) { css_like_styles += color.value(); }
qde.setAttribute("style", css_like_styles);
qde.setAttribute("antialias", _antialiased ? "true" : "false");
}
/**
@brief CustomElementGraphicPart::stylesFromXml
Read the style used by this, from a xml element.
@param qde : QDomElement used to read the style
*/
void CustomElementGraphicPart::stylesFromXml(const QDomElement &qde)
{
resetStyles();
//Get the list of pair style/value
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) // ### Qt 6: remove
QStringList styles = qde.attribute("style").split(";", QString::SkipEmptyParts);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 5.14 or later")
#endif
QStringList styles = qde.attribute("style").split(";", Qt::SkipEmptyParts);
#endif
//Check each pair of style
QRegularExpression rx("^\\s*([a-z-]+)\\s*:\\s*([a-zA-Z-]+)\\s*$");
for (auto style : styles)
{
auto rx_match = rx.match(style);
if (!rx_match.hasMatch()) {
continue;
}
auto style_name = rx_match.captured(1);
auto style_value = rx_match.captured(2);
if (style_name == "line-style")
{
if (style_value == "dashed") _linestyle = DashedStyle;
else if (style_value == "dotted") _linestyle = DottedStyle;
else if (style_value == "dashdotted") _linestyle = DashdottedStyle;
else if (style_value == "normal") _linestyle = NormalStyle;
}
else if (style_name == "line-weight")
{
if (style_value == "none") _lineweight = NoneWeight;
else if (style_value == "thin") _lineweight = ThinWeight;
else if (style_value == "normal") _lineweight = NormalWeight;
else if (style_value == "hight") _lineweight = UltraWeight;
else if (style_value == "eleve") _lineweight = BigWeight;
}
else if (style_name == "filling")
{
static const QMap<QString, Filling> filling_map = {
{"white", WhiteFilling},
{"black", BlackFilling},
{"red", RedFilling},
{"green", GreenFilling},
{"blue", BlueFilling},
{"gray", GrayFilling},
{"brun", BrunFilling},
{"yellow", YellowFilling},
{"cyan", CyanFilling},
{"magenta", MagentaFilling},
{"lightgray", LightgrayFilling},
{"orange", OrangeFilling},
{"purple", PurpleFilling},
{"HTMLPinkPink", HTMLPinkPinkFilling},
{"HTMLPinkLightPink", HTMLPinkLightPinkFilling},
{"HTMLPinkHotPink", HTMLPinkHotPinkFilling},
{"HTMLPinkDeepPink", HTMLPinkDeepPinkFilling},
{"HTMLPinkPaleVioletRed", HTMLPinkPaleVioletRedFilling},
{"HTMLPinkMediumVioletRed", HTMLPinkMediumVioletRedFilling},
{"HTMLRedLightSalmon", HTMLRedLightSalmonFilling},
{"HTMLRedSalmon", HTMLRedSalmonFilling},
{"HTMLRedDarkSalmon", HTMLRedDarkSalmonFilling},
{"HTMLRedLightCoral", HTMLRedLightCoralFilling},
{"HTMLRedIndianRed", HTMLRedIndianRedFilling},
{"HTMLRedCrimson", HTMLRedCrimsonFilling},
{"HTMLRedFirebrick", HTMLRedFirebrickFilling},
{"HTMLRedDarkRed", HTMLRedDarkRedFilling},
{"HTMLRedRed", HTMLRedRedFilling},
{"HTMLOrangeOrangeRed", HTMLOrangeOrangeRedFilling},
{"HTMLOrangeTomato", HTMLOrangeTomatoFilling},
{"HTMLOrangeCoral", HTMLOrangeCoralFilling},
{"HTMLOrangeDarkOrange", HTMLOrangeDarkOrangeFilling},
{"HTMLOrangeOrange", HTMLOrangeOrangeFilling},
{"HTMLYellowYellow", HTMLYellowYellowFilling},
{"HTMLYellowLightYellow", HTMLYellowLightYellowFilling},
{"HTMLYellowLemonChiffon", HTMLYellowLemonChiffonFilling},
{"HTMLYellowLightGoldenrodYellow", HTMLYellowLightGoldenrodYellowFilling},
{"HTMLYellowPapayaWhip", HTMLYellowPapayaWhipFilling},
{"HTMLYellowMoccasin", HTMLYellowMoccasinFilling},
{"HTMLYellowPeachPuff", HTMLYellowPeachPuffFilling},
{"HTMLYellowPaleGoldenrod", HTMLYellowPaleGoldenrodFilling},
{"HTMLYellowKhaki", HTMLYellowKhakiFilling},
{"HTMLYellowDarkKhaki", HTMLYellowDarkKhakiFilling},
{"HTMLYellowGold", HTMLYellowGoldFilling},
{"HTMLBrownCornsilk", HTMLBrownCornsilkFilling},
{"HTMLBrownBlanchedAlmond", HTMLBrownBlanchedAlmondFilling},
{"HTMLBrownBisque", HTMLBrownBisqueFilling},
{"HTMLBrownNavajoWhite", HTMLBrownNavajoWhiteFilling},
{"HTMLBrownWheat", HTMLBrownWheatFilling},
{"HTMLBrownBurlywood", HTMLBrownBurlywoodFilling},
{"HTMLBrownTan", HTMLBrownTanFilling},
{"HTMLBrownRosyBrown", HTMLBrownRosyBrownFilling},
{"HTMLBrownSandyBrown", HTMLBrownSandyBrownFilling},
{"HTMLBrownGoldenrod", HTMLBrownGoldenrodFilling},
{"HTMLBrownDarkGoldenrod", HTMLBrownDarkGoldenrodFilling},
{"HTMLBrownPeru", HTMLBrownPeruFilling},
{"HTMLBrownChocolate", HTMLBrownChocolateFilling},
{"HTMLBrownSaddleBrown", HTMLBrownSaddleBrownFilling},
{"HTMLBrownSienna", HTMLBrownSiennaFilling},
{"HTMLBrownBrown", HTMLBrownBrownFilling},
{"HTMLBrownMaroon", HTMLBrownMaroonFilling},
{"HTMLGreenDarkOliveGreen", HTMLGreenDarkOliveGreenFilling},
{"HTMLGreenOlive", HTMLGreenOliveFilling},
{"HTMLGreenOliveDrab", HTMLGreenOliveDrabFilling},
{"HTMLGreenYellowGreen", HTMLGreenYellowGreenFilling},
{"HTMLGreenLimeGreen", HTMLGreenLimeGreenFilling},
{"HTMLGreenLime", HTMLGreenLimeFilling},
{"HTMLGreenLawnGreen", HTMLGreenLawnGreenFilling},
{"HTMLGreenChartreuse", HTMLGreenChartreuseFilling},
{"HTMLGreenGreenYellow", HTMLGreenGreenYellowFilling},
{"HTMLGreenSpringGreen", HTMLGreenSpringGreenFilling},
{"HTMLGreenMediumSpringGreen", HTMLGreenMediumSpringGreenFilling},
{"HTMLGreenLightGreen", HTMLGreenLightGreenFilling},
{"HTMLGreenPaleGreen", HTMLGreenPaleGreenFilling},
{"HTMLGreenDarkSeaGreen", HTMLGreenDarkSeaGreenFilling},
{"HTMLGreenMediumAquamarine", HTMLGreenMediumAquamarineFilling},
{"HTMLGreenMediumSeaGreen", HTMLGreenMediumSeaGreenFilling},
{"HTMLGreenSeaGreen", HTMLGreenSeaGreenFilling},
{"HTMLGreenForestGreen", HTMLGreenForestGreenFilling},
{"HTMLGreenGreen", HTMLGreenGreenFilling},
{"HTMLGreenDarkGreen", HTMLGreenDarkGreenFilling},
{"HTMLCyanAqua", HTMLCyanAquaFilling},
{"HTMLCyanCyan", HTMLCyanCyanFilling},
{"HTMLCyanLightCyan", HTMLCyanLightCyanFilling},
{"HTMLCyanPaleTurquoise", HTMLCyanPaleTurquoiseFilling},
{"HTMLCyanAquamarine", HTMLCyanAquamarineFilling},
{"HTMLCyanTurquoise", HTMLCyanTurquoiseFilling},
{"HTMLCyanMediumTurquoise", HTMLCyanMediumTurquoiseFilling},
{"HTMLCyanDarkTurquoise", HTMLCyanDarkTurquoiseFilling},
{"HTMLCyanLightSeaGreen", HTMLCyanLightSeaGreenFilling},
{"HTMLCyanCadetBlue", HTMLCyanCadetBlueFilling},
{"HTMLCyanDarkCyan", HTMLCyanDarkCyanFilling},
{"HTMLCyanTeal", HTMLCyanTealFilling},
{"HTMLBlueLightSteelBlue", HTMLBlueLightSteelBlueFilling},
{"HTMLBluePowderBlue", HTMLBluePowderBlueFilling},
{"HTMLBlueLightBlue", HTMLBlueLightBlueFilling},
{"HTMLBlueSkyBlue", HTMLBlueSkyBlueFilling},
{"HTMLBlueLightSkyBlue", HTMLBlueLightSkyBlueFilling},
{"HTMLBlueDeepSkyBlue", HTMLBlueDeepSkyBlueFilling},
{"HTMLBlueDodgerBlue", HTMLBlueDodgerBlueFilling},
{"HTMLBlueCornflowerBlue", HTMLBlueCornflowerBlueFilling},
{"HTMLBlueSteelBlue", HTMLBlueSteelBlueFilling},
{"HTMLBlueRoyalBlue", HTMLBlueRoyalBlueFilling},
{"HTMLBlueBlue", HTMLBlueBlueFilling},
{"HTMLBlueMediumBlue", HTMLBlueMediumBlueFilling},
{"HTMLBlueDarkBlue", HTMLBlueDarkBlueFilling},
{"HTMLBlueNavy", HTMLBlueNavyFilling},
{"HTMLBlueMidnightBlue", HTMLBlueMidnightBlueFilling},
{"HTMLPurpleLavender", HTMLPurpleLavenderFilling},
{"HTMLPurpleThistle", HTMLPurpleThistleFilling},
{"HTMLPurplePlum", HTMLPurplePlumFilling},
{"HTMLPurpleViolet", HTMLPurpleVioletFilling},
{"HTMLPurpleOrchid", HTMLPurpleOrchidFilling},
{"HTMLPurpleFuchsia", HTMLPurpleFuchsiaFilling},
{"HTMLPurpleMagenta", HTMLPurpleMagentaFilling},
{"HTMLPurpleMediumOrchid", HTMLPurpleMediumOrchidFilling},
{"HTMLPurpleMediumPurple", HTMLPurpleMediumPurpleFilling},
{"HTMLPurpleBlueViolet", HTMLPurpleBlueVioletFilling},
{"HTMLPurpleDarkViolet", HTMLPurpleDarkVioletFilling},
{"HTMLPurpleDarkOrchid", HTMLPurpleDarkOrchidFilling},
{"HTMLPurpleDarkMagenta", HTMLPurpleDarkMagentaFilling},
{"HTMLPurplePurple", HTMLPurplePurpleFilling},
{"HTMLPurpleIndigo", HTMLPurpleIndigoFilling},
{"HTMLPurpleDarkSlateBlue", HTMLPurpleDarkSlateBlueFilling},
{"HTMLPurpleSlateBlue", HTMLPurpleSlateBlueFilling},
{"HTMLPurpleMediumSlateBlue", HTMLPurpleMediumSlateBlueFilling},
{"HTMLWhiteWhite", HTMLWhiteWhiteFilling},
{"HTMLWhiteSnow", HTMLWhiteSnowFilling},
{"HTMLWhiteHoneydew", HTMLWhiteHoneydewFilling},
{"HTMLWhiteMintCream", HTMLWhiteMintCreamFilling},
{"HTMLWhiteAzure", HTMLWhiteAzureFilling},
{"HTMLWhiteAliceBlue", HTMLWhiteAliceBlueFilling},
{"HTMLWhiteGhostWhite", HTMLWhiteGhostWhiteFilling},
{"HTMLWhiteWhiteSmoke", HTMLWhiteWhiteSmokeFilling},
{"HTMLWhiteSeashell", HTMLWhiteSeashellFilling},
{"HTMLWhiteBeige", HTMLWhiteBeigeFilling},
{"HTMLWhiteOldLace", HTMLWhiteOldLaceFilling},
{"HTMLWhiteFloralWhite", HTMLWhiteFloralWhiteFilling},
{"HTMLWhiteIvory", HTMLWhiteIvoryFilling},
{"HTMLWhiteAntiqueWhite", HTMLWhiteAntiqueWhiteFilling},
{"HTMLWhiteLinen", HTMLWhiteLinenFilling},
{"HTMLWhiteLavenderBlush", HTMLWhiteLavenderBlushFilling},
{"HTMLWhiteMistyRose", HTMLWhiteMistyRoseFilling},
{"HTMLGrayGainsboro", HTMLGrayGainsboroFilling},
{"HTMLGrayLightGray", HTMLGrayLightGrayFilling},
{"HTMLGraySilver", HTMLGraySilverFilling},
{"HTMLGrayDarkGray", HTMLGrayDarkGrayFilling},
{"HTMLGrayGray", HTMLGrayGrayFilling},
{"HTMLGrayDimGray", HTMLGrayDimGrayFilling},
{"HTMLGrayLightSlateGray", HTMLGrayLightSlateGrayFilling},
{"HTMLGraySlateGray", HTMLGraySlateGrayFilling},
{"HTMLGrayDarkSlateGray", HTMLGrayDarkSlateGrayFilling},
{"HTMLGrayBlack", HTMLGrayBlackFilling},
{"hor", HorFilling},
{"ver", VerFilling},
{"bdiag", BdiagFilling},
{"fdiag", FdiagFilling},
{"none", NoneFilling}};
auto filling = filling_map.find(style_value);
if (filling != filling_map.end()) { _filling = filling.value(); }
}
else if (style_name == "color")
{
static const QMap<QString, Color> color_map = {
{"black", BlackColor},
{"white", WhiteColor},
{"green", GreenColor},
{"red", RedColor},
{"blue", BlueColor},
{"gray", GrayColor},
{"brun", BrunColor},
{"yellow", YellowColor},
{"cyan", CyanColor},
{"magenta", MagentaColor},
{"lightgray", LightgrayColor},
{"orange", OrangeColor},
{"purple", PurpleColor},
{"HTMLPinkPink", HTMLPinkPinkColor},
{"HTMLPinkLightPink", HTMLPinkLightPinkColor},
{"HTMLPinkHotPink", HTMLPinkHotPinkColor},
{"HTMLPinkDeepPink", HTMLPinkDeepPinkColor},
{"HTMLPinkPaleVioletRed", HTMLPinkPaleVioletRedColor},
{"HTMLPinkMediumVioletRed", HTMLPinkMediumVioletRedColor},
{"HTMLRedLightSalmon", HTMLRedLightSalmonColor},
{"HTMLRedSalmon", HTMLRedSalmonColor},
{"HTMLRedDarkSalmon", HTMLRedDarkSalmonColor},
{"HTMLRedLightCoral", HTMLRedLightCoralColor},
{"HTMLRedIndianRed", HTMLRedIndianRedColor},
{"HTMLRedCrimson", HTMLRedCrimsonColor},
{"HTMLRedFirebrick", HTMLRedFirebrickColor},
{"HTMLRedDarkRed", HTMLRedDarkRedColor},
{"HTMLRedRed", HTMLRedRedColor},
{"HTMLOrangeOrangeRed", HTMLOrangeOrangeRedColor},
{"HTMLOrangeTomato", HTMLOrangeTomatoColor},
{"HTMLOrangeCoral", HTMLOrangeCoralColor},
{"HTMLOrangeDarkOrange", HTMLOrangeDarkOrangeColor},
{"HTMLOrangeOrange", HTMLOrangeOrangeColor},
{"HTMLYellowYellow", HTMLYellowYellowColor},
{"HTMLYellowLightYellow", HTMLYellowLightYellowColor},
{"HTMLYellowLemonChiffon", HTMLYellowLemonChiffonColor},
{"HTMLYellowLightGoldenrodYellow", HTMLYellowLightGoldenrodYellowColor},
{"HTMLYellowPapayaWhip", HTMLYellowPapayaWhipColor},
{"HTMLYellowMoccasin", HTMLYellowMoccasinColor},
{"HTMLYellowPeachPuff", HTMLYellowPeachPuffColor},
{"HTMLYellowPaleGoldenrod", HTMLYellowPaleGoldenrodColor},
{"HTMLYellowKhaki", HTMLYellowKhakiColor},
{"HTMLYellowDarkKhaki", HTMLYellowDarkKhakiColor},
{"HTMLYellowGold", HTMLYellowGoldColor},
{"HTMLBrownCornsilk", HTMLBrownCornsilkColor},
{"HTMLBrownBlanchedAlmond", HTMLBrownBlanchedAlmondColor},
{"HTMLBrownBisque", HTMLBrownBisqueColor},
{"HTMLBrownNavajoWhite", HTMLBrownNavajoWhiteColor},
{"HTMLBrownWheat", HTMLBrownWheatColor},
{"HTMLBrownBurlywood", HTMLBrownBurlywoodColor},
{"HTMLBrownTan", HTMLBrownTanColor},
{"HTMLBrownRosyBrown", HTMLBrownRosyBrownColor},
{"HTMLBrownSandyBrown", HTMLBrownSandyBrownColor},
{"HTMLBrownGoldenrod", HTMLBrownGoldenrodColor},
{"HTMLBrownDarkGoldenrod", HTMLBrownDarkGoldenrodColor},
{"HTMLBrownPeru", HTMLBrownPeruColor},
{"HTMLBrownChocolate", HTMLBrownChocolateColor},
{"HTMLBrownSaddleBrown", HTMLBrownSaddleBrownColor},
{"HTMLBrownSienna", HTMLBrownSiennaColor},
{"HTMLBrownBrown", HTMLBrownBrownColor},
{"HTMLBrownMaroon", HTMLBrownMaroonColor},
{"HTMLGreenDarkOliveGreen", HTMLGreenDarkOliveGreenColor},
{"HTMLGreenOlive", HTMLGreenOliveColor},
{"HTMLGreenOliveDrab", HTMLGreenOliveDrabColor},
{"HTMLGreenYellowGreen", HTMLGreenYellowGreenColor},
{"HTMLGreenLimeGreen", HTMLGreenLimeGreenColor},
{"HTMLGreenLime", HTMLGreenLimeColor},
{"HTMLGreenLawnGreen", HTMLGreenLawnGreenColor},
{"HTMLGreenChartreuse", HTMLGreenChartreuseColor},
{"HTMLGreenGreenYellow", HTMLGreenGreenYellowColor},
{"HTMLGreenSpringGreen", HTMLGreenSpringGreenColor},
{"HTMLGreenMediumSpringGreen", HTMLGreenMediumSpringGreenColor},
{"HTMLGreenLightGreen", HTMLGreenLightGreenColor},
{"HTMLGreenPaleGreen", HTMLGreenPaleGreenColor},
{"HTMLGreenDarkSeaGreen", HTMLGreenDarkSeaGreenColor},
{"HTMLGreenMediumAquamarine", HTMLGreenMediumAquamarineColor},
{"HTMLGreenMediumSeaGreen", HTMLGreenMediumSeaGreenColor},
{"HTMLGreenSeaGreen", HTMLGreenSeaGreenColor},
{"HTMLGreenForestGreen", HTMLGreenForestGreenColor},
{"HTMLGreenGreen", HTMLGreenGreenColor},
{"HTMLGreenDarkGreen", HTMLGreenDarkGreenColor},
{"HTMLCyanAqua", HTMLCyanAquaColor},
{"HTMLCyanCyan", HTMLCyanCyanColor},
{"HTMLCyanLightCyan", HTMLCyanLightCyanColor},
{"HTMLCyanPaleTurquoise", HTMLCyanPaleTurquoiseColor},
{"HTMLCyanAquamarine", HTMLCyanAquamarineColor},
{"HTMLCyanTurquoise", HTMLCyanTurquoiseColor},
{"HTMLCyanMediumTurquoise", HTMLCyanMediumTurquoiseColor},
{"HTMLCyanDarkTurquoise", HTMLCyanDarkTurquoiseColor},
{"HTMLCyanLightSeaGreen", HTMLCyanLightSeaGreenColor},
{"HTMLCyanCadetBlue", HTMLCyanCadetBlueColor},
{"HTMLCyanDarkCyan", HTMLCyanDarkCyanColor},
{"HTMLCyanTeal", HTMLCyanTealColor},
{"HTMLBlueLightSteelBlue", HTMLBlueLightSteelBlueColor},
{"HTMLBluePowderBlue", HTMLBluePowderBlueColor},
{"HTMLBlueLightBlue", HTMLBlueLightBlueColor},
{"HTMLBlueSkyBlue", HTMLBlueSkyBlueColor},
{"HTMLBlueLightSkyBlue", HTMLBlueLightSkyBlueColor},
{"HTMLBlueDeepSkyBlue", HTMLBlueDeepSkyBlueColor},
{"HTMLBlueDodgerBlue", HTMLBlueDodgerBlueColor},
{"HTMLBlueCornflowerBlue", HTMLBlueCornflowerBlueColor},
{"HTMLBlueSteelBlue", HTMLBlueSteelBlueColor},
{"HTMLBlueRoyalBlue", HTMLBlueRoyalBlueColor},
{"HTMLBlueBlue", HTMLBlueBlueColor},
{"HTMLBlueMediumBlue", HTMLBlueMediumBlueColor},
{"HTMLBlueDarkBlue", HTMLBlueDarkBlueColor},
{"HTMLBlueNavy", HTMLBlueNavyColor},
{"HTMLBlueMidnightBlue", HTMLBlueMidnightBlueColor},
{"HTMLPurpleLavender", HTMLPurpleLavenderColor},
{"HTMLPurpleThistle", HTMLPurpleThistleColor},
{"HTMLPurplePlum", HTMLPurplePlumColor},
{"HTMLPurpleViolet", HTMLPurpleVioletColor},
{"HTMLPurpleOrchid", HTMLPurpleOrchidColor},
{"HTMLPurpleFuchsia", HTMLPurpleFuchsiaColor},
{"HTMLPurpleMagenta", HTMLPurpleMagentaColor},
{"HTMLPurpleMediumOrchid", HTMLPurpleMediumOrchidColor},
{"HTMLPurpleMediumPurple", HTMLPurpleMediumPurpleColor},
{"HTMLPurpleBlueViolet", HTMLPurpleBlueVioletColor},
{"HTMLPurpleDarkViolet", HTMLPurpleDarkVioletColor},
{"HTMLPurpleDarkOrchid", HTMLPurpleDarkOrchidColor},
{"HTMLPurpleDarkMagenta", HTMLPurpleDarkMagentaColor},
{"HTMLPurplePurple", HTMLPurplePurpleColor},
{"HTMLPurpleIndigo", HTMLPurpleIndigoColor},
{"HTMLPurpleDarkSlateBlue", HTMLPurpleDarkSlateBlueColor},
{"HTMLPurpleSlateBlue", HTMLPurpleSlateBlueColor},
{"HTMLPurpleMediumSlateBlue", HTMLPurpleMediumSlateBlueColor},
{"HTMLWhiteWhite", HTMLWhiteWhiteColor},
{"HTMLWhiteSnow", HTMLWhiteSnowColor},
{"HTMLWhiteHoneydew", HTMLWhiteHoneydewColor},
{"HTMLWhiteMintCream", HTMLWhiteMintCreamColor},
{"HTMLWhiteAzure", HTMLWhiteAzureColor},
{"HTMLWhiteAliceBlue", HTMLWhiteAliceBlueColor},
{"HTMLWhiteGhostWhite", HTMLWhiteGhostWhiteColor},
{"HTMLWhiteWhiteSmoke", HTMLWhiteWhiteSmokeColor},
{"HTMLWhiteSeashell", HTMLWhiteSeashellColor},
{"HTMLWhiteBeige", HTMLWhiteBeigeColor},
{"HTMLWhiteOldLace", HTMLWhiteOldLaceColor},
{"HTMLWhiteFloralWhite", HTMLWhiteFloralWhiteColor},
{"HTMLWhiteIvory", HTMLWhiteIvoryColor},
{"HTMLWhiteAntiqueWhite", HTMLWhiteAntiqueWhiteColor},
{"HTMLWhiteLinen", HTMLWhiteLinenColor},
{"HTMLWhiteLavenderBlush", HTMLWhiteLavenderBlushColor},
{"HTMLWhiteMistyRose", HTMLWhiteMistyRoseColor},
{"HTMLGrayGainsboro", HTMLGrayGainsboroColor},
{"HTMLGrayLightGray", HTMLGrayLightGrayColor},
{"HTMLGraySilver", HTMLGraySilverColor},
{"HTMLGrayDarkGray", HTMLGrayDarkGrayColor},
{"HTMLGrayGray", HTMLGrayGrayColor},
{"HTMLGrayDimGray", HTMLGrayDimGrayColor},
{"HTMLGrayLightSlateGray", HTMLGrayLightSlateGrayColor},
{"HTMLGraySlateGray", HTMLGraySlateGrayColor},
{"HTMLGrayDarkSlateGray", HTMLGrayDarkSlateGrayColor},
{"HTMLGrayBlack", HTMLGrayBlackColor},
{"none", NoneColor}};
auto color = color_map.find(style_value);
if (color != color_map.end()) { _color = color.value(); }
}
}
//Get antialiasing
_antialiased = qde.attribute("antialias") == "true";
}
/**
@brief CustomElementGraphicPart::resetStyles
Reset the current style to default,
same style of default constructor
*/
void CustomElementGraphicPart::resetStyles()
{
_linestyle = NormalStyle;
_lineweight = NormalWeight;
_filling = NoneFilling;
_color = BlackColor;
_antialiased = false;
}
/**
@brief CustomElementGraphicPart::applyStylesToQPainter
Apply the current style to the QPainter
@param painter
*/
void CustomElementGraphicPart::applyStylesToQPainter(QPainter &painter) const
{
//Get the pen and brush
QPen pen = painter.pen();
QBrush brush = painter.brush();
//Apply pen style
if (_linestyle == DashedStyle) pen.setStyle(Qt::DashLine);
else if (_linestyle == DashdottedStyle) pen.setStyle(Qt::DashDotLine);
else if (_linestyle == DottedStyle) pen.setStyle(Qt::DotLine);
else if (_linestyle == NormalStyle) pen.setStyle(Qt::SolidLine);
//Apply pen width
if (_lineweight == NoneWeight) pen.setColor(QColor(0, 0, 0, 0));
else if (_lineweight == ThinWeight) pen.setWidth(0);
else if (_lineweight == NormalWeight) pen.setWidthF(1.0);
else if (_lineweight == UltraWeight) pen.setWidthF(2.0);
else if (_lineweight == BigWeight) pen.setWidthF(5.0);
//Apply brush color
if (_filling == NoneFilling) brush.setStyle(Qt::NoBrush);
else if (_filling == HorFilling) brush.setStyle(Qt::HorPattern);
else if (_filling == VerFilling) brush.setStyle(Qt::VerPattern);
else if (_filling == BdiagFilling) brush.setStyle(Qt::BDiagPattern);
else if (_filling == FdiagFilling) brush.setStyle(Qt::FDiagPattern);
else
{
static const QMap<Filling, QColor>
filling_style_map = {
{BlackFilling, Qt::black},
{WhiteFilling, Qt::white},
{GreenFilling, Qt::green},
{RedFilling, Qt::red},
{BlueFilling, Qt::blue},
{GrayFilling, Qt::gray},
{BrunFilling, QColor(97, 44, 0)},
{YellowFilling, Qt::yellow},
{CyanFilling, Qt::cyan},
{MagentaFilling, Qt::magenta},
{LightgrayFilling, Qt::lightGray},
{OrangeFilling, QColor(255, 128, 0)},
{PurpleFilling, QColor(136, 28, 168)},
{HTMLPinkPinkFilling, QColor(255, 192, 203)},
{HTMLPinkLightPinkFilling, QColor(255, 182, 193)},
{HTMLPinkHotPinkFilling, QColor(255, 105, 180)},
{HTMLPinkDeepPinkFilling, QColor(255, 20, 147)},
{HTMLPinkPaleVioletRedFilling, QColor(219, 112, 147)},
{HTMLPinkMediumVioletRedFilling, QColor(199, 21, 133)},
{HTMLRedLightSalmonFilling, QColor(255, 160, 122)},
{HTMLRedSalmonFilling, QColor(250, 128, 114)},
{HTMLRedDarkSalmonFilling, QColor(233, 150, 122)},
{HTMLRedLightCoralFilling, QColor(240, 128, 128)},
{HTMLRedIndianRedFilling, QColor(205, 92, 92)},
{HTMLRedCrimsonFilling, QColor(220, 20, 60)},
{HTMLRedFirebrickFilling, QColor(178, 34, 34)},
{HTMLRedDarkRedFilling, QColor(139, 0, 0)},
{HTMLRedRedFilling, QColor(255, 0, 0)},
{HTMLOrangeOrangeRedFilling, QColor(255, 69, 0)},
{HTMLOrangeTomatoFilling, QColor(255, 99, 71)},
{HTMLOrangeCoralFilling, QColor(255, 127, 80)},
{HTMLOrangeDarkOrangeFilling, QColor(255, 140, 0)},
{HTMLOrangeOrangeFilling, QColor(255, 165, 0)},
{HTMLYellowYellowFilling, QColor(255, 255, 0)},
{HTMLYellowLightYellowFilling, QColor(255, 255, 224)},
{HTMLYellowLemonChiffonFilling, QColor(255, 250, 205)},
{HTMLYellowLightGoldenrodYellowFilling, QColor(250, 250, 210)},
{HTMLYellowPapayaWhipFilling, QColor(255, 239, 213)},
{HTMLYellowMoccasinFilling, QColor(255, 228, 181)},
{HTMLYellowPeachPuffFilling, QColor(255, 218, 185)},
{HTMLYellowPaleGoldenrodFilling, QColor(238, 232, 170)},
{HTMLYellowKhakiFilling, QColor(240, 230, 140)},
{HTMLYellowDarkKhakiFilling, QColor(189, 183, 107)},
{HTMLYellowGoldFilling, QColor(255, 215, 0)},
{HTMLBrownCornsilkFilling, QColor(255, 248, 220)},
{HTMLBrownBlanchedAlmondFilling, QColor(255, 235, 205)},
{HTMLBrownBisqueFilling, QColor(255, 228, 196)},
{HTMLBrownNavajoWhiteFilling, QColor(255, 222, 173)},
{HTMLBrownWheatFilling, QColor(245, 222, 179)},
{HTMLBrownBurlywoodFilling, QColor(222, 184, 135)},
{HTMLBrownTanFilling, QColor(210, 180, 140)},
{HTMLBrownRosyBrownFilling, QColor(188, 143, 143)},
{HTMLBrownSandyBrownFilling, QColor(244, 164, 96)},
{HTMLBrownGoldenrodFilling, QColor(218, 165, 32)},
{HTMLBrownDarkGoldenrodFilling, QColor(184, 134, 11)},
{HTMLBrownPeruFilling, QColor(205, 133, 63)},
{HTMLBrownChocolateFilling, QColor(210, 105, 30)},
{HTMLBrownSaddleBrownFilling, QColor(139, 69, 19)},
{HTMLBrownSiennaFilling, QColor(160, 82, 45)},
{HTMLBrownBrownFilling, QColor(165, 42, 42)},
{HTMLBrownMaroonFilling, QColor(128, 0, 0)},
{HTMLGreenDarkOliveGreenFilling, QColor(85, 107, 47)},
{HTMLGreenOliveFilling, QColor(128, 128, 0)},
{HTMLGreenOliveDrabFilling, QColor(107, 142, 35)},
{HTMLGreenYellowGreenFilling, QColor(154, 205, 50)},
{HTMLGreenLimeGreenFilling, QColor(50, 205, 50)},
{HTMLGreenLimeFilling, QColor(0, 255, 0)},
{HTMLGreenLawnGreenFilling, QColor(124, 252, 0)},
{HTMLGreenChartreuseFilling, QColor(127, 255, 0)},
{HTMLGreenGreenYellowFilling, QColor(173, 255, 47)},
{HTMLGreenSpringGreenFilling, QColor(0, 255, 127)},
{HTMLGreenMediumSpringGreenFilling, QColor(0, 250, 154)},
{HTMLGreenLightGreenFilling, QColor(144, 238, 144)},
{HTMLGreenPaleGreenFilling, QColor(152, 251, 152)},
{HTMLGreenDarkSeaGreenFilling, QColor(143, 188, 143)},
{HTMLGreenMediumAquamarineFilling, QColor(102, 205, 170)},
{HTMLGreenMediumSeaGreenFilling, QColor(60, 179, 113)},
{HTMLGreenSeaGreenFilling, QColor(46, 139, 87)},
{HTMLGreenForestGreenFilling, QColor(34, 139, 34)},
{HTMLGreenGreenFilling, QColor(0, 128, 0)},
{HTMLGreenDarkGreenFilling, QColor(0, 100, 0)},
{HTMLCyanAquaFilling, QColor(0, 255, 255)},
{HTMLCyanCyanFilling, QColor(0, 255, 255)},
{HTMLCyanLightCyanFilling, QColor(224, 255, 255)},
{HTMLCyanPaleTurquoiseFilling, QColor(175, 238, 238)},
{HTMLCyanAquamarineFilling, QColor(127, 255, 212)},
{HTMLCyanTurquoiseFilling, QColor(64, 224, 208)},
{HTMLCyanMediumTurquoiseFilling, QColor(72, 209, 204)},
{HTMLCyanDarkTurquoiseFilling, QColor(0, 206, 209)},
{HTMLCyanLightSeaGreenFilling, QColor(32, 178, 170)},
{HTMLCyanCadetBlueFilling, QColor(95, 158, 160)},
{HTMLCyanDarkCyanFilling, QColor(0, 139, 139)},
{HTMLCyanTealFilling, QColor(0, 128, 128)},
{HTMLBlueLightSteelBlueFilling, QColor(176, 196, 222)},
{HTMLBluePowderBlueFilling, QColor(176, 224, 230)},
{HTMLBlueLightBlueFilling, QColor(173, 216, 230)},
{HTMLBlueSkyBlueFilling, QColor(135, 206, 235)},
{HTMLBlueLightSkyBlueFilling, QColor(135, 206, 250)},
{HTMLBlueDeepSkyBlueFilling, QColor(0, 191, 255)},
{HTMLBlueDodgerBlueFilling, QColor(30, 144, 255)},
{HTMLBlueCornflowerBlueFilling, QColor(100, 149, 237)},
{HTMLBlueSteelBlueFilling, QColor(70, 130, 180)},
{HTMLBlueRoyalBlueFilling, QColor(65, 105, 225)},
{HTMLBlueBlueFilling, QColor(0, 0, 255)},
{HTMLBlueMediumBlueFilling, QColor(0, 0, 205)},
{HTMLBlueDarkBlueFilling, QColor(0, 0, 139)},
{HTMLBlueNavyFilling, QColor(0, 0, 128)},
{HTMLBlueMidnightBlueFilling, QColor(25, 25, 112)},
{HTMLPurpleLavenderFilling, QColor(230, 230, 250)},
{HTMLPurpleThistleFilling, QColor(216, 191, 216)},
{HTMLPurplePlumFilling, QColor(221, 160, 221)},
{HTMLPurpleVioletFilling, QColor(238, 130, 238)},
{HTMLPurpleOrchidFilling, QColor(218, 112, 214)},
{HTMLPurpleFuchsiaFilling, QColor(255, 0, 255)},
{HTMLPurpleMagentaFilling, QColor(255, 0, 255)},
{HTMLPurpleMediumOrchidFilling, QColor(186, 85, 211)},
{HTMLPurpleMediumPurpleFilling, QColor(147, 112, 219)},
{HTMLPurpleBlueVioletFilling, QColor(138, 43, 226)},
{HTMLPurpleDarkVioletFilling, QColor(148, 0, 211)},
{HTMLPurpleDarkOrchidFilling, QColor(153, 50, 204)},
{HTMLPurpleDarkMagentaFilling, QColor(139, 0, 139)},
{HTMLPurplePurpleFilling, QColor(128, 0, 128)},
{HTMLPurpleIndigoFilling, QColor(75, 0, 130)},
{HTMLPurpleDarkSlateBlueFilling, QColor(72, 61, 139)},
{HTMLPurpleSlateBlueFilling, QColor(106, 90, 205)},
{HTMLPurpleMediumSlateBlueFilling, QColor(123, 104, 238)},
{HTMLWhiteWhiteFilling, QColor(255, 255, 255)},
{HTMLWhiteSnowFilling, QColor(255, 250, 250)},
{HTMLWhiteHoneydewFilling, QColor(240, 255, 240)},
{HTMLWhiteMintCreamFilling, QColor(245, 255, 250)},
{HTMLWhiteAzureFilling, QColor(240, 255, 255)},
{HTMLWhiteAliceBlueFilling, QColor(240, 248, 255)},
{HTMLWhiteGhostWhiteFilling, QColor(248, 248, 255)},
{HTMLWhiteWhiteSmokeFilling, QColor(245, 245, 245)},
{HTMLWhiteSeashellFilling, QColor(255, 245, 238)},
{HTMLWhiteBeigeFilling, QColor(245, 245, 220)},
{HTMLWhiteOldLaceFilling, QColor(253, 245, 230)},
{HTMLWhiteFloralWhiteFilling, QColor(255, 250, 240)},
{HTMLWhiteIvoryFilling, QColor(255, 255, 240)},
{HTMLWhiteAntiqueWhiteFilling, QColor(250, 235, 215)},
{HTMLWhiteLinenFilling, QColor(250, 240, 230)},
{HTMLWhiteLavenderBlushFilling, QColor(255, 240, 245)},
{HTMLWhiteMistyRoseFilling, QColor(255, 228, 225)},
{HTMLGrayGainsboroFilling, QColor(220, 220, 220)},
{HTMLGrayLightGrayFilling, QColor(211, 211, 211)},
{HTMLGraySilverFilling, QColor(192, 192, 192)},
{HTMLGrayDarkGrayFilling, QColor(169, 169, 169)},
{HTMLGrayGrayFilling, QColor(128, 128, 128)},
{HTMLGrayDimGrayFilling, QColor(105, 105, 105)},
{HTMLGrayLightSlateGrayFilling, QColor(119, 136, 153)},
{HTMLGraySlateGrayFilling, QColor(112, 128, 144)},
{HTMLGrayDarkSlateGrayFilling, QColor(47, 79, 79)},
{HTMLGrayBlackFilling, QColor(0, 0, 0)}};
brush.setStyle(Qt::SolidPattern);
auto color = filling_style_map.find(_filling);
if (color != filling_style_map.end()) { brush.setColor(*color); }
}
// Apply pen color
static const QMap<Color, QColor> color_map =
{{GreenColor, Qt::green},
{RedColor, Qt::red},
{BlueColor, Qt::blue},
{GrayColor, Qt::gray},
{BrunColor, QColor(97, 44, 0)},
{YellowColor, Qt::yellow},
{CyanColor, Qt::cyan},
{MagentaColor, Qt::magenta},
{LightgrayColor, Qt::lightGray},
{OrangeColor, QColor(255, 128, 0)},
{PurpleColor, QColor(136, 28, 168)},
{HTMLPinkPinkColor, QColor(255, 192, 203)},
{HTMLPinkLightPinkColor, QColor(255, 182, 193)},
{HTMLPinkHotPinkColor, QColor(255, 105, 180)},
{HTMLPinkDeepPinkColor, QColor(255, 20, 147)},
{HTMLPinkPaleVioletRedColor, QColor(219, 112, 147)},
{HTMLPinkMediumVioletRedColor, QColor(199, 21, 133)},
{HTMLRedLightSalmonColor, QColor(255, 160, 122)},
{HTMLRedSalmonColor, QColor(250, 128, 114)},
{HTMLRedDarkSalmonColor, QColor(233, 150, 122)},
{HTMLRedLightCoralColor, QColor(240, 128, 128)},
{HTMLRedIndianRedColor, QColor(205, 92, 92)},
{HTMLRedCrimsonColor, QColor(220, 20, 60)},
{HTMLRedFirebrickColor, QColor(178, 34, 34)},
{HTMLRedDarkRedColor, QColor(139, 0, 0)},
{HTMLRedRedColor, QColor(255, 0, 0)},
{HTMLOrangeOrangeRedColor, QColor(255, 69, 0)},
{HTMLOrangeTomatoColor, QColor(255, 99, 71)},
{HTMLOrangeCoralColor, QColor(255, 127, 80)},
{HTMLOrangeDarkOrangeColor, QColor(255, 140, 0)},
{HTMLOrangeOrangeColor, QColor(255, 165, 0)},
{HTMLYellowYellowColor, QColor(255, 255, 0)},
{HTMLYellowLightYellowColor, QColor(255, 255, 224)},
{HTMLYellowLemonChiffonColor, QColor(255, 250, 205)},
{HTMLYellowLightGoldenrodYellowColor, QColor(250, 250, 210)},
{HTMLYellowPapayaWhipColor, QColor(255, 239, 213)},
{HTMLYellowMoccasinColor, QColor(255, 228, 181)},
{HTMLYellowPeachPuffColor, QColor(255, 218, 185)},
{HTMLYellowPaleGoldenrodColor, QColor(238, 232, 170)},
{HTMLYellowKhakiColor, QColor(240, 230, 140)},
{HTMLYellowDarkKhakiColor, QColor(189, 183, 107)},
{HTMLYellowGoldColor, QColor(255, 215, 0)},
{HTMLBrownCornsilkColor, QColor(255, 248, 220)},
{HTMLBrownBlanchedAlmondColor, QColor(255, 235, 205)},
{HTMLBrownBisqueColor, QColor(255, 228, 196)},
{HTMLBrownNavajoWhiteColor, QColor(255, 222, 173)},
{HTMLBrownWheatColor, QColor(245, 222, 179)},
{HTMLBrownBurlywoodColor, QColor(222, 184, 135)},
{HTMLBrownTanColor, QColor(210, 180, 140)},
{HTMLBrownRosyBrownColor, QColor(188, 143, 143)},
{HTMLBrownSandyBrownColor, QColor(244, 164, 96)},
{HTMLBrownGoldenrodColor, QColor(218, 165, 32)},
{HTMLBrownDarkGoldenrodColor, QColor(184, 134, 11)},
{HTMLBrownPeruColor, QColor(205, 133, 63)},
{HTMLBrownChocolateColor, QColor(210, 105, 30)},
{HTMLBrownSaddleBrownColor, QColor(139, 69, 19)},
{HTMLBrownSiennaColor, QColor(160, 82, 45)},
{HTMLBrownBrownColor, QColor(165, 42, 42)},
{HTMLBrownMaroonColor, QColor(128, 0, 0)},
{HTMLGreenDarkOliveGreenColor, QColor(85, 107, 47)},
{HTMLGreenOliveColor, QColor(128, 128, 0)},
{HTMLGreenOliveDrabColor, QColor(107, 142, 35)},
{HTMLGreenYellowGreenColor, QColor(154, 205, 50)},
{HTMLGreenLimeGreenColor, QColor(50, 205, 50)},
{HTMLGreenLimeColor, QColor(0, 255, 0)},
{HTMLGreenLawnGreenColor, QColor(124, 252, 0)},
{HTMLGreenChartreuseColor, QColor(127, 255, 0)},
{HTMLGreenGreenYellowColor, QColor(173, 255, 47)},
{HTMLGreenSpringGreenColor, QColor(0, 255, 127)},
{HTMLGreenMediumSpringGreenColor, QColor(0, 250, 154)},
{HTMLGreenLightGreenColor, QColor(144, 238, 144)},
{HTMLGreenPaleGreenColor, QColor(152, 251, 152)},
{HTMLGreenDarkSeaGreenColor, QColor(143, 188, 143)},
{HTMLGreenMediumAquamarineColor, QColor(102, 205, 170)},
{HTMLGreenMediumSeaGreenColor, QColor(60, 179, 113)},
{HTMLGreenSeaGreenColor, QColor(46, 139, 87)},
{HTMLGreenForestGreenColor, QColor(34, 139, 34)},
{HTMLGreenGreenColor, QColor(0, 128, 0)},
{HTMLGreenDarkGreenColor, QColor(0, 100, 0)},
{HTMLCyanAquaColor, QColor(0, 255, 255)},
{HTMLCyanCyanColor, QColor(0, 255, 255)},
{HTMLCyanLightCyanColor, QColor(224, 255, 255)},
{HTMLCyanPaleTurquoiseColor, QColor(175, 238, 238)},
{HTMLCyanAquamarineColor, QColor(127, 255, 212)},
{HTMLCyanTurquoiseColor, QColor(64, 224, 208)},
{HTMLCyanMediumTurquoiseColor, QColor(72, 209, 204)},
{HTMLCyanDarkTurquoiseColor, QColor(0, 206, 209)},
{HTMLCyanLightSeaGreenColor, QColor(32, 178, 170)},
{HTMLCyanCadetBlueColor, QColor(95, 158, 160)},
{HTMLCyanDarkCyanColor, QColor(0, 139, 139)},
{HTMLCyanTealColor, QColor(0, 128, 128)},
{HTMLBlueLightSteelBlueColor, QColor(176, 196, 222)},
{HTMLBluePowderBlueColor, QColor(176, 224, 230)},
{HTMLBlueLightBlueColor, QColor(173, 216, 230)},
{HTMLBlueSkyBlueColor, QColor(135, 206, 235)},
{HTMLBlueLightSkyBlueColor, QColor(135, 206, 250)},
{HTMLBlueDeepSkyBlueColor, QColor(0, 191, 255)},
{HTMLBlueDodgerBlueColor, QColor(30, 144, 255)},
{HTMLBlueCornflowerBlueColor, QColor(100, 149, 237)},
{HTMLBlueSteelBlueColor, QColor(70, 130, 180)},
{HTMLBlueRoyalBlueColor, QColor(65, 105, 225)},
{HTMLBlueBlueColor, QColor(0, 0, 255)},
{HTMLBlueMediumBlueColor, QColor(0, 0, 205)},
{HTMLBlueDarkBlueColor, QColor(0, 0, 139)},
{HTMLBlueNavyColor, QColor(0, 0, 128)},
{HTMLBlueMidnightBlueColor, QColor(25, 25, 112)},
{HTMLPurpleLavenderColor, QColor(230, 230, 250)},
{HTMLPurpleThistleColor, QColor(216, 191, 216)},
{HTMLPurplePlumColor, QColor(221, 160, 221)},
{HTMLPurpleVioletColor, QColor(238, 130, 238)},
{HTMLPurpleOrchidColor, QColor(218, 112, 214)},
{HTMLPurpleFuchsiaColor, QColor(255, 0, 255)},
{HTMLPurpleMagentaColor, QColor(255, 0, 255)},
{HTMLPurpleMediumOrchidColor, QColor(186, 85, 211)},
{HTMLPurpleMediumPurpleColor, QColor(147, 112, 219)},
{HTMLPurpleBlueVioletColor, QColor(138, 43, 226)},
{HTMLPurpleDarkVioletColor, QColor(148, 0, 211)},
{HTMLPurpleDarkOrchidColor, QColor(153, 50, 204)},
{HTMLPurpleDarkMagentaColor, QColor(139, 0, 139)},
{HTMLPurplePurpleColor, QColor(128, 0, 128)},
{HTMLPurpleIndigoColor, QColor(75, 0, 130)},
{HTMLPurpleDarkSlateBlueColor, QColor(72, 61, 139)},
{HTMLPurpleSlateBlueColor, QColor(106, 90, 205)},
{HTMLPurpleMediumSlateBlueColor, QColor(123, 104, 238)},
{HTMLWhiteWhiteColor, QColor(255, 255, 255)},
{HTMLWhiteSnowColor, QColor(255, 250, 250)},
{HTMLWhiteHoneydewColor, QColor(240, 255, 240)},
{HTMLWhiteMintCreamColor, QColor(245, 255, 250)},
{HTMLWhiteAzureColor, QColor(240, 255, 255)},
{HTMLWhiteAliceBlueColor, QColor(240, 248, 255)},
{HTMLWhiteGhostWhiteColor, QColor(248, 248, 255)},
{HTMLWhiteWhiteSmokeColor, QColor(245, 245, 245)},
{HTMLWhiteSeashellColor, QColor(255, 245, 238)},
{HTMLWhiteBeigeColor, QColor(245, 245, 220)},
{HTMLWhiteOldLaceColor, QColor(253, 245, 230)},
{HTMLWhiteFloralWhiteColor, QColor(255, 250, 240)},
{HTMLWhiteIvoryColor, QColor(255, 255, 240)},
{HTMLWhiteAntiqueWhiteColor, QColor(250, 235, 215)},
{HTMLWhiteLinenColor, QColor(250, 240, 230)},
{HTMLWhiteLavenderBlushColor, QColor(255, 240, 245)},
{HTMLWhiteMistyRoseColor, QColor(255, 228, 225)},
{HTMLGrayGainsboroColor, QColor(220, 220, 220)},
{HTMLGrayLightGrayColor, QColor(211, 211, 211)},
{HTMLGraySilverColor, QColor(192, 192, 192)},
{HTMLGrayDarkGrayColor, QColor(169, 169, 169)},
{HTMLGrayGrayColor, QColor(128, 128, 128)},
{HTMLGrayDimGrayColor, QColor(105, 105, 105)},
{HTMLGrayLightSlateGrayColor, QColor(119, 136, 153)},
{HTMLGraySlateGrayColor, QColor(112, 128, 144)},
{HTMLGrayDarkSlateGrayColor, QColor(47, 79, 79)},
{HTMLGrayBlackColor, QColor(0, 0, 0)}};
if (_color == NoneColor) { pen.setBrush(Qt::transparent); }
else if (_color == BlackColor)
{
pen.setBrush(QColor(0, 0, 0, pen.color().alpha()));
}
else if (_color == WhiteColor)
{
pen.setBrush(QColor(255, 255, 255, pen.color().alpha()));
}
else
{
auto style_ = color_map.find(_color);
if (style_ != color_map.end()) { pen.setColor(*style_); }
}
//Apply antialiasing
painter.setRenderHint(QPainter::Antialiasing, _antialiased);
painter.setRenderHint(QPainter::TextAntialiasing, _antialiased);
painter.setRenderHint(QPainter::SmoothPixmapTransform, _antialiased);
painter.setPen(pen);
painter.setBrush(brush);
}
/**
@brief CustomElementGraphicPart::drawShadowShape
Draw a transparent blue shadow arround the shape of this item.
The QPainterPathStroker used to draw shadows have a width of SHADOWS_HEIGHT
Be carefull if penWeight of this item is to 0 the outline of strock is bigger of 0.5
@param painter : painter to use for draw this shadows
*/
void CustomElementGraphicPart::drawShadowShape(QPainter *painter)
{
//@FIXME if pen weight is 0, the strock outline is SHADOWS_HEIGHT/2 + 0.5
//may be because shape have no line weight
QPainterPathStroker strock;
strock.setWidth(SHADOWS_HEIGHT);
strock.setJoinStyle(Qt::RoundJoin);
painter->save();
QColor color(Qt::darkBlue);
color.setAlpha(50);
painter -> setBrush (QBrush (color));
painter -> setPen (Qt::NoPen);
painter -> drawPath (strock.createStroke(shadowShape()));
painter -> restore ();
}
/**
@brief CustomElementGraphicPart::hoverEnterEvent
Reimplemented from QGraphicsObject.
Set m_hovered to true
@param event
*/
void CustomElementGraphicPart::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
m_hovered = true;
QGraphicsObject::hoverEnterEvent(event);
}
/**
@brief CustomElementGraphicPart::hoverLeaveEvent
Reimplemented from QGraphicsObject.
Set m_hovered to false
@param event
*/
void CustomElementGraphicPart::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
m_hovered = false;
QGraphicsObject::hoverLeaveEvent(event);
}
void CustomElementGraphicPart::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button() == Qt::LeftButton) {
m_origin_pos = this->pos();
m_first_move = true;
}
QGraphicsObject::mousePressEvent(event);
}
void CustomElementGraphicPart::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
//m_first_move is used to avoid an unwanted behavior
//when the properties dock widget is displayed :
//1 there is no selection
//2 the dock widget width is set to minimum
//3 select a part, the dock widget gain new widgets used to edit
//the current selected part and the width of the dock grow
//so the width of the QGraphicsView is reduced and cause a mouse move event.
//When this case occur the part is moved but they should not. This bool fix it.
if (Q_UNLIKELY(m_first_move)) {
m_first_move = false;
return;
}
if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable))
{
QPointF pos = event->scenePos() + (m_origin_pos - event->buttonDownScenePos(Qt::LeftButton));
event->modifiers() == Qt::ControlModifier ? setPos(pos) : setPos(elementScene()->snapToGrid(pos));
}
else
QGraphicsObject::mouseMoveEvent(event);
}
void CustomElementGraphicPart::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if((event->button() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable) && m_origin_pos != pos())
{
QPropertyUndoCommand *undo = new QPropertyUndoCommand(this, "pos", QVariant(m_origin_pos), QVariant(pos()));
undo->setText(tr("Déplacer une primitive"));
undo->enableAnimation();
elementScene()->undoStack().push(undo);
}
QGraphicsObject::mouseReleaseEvent(event);
}