From ab828ec2926c3d0b99e3dcb765b3817ab4f00f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Sun, 4 Sep 2022 15:19:08 +0200 Subject: [PATCH] Additional options for marker symbol style --- .../PC_Application/Traces/Marker/marker.cpp | 57 +++++++++++++++---- Software/PC_Application/preferences.cpp | 2 + Software/PC_Application/preferences.h | 10 ++++ Software/PC_Application/preferencesdialog.ui | 30 +++++++++- 4 files changed, 85 insertions(+), 14 deletions(-) diff --git a/Software/PC_Application/Traces/Marker/marker.cpp b/Software/PC_Application/Traces/Marker/marker.cpp index 055960a..3a50d98 100644 --- a/Software/PC_Application/Traces/Marker/marker.cpp +++ b/Software/PC_Application/Traces/Marker/marker.cpp @@ -684,18 +684,51 @@ void Marker::traceDataChanged() void Marker::updateSymbol() { if(isDisplayedMarker()) { - constexpr int width = 15, height = 15; - symbol = QPixmap(width, height); - symbol.fill(Qt::transparent); - QPainter p(&symbol); - p.setRenderHint(QPainter::Antialiasing); - QPointF points[] = {QPointF(0,0),QPointF(width,0),QPointF(width/2,height)}; - auto traceColor = parentTrace->color(); - p.setPen(traceColor); - p.setBrush(traceColor); - p.drawConvexPolygon(points, 3); - p.setPen(Util::getFontColorFromBackground(traceColor)); - p.drawText(QRectF(0,0,width, height*2.0/3.0), Qt::AlignCenter, QString::number(number) + suffix); + auto style = Preferences::getInstance().Marker.symbolStyle; + switch(style) { + case MarkerSymbolStyle::FilledNumberInside: { + constexpr int width = 15, height = 15; + symbol = QPixmap(width, height); + symbol.fill(Qt::transparent); + QPainter p(&symbol); + p.setRenderHint(QPainter::Antialiasing); + QPointF points[] = {QPointF(0,0),QPointF(width,0),QPointF(width/2,height)}; + auto traceColor = parentTrace->color(); + p.setPen(traceColor); + p.setBrush(traceColor); + p.drawConvexPolygon(points, 3); + p.setPen(Util::getFontColorFromBackground(traceColor)); + p.drawText(QRectF(0,0,width, height * 2.0 / 3.0), Qt::AlignCenter, QString::number(number) + suffix); + } + break; + case MarkerSymbolStyle::FilledNumberAbove: { + constexpr int width = 15, height = 30; + symbol = QPixmap(width, height); + symbol.fill(Qt::transparent); + QPainter p(&symbol); + p.setRenderHint(QPainter::Antialiasing); + QPointF points[] = {QPointF(0,height/2),QPointF(width,height/2),QPointF(width/2,height)}; + auto traceColor = parentTrace->color(); + p.setPen(traceColor); + p.setBrush(traceColor); + p.drawConvexPolygon(points, 3); + p.drawText(QRectF(0,0,width, height * 0.45), Qt::AlignCenter, QString::number(number) + suffix); + } + break; + case MarkerSymbolStyle::EmptyNumberAbove: { + constexpr int width = 15, height = 30; + symbol = QPixmap(width, height); + symbol.fill(Qt::transparent); + QPainter p(&symbol); + p.setRenderHint(QPainter::Antialiasing); + QPointF points[] = {QPointF(0,height/2),QPointF(width,height/2),QPointF(width/2,height)}; + auto traceColor = parentTrace->color(); + p.setPen(traceColor); + p.drawConvexPolygon(points, 3); + p.drawText(QRectF(0,0,width, height * 0.45), Qt::AlignCenter, QString::number(number) + suffix); + } + break; + } } else { symbol = QPixmap(1,1); } diff --git a/Software/PC_Application/preferences.cpp b/Software/PC_Application/preferences.cpp index 54e89c7..29dae3b 100644 --- a/Software/PC_Application/preferences.cpp +++ b/Software/PC_Application/preferences.cpp @@ -259,6 +259,7 @@ void PreferencesDialog::setInitialGUIState() ui->MarkerShowAllMarkerData->setChecked(p->Marker.defaultBehavior.showAllData); ui->MarkerInterpolate->setCurrentIndex(p->Marker.interpolatePoints ? 1 : 0); ui->MarkerSortOrder->setCurrentIndex((int) p->Marker.sortOrder); + ui->MarkerSymbolStyle->setCurrentIndex((int) p->Marker.symbolStyle); ui->SCPIServerEnabled->setChecked(p->SCPIServer.enabled); ui->SCPIServerPort->setValue(p->SCPIServer.port); @@ -325,6 +326,7 @@ void PreferencesDialog::updateFromGUI() p->Marker.defaultBehavior.showAllData = ui->MarkerShowAllMarkerData->isChecked(); p->Marker.interpolatePoints = ui->MarkerInterpolate->currentIndex() == 1; p->Marker.sortOrder = (MarkerSortOrder) ui->MarkerSortOrder->currentIndex(); + p->Marker.symbolStyle = (MarkerSymbolStyle) ui->MarkerSymbolStyle->currentIndex(); p->SCPIServer.enabled = ui->SCPIServerEnabled->isChecked(); p->SCPIServer.port = ui->SCPIServerPort->value(); diff --git a/Software/PC_Application/preferences.h b/Software/PC_Application/preferences.h index 440c182..713b478 100644 --- a/Software/PC_Application/preferences.h +++ b/Software/PC_Application/preferences.h @@ -32,6 +32,14 @@ enum MarkerSortOrder { Q_DECLARE_METATYPE(MarkerSortOrder); +enum MarkerSymbolStyle { + FilledNumberInside = 0, + FilledNumberAbove = 1, + EmptyNumberAbove = 2, +}; + +Q_DECLARE_METATYPE(MarkerSymbolStyle); + class Preferences : public Savable { public: @@ -124,6 +132,7 @@ public: } defaultBehavior; bool interpolatePoints; MarkerSortOrder sortOrder; + MarkerSymbolStyle symbolStyle; } Marker; struct { bool enabled; @@ -194,6 +203,7 @@ private: {&Marker.defaultBehavior.showAllData, "Marker.defaultBehavior.ShowAllData", false}, {&Marker.interpolatePoints, "Marker.interpolatePoints", false}, {&Marker.sortOrder, "Marker.sortOrder", MarkerSortOrder::PrefMarkerSortXCoord}, + {&Marker.symbolStyle, "Marker.symbolStyle", MarkerSymbolStyle::EmptyNumberAbove}, {&SCPIServer.enabled, "SCPIServer.enabled", true}, {&SCPIServer.port, "SCPIServer.port", 19542}, }}; diff --git a/Software/PC_Application/preferencesdialog.ui b/Software/PC_Application/preferencesdialog.ui index eab56a9..4bda81c 100644 --- a/Software/PC_Application/preferencesdialog.ui +++ b/Software/PC_Application/preferencesdialog.ui @@ -79,7 +79,7 @@ 0 0 687 - 938 + 884 @@ -98,7 +98,7 @@ - 0 + 3 @@ -1281,6 +1281,32 @@ + + + + Symbol Style: + + + + + + + + Filled triangle - Marker number inside + + + + + Filled triangle - Marker number above + + + + + Empty triangle - Marker number above + + + +