From 009e637c42369c105df5937890944a791c0cd437 Mon Sep 17 00:00:00 2001 From: xiwangshu <1020463523@qq.com> Date: Fri, 7 Jan 2022 19:38:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91=EF=BC=8C=E5=AF=B9=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E7=9A=84=E6=95=B0=E6=8D=AE=E8=BF=9B=E8=A1=8C=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=A4=84=E7=90=86=EF=BC=8C=E5=AF=B9=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=AE=BF=E9=97=AE=E4=BF=9D=E6=8A=A4=EF=BC=8C?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E5=BC=82=E5=B8=B8=E6=95=B0=E6=8D=AE=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chart_plugin/src/slt_space/slt_space_draw.cpp | 6 +++- chart_plugin/src/slt_space_display.cpp | 29 +++++++++++++++++-- chart_plugin/src/st_space_display.cpp | 25 ++++++++++++++-- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/chart_plugin/src/slt_space/slt_space_draw.cpp b/chart_plugin/src/slt_space/slt_space_draw.cpp index bdda5b9..83efdc8 100755 --- a/chart_plugin/src/slt_space/slt_space_draw.cpp +++ b/chart_plugin/src/slt_space/slt_space_draw.cpp @@ -122,7 +122,11 @@ void SltSpaceDraw::DrawObjects(mglGraph *mglGraphPtr) const continue; } - QColor color = (spaceDisplayPtr->GetObjectsTypeColorPropertyMap())[type]->getColor(); + auto objectsTypeColorPropertyMap = spaceDisplayPtr->GetObjectsTypeColorPropertyMap(); + if (!objectsTypeColorPropertyMap.contains(type) || objectsTypeColorPropertyMap[type] == nullptr) { + continue; + } + QColor color = objectsTypeColorPropertyMap[type]->getColor(); QString colorFaceFormat = COLOR_FACE_PREFIX + color.name().mid(0x1) + COLOR_FACE_SUFFIX; mglGraphPtr->Face(objectData[OBJECT_DATA_NUM0], objectData[OBJECT_DATA_NUM1], objectData[OBJECT_DATA_NUM3], objectData[OBJECT_DATA_NUM2], colorFaceFormat.toStdString().c_str()); diff --git a/chart_plugin/src/slt_space_display.cpp b/chart_plugin/src/slt_space_display.cpp index a695a7c..9ca174c 100755 --- a/chart_plugin/src/slt_space_display.cpp +++ b/chart_plugin/src/slt_space_display.cpp @@ -387,6 +387,9 @@ void SltSpaceDisplay::CreateObjectsLegend(const QMap &objectsI continue; } + if (!objectsTypeTitlePropertyMap.contais(objectType) || objectsTypeTitlePropertyMap[objectType] == nullptr) { + continue; + } auto buttonLegend = make_unique(); buttonLegend->setObjectName(QString("Type %1: %2").arg(objectType).arg(objectId)); buttonLegend->setIcon(GenerateLegendIcon(GetObjectsTypeColor(objectType), LegendType::OBJECT)); @@ -424,6 +427,11 @@ void SltSpaceDisplay::CalculateGridColumnAndRow(int32_t &column, int32_t &row) row = verticalSpacerNum + 1; for (auto iter = objectsIdTypeMap.cbegin(); iter != objectsIdTypeMap.cend(); ++iter) { + auto objectsIdLegendIter = objectsIdLegendMap.find(iter.key()); + if ((objectsIdLegendIter == objectsIdLegendMap.end()) || objectsIdLegendIter->second == nullptr) { + continue; + } + width += metrics.width(objectsIdLegendMap[iter.key()]->text()) + CURVE_LEGEND_MIN_HEIGHT_WIDTH; if (width >= widgetWidth) { break; @@ -495,6 +503,11 @@ void SltSpaceDisplay::UpdateGridLayoutItem() speedLimitCurveLegend->show(); // 只有当整个障碍物图例按钮都还没有遍历安置完毕,网格布局器才安置图例按钮 } else if (iter != objectsIdTypeMap.cend()) { + auto objectsIdLegendIter = objectsIdLegendMap.find(iter.key()); + if ((objectsIdLegendIter = objectsIdLegendMap.end()) || (objectsIdLegendIter->second == nullptr)) { + iter++; + continue; + } ui.GetGridLayout()->addWidget(objectsIdLegendMap[iter.key()].get(), i, j, 1, 1); objectsIdLegendMap[iter.key()]->show(); iter++; @@ -648,6 +661,14 @@ void SltSpaceDisplay::UpdateObjectsTypeChoice() int32_t type = objectsTypeProperty->getOptionInt(); for (auto iter : objectsTypeTotalVector) { + if (!objectsTypeTitlePropertyMap.contains(iter) || objectsTypeTitlePropertyMap[iter] == nullptr) { + continue; + } + + if (!objectsTypeColorPropertyMap.contains(iter) || objectsTypeColorPropertyMap[iter] == nullptr) { + continue; + } + objectsTypeTitlePropertyMap[iter]->setHidden(!(iter == type)); objectsTypeColorPropertyMap[iter]->setHidden(!(iter == type)); } @@ -671,6 +692,10 @@ QColor SltSpaceDisplay::GetObjectsTypeColor(int32_t type) void SltSpaceDisplay::UpdateObjectsTypeColor() { int32_t type = objectsTypeProperty->getOptionInt(); + if (!objectsTypeColorPropertyMap.contains(type) || (objectsTypeColorPropertyMap[type] == nullptr)) { + return; + } + QColor objectColor = (objectsTypeColorPropertyMap[type])->getColor(); const auto objectsIdTypeMap = sltSpaceData.GetObjectsIdTypeMap(); @@ -688,11 +713,11 @@ void SltSpaceDisplay::UpdateObjectsTypeColor() void SltSpaceDisplay::UpdateObjectsTypeTitle() { int32_t type = objectsTypeProperty->getOptionInt(); - const auto objectsIdTypeMap = sltSpaceData.GetObjectsIdTypeMap(); for (auto iter = objectsIdTypeMap.begin(); iter != objectsIdTypeMap.end(); iter++) { auto objectIdLegendIter = objectsIdLegendMap.find(iter.key()); - if ((objectIdLegendIter != objectsIdLegendMap.end()) && (iter.value() == type)) { + if ((objectIdLegendIter != objectsIdLegendMap.end()) && (iter.value() == type) && + (objectsTypeTitlePropertyMap.contains(type) && objectsTypeTitlePropertyMap[type] != nullptr)) { ((*objectIdLegendIter).second) ->setText(QString("%1: %2").arg(objectsTypeTitlePropertyMap[type]->getString()).arg(iter.key())); } diff --git a/chart_plugin/src/st_space_display.cpp b/chart_plugin/src/st_space_display.cpp index a7fbdd7..38064df 100755 --- a/chart_plugin/src/st_space_display.cpp +++ b/chart_plugin/src/st_space_display.cpp @@ -294,7 +294,8 @@ void StSpaceDisplay::UpdateObjectCurveTitle() const QMap objectsIdTypeMap = stSpaceData.GetObjectsIdTypeMap(); for (auto iter = objectsIdTypeMap.begin(); iter != objectsIdTypeMap.end(); iter++) { auto objectIdLegendIter = stObjectsCurveMap.find(iter.key()); - if ((objectIdLegendIter != stObjectsCurveMap.end()) && (iter.value() == type)) { + if ((objectIdLegendIter != stObjectsCurveMap.end()) && (iter.value() == type) && + objectsTypeTitleProperty.contains(type) && objectsTypeTitleProperty[type] != nullptr) { ((*objectIdLegendIter).second) ->setTitle(QString("%1: %2").arg(objectsTypeTitleProperty[type]->getString()).arg(iter.key())); } @@ -450,8 +451,8 @@ void StSpaceDisplay::InitQwtPlotStyle() ui.qwtPlot->setAxisAutoScale(QwtPlot::yLeft, true); } -void StSpaceDisplay::InitCurveStyle(QwtPlotCurve &curve, StringProperty &title, - const ColorProperty &color, const IntProperty &alpha) +void StSpaceDisplay::InitCurveStyle(QwtPlotCurve &curve, StringProperty &title, const ColorProperty &color, + const IntProperty &alpha) { // 图例名字 curve.setTitle(title.getString()); @@ -640,6 +641,11 @@ void StSpaceDisplay::UpdateObjectsTypeChoice() int32_t type = objectsTypeProperty->getOptionInt(); for (auto iter : objectsTypeTotalVector) { + if (!objectsTypeTitleProperty.contains(iter) || objectsTypeTitleProperty[iter] == nullptr || + !objectsTypeColorProperty.contains(iter) || objectsTypeColorProperty[iter] == nullptr || + !objectsTypeAlphaProperty.contains(iter) || objectsTypeAlphaProperty[iter] == nullptr) { + continue; + } objectsTypeTitleProperty[iter]->setHidden(!(iter == type)); objectsTypeColorProperty[iter]->setHidden(!(iter == type)); objectsTypeAlphaProperty[iter]->setHidden(!(iter == type)); @@ -650,6 +656,11 @@ void StSpaceDisplay::UpdateObjectsTypeColorAndAlpha() { int32_t type = objectsTypeProperty->getOptionInt(); + if (!objectsTypeColorProperty.contains(type) || objectsTypeColorProperty[iter] == nullptr || + !objectsTypeAlphaProperty.contains(type) || objectsTypeAlphaProperty[type] == nullptr) { + return; + } + QColor objectColor = (objectsTypeColorProperty[type])->getColor(); int32_t alpha = (objectsTypeAlphaProperty[type])->getInt(); objectColor.setAlpha(alpha); @@ -660,7 +671,12 @@ void StSpaceDisplay::UpdateObjectsTypeColorAndAlpha() for (auto iter = idTypeMap.begin(); iter != idTypeMap.end(); iter++) { int32_t typeTmp = iter.value(); QString objectId = iter.key(); + if (typeTmp == type) { + auto objectsCurveMap = stObjectsCurveMap.find(objectId); + if (objectsCurveMap == stObjectsCurveMap.end() || stObjectsCurveMap[objectId] == nullptr) { + continue; + } stObjectsCurveMap[objectId]->setPen(objectColor, OBJECT_CURVE_PEN_WIDTH); stObjectsCurveMap[objectId]->setBrush(objectColor); } @@ -787,6 +803,9 @@ void StSpaceDisplay::ShowObjectsCurve(const QMap &objectsIdTyp QString objectId = iter.key(); int32_t type = objectsIdType.value(objectId); SetObjectProperty(type); + if (!objectsTypeTitleProperty.contains(type) || objectsTypeTitleProperty[type] == nullptr) { + continue; + } QString objectName = QString("%1: %2").arg(objectsTypeTitleProperty[type]->getString()).arg(objectId); QColor color = GetObjectsTypeColor(type); unique_ptr curve = make_unique(objectName); -- Gitee From e9dd8b205d85571ddb0ae6dd5e69b25aa0869ef0 Mon Sep 17 00:00:00 2001 From: xiwangshu <1020463523@qq.com> Date: Mon, 10 Jan 2022 19:11:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chart_plugin/src/slt_space_display.cpp | 14 +++++++------- chart_plugin/src/st_space_display.cpp | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/chart_plugin/src/slt_space_display.cpp b/chart_plugin/src/slt_space_display.cpp index 9ca174c..6b3b2c9 100755 --- a/chart_plugin/src/slt_space_display.cpp +++ b/chart_plugin/src/slt_space_display.cpp @@ -387,7 +387,7 @@ void SltSpaceDisplay::CreateObjectsLegend(const QMap &objectsI continue; } - if (!objectsTypeTitlePropertyMap.contais(objectType) || objectsTypeTitlePropertyMap[objectType] == nullptr) { + if (!objectsTypeTitlePropertyMap.contains(objectType) || objectsTypeTitlePropertyMap[objectType] == nullptr) { continue; } auto buttonLegend = make_unique(); @@ -427,8 +427,8 @@ void SltSpaceDisplay::CalculateGridColumnAndRow(int32_t &column, int32_t &row) row = verticalSpacerNum + 1; for (auto iter = objectsIdTypeMap.cbegin(); iter != objectsIdTypeMap.cend(); ++iter) { - auto objectsIdLegendIter = objectsIdLegendMap.find(iter.key()); - if ((objectsIdLegendIter == objectsIdLegendMap.end()) || objectsIdLegendIter->second == nullptr) { + auto objectIdLegendIter = objectsIdLegendMap.find(iter.key()); + if ((objectIdLegendIter == objectsIdLegendMap.end()) || objectIdLegendIter->second == nullptr) { continue; } @@ -503,8 +503,8 @@ void SltSpaceDisplay::UpdateGridLayoutItem() speedLimitCurveLegend->show(); // 只有当整个障碍物图例按钮都还没有遍历安置完毕,网格布局器才安置图例按钮 } else if (iter != objectsIdTypeMap.cend()) { - auto objectsIdLegendIter = objectsIdLegendMap.find(iter.key()); - if ((objectsIdLegendIter = objectsIdLegendMap.end()) || (objectsIdLegendIter->second == nullptr)) { + auto objectIdLegendIter = objectsIdLegendMap.find(iter.key()); + if ((objectIdLegendIter == objectsIdLegendMap.end()) || (objectIdLegendIter->second == nullptr)) { iter++; continue; } @@ -661,11 +661,11 @@ void SltSpaceDisplay::UpdateObjectsTypeChoice() int32_t type = objectsTypeProperty->getOptionInt(); for (auto iter : objectsTypeTotalVector) { - if (!objectsTypeTitlePropertyMap.contains(iter) || objectsTypeTitlePropertyMap[iter] == nullptr) { + if (!objectsTypeTitlePropertyMap.contains(iter) || (objectsTypeTitlePropertyMap[iter] == nullptr)) { continue; } - if (!objectsTypeColorPropertyMap.contains(iter) || objectsTypeColorPropertyMap[iter] == nullptr) { + if (!objectsTypeColorPropertyMap.contains(iter) || (objectsTypeColorPropertyMap[iter] == nullptr)) { continue; } diff --git a/chart_plugin/src/st_space_display.cpp b/chart_plugin/src/st_space_display.cpp index 38064df..d7589f6 100755 --- a/chart_plugin/src/st_space_display.cpp +++ b/chart_plugin/src/st_space_display.cpp @@ -656,7 +656,7 @@ void StSpaceDisplay::UpdateObjectsTypeColorAndAlpha() { int32_t type = objectsTypeProperty->getOptionInt(); - if (!objectsTypeColorProperty.contains(type) || objectsTypeColorProperty[iter] == nullptr || + if (!objectsTypeColorProperty.contains(type) || objectsTypeColorProperty[type] == nullptr || !objectsTypeAlphaProperty.contains(type) || objectsTypeAlphaProperty[type] == nullptr) { return; } -- Gitee