Additional options for marker symbol style

This commit is contained in:
Jan Käberich 2022-09-04 15:19:08 +02:00
parent 0281f13ba6
commit ab828ec292
4 changed files with 85 additions and 14 deletions

View File

@ -684,6 +684,9 @@ void Marker::traceDataChanged()
void Marker::updateSymbol() void Marker::updateSymbol()
{ {
if(isDisplayedMarker()) { if(isDisplayedMarker()) {
auto style = Preferences::getInstance().Marker.symbolStyle;
switch(style) {
case MarkerSymbolStyle::FilledNumberInside: {
constexpr int width = 15, height = 15; constexpr int width = 15, height = 15;
symbol = QPixmap(width, height); symbol = QPixmap(width, height);
symbol.fill(Qt::transparent); symbol.fill(Qt::transparent);
@ -696,6 +699,36 @@ void Marker::updateSymbol()
p.drawConvexPolygon(points, 3); p.drawConvexPolygon(points, 3);
p.setPen(Util::getFontColorFromBackground(traceColor)); p.setPen(Util::getFontColorFromBackground(traceColor));
p.drawText(QRectF(0,0,width, height * 2.0 / 3.0), Qt::AlignCenter, QString::number(number) + suffix); 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 { } else {
symbol = QPixmap(1,1); symbol = QPixmap(1,1);
} }

View File

@ -259,6 +259,7 @@ void PreferencesDialog::setInitialGUIState()
ui->MarkerShowAllMarkerData->setChecked(p->Marker.defaultBehavior.showAllData); ui->MarkerShowAllMarkerData->setChecked(p->Marker.defaultBehavior.showAllData);
ui->MarkerInterpolate->setCurrentIndex(p->Marker.interpolatePoints ? 1 : 0); ui->MarkerInterpolate->setCurrentIndex(p->Marker.interpolatePoints ? 1 : 0);
ui->MarkerSortOrder->setCurrentIndex((int) p->Marker.sortOrder); ui->MarkerSortOrder->setCurrentIndex((int) p->Marker.sortOrder);
ui->MarkerSymbolStyle->setCurrentIndex((int) p->Marker.symbolStyle);
ui->SCPIServerEnabled->setChecked(p->SCPIServer.enabled); ui->SCPIServerEnabled->setChecked(p->SCPIServer.enabled);
ui->SCPIServerPort->setValue(p->SCPIServer.port); ui->SCPIServerPort->setValue(p->SCPIServer.port);
@ -325,6 +326,7 @@ void PreferencesDialog::updateFromGUI()
p->Marker.defaultBehavior.showAllData = ui->MarkerShowAllMarkerData->isChecked(); p->Marker.defaultBehavior.showAllData = ui->MarkerShowAllMarkerData->isChecked();
p->Marker.interpolatePoints = ui->MarkerInterpolate->currentIndex() == 1; p->Marker.interpolatePoints = ui->MarkerInterpolate->currentIndex() == 1;
p->Marker.sortOrder = (MarkerSortOrder) ui->MarkerSortOrder->currentIndex(); p->Marker.sortOrder = (MarkerSortOrder) ui->MarkerSortOrder->currentIndex();
p->Marker.symbolStyle = (MarkerSymbolStyle) ui->MarkerSymbolStyle->currentIndex();
p->SCPIServer.enabled = ui->SCPIServerEnabled->isChecked(); p->SCPIServer.enabled = ui->SCPIServerEnabled->isChecked();
p->SCPIServer.port = ui->SCPIServerPort->value(); p->SCPIServer.port = ui->SCPIServerPort->value();

View File

@ -32,6 +32,14 @@ enum MarkerSortOrder {
Q_DECLARE_METATYPE(MarkerSortOrder); Q_DECLARE_METATYPE(MarkerSortOrder);
enum MarkerSymbolStyle {
FilledNumberInside = 0,
FilledNumberAbove = 1,
EmptyNumberAbove = 2,
};
Q_DECLARE_METATYPE(MarkerSymbolStyle);
class Preferences : public Savable { class Preferences : public Savable {
public: public:
@ -124,6 +132,7 @@ public:
} defaultBehavior; } defaultBehavior;
bool interpolatePoints; bool interpolatePoints;
MarkerSortOrder sortOrder; MarkerSortOrder sortOrder;
MarkerSymbolStyle symbolStyle;
} Marker; } Marker;
struct { struct {
bool enabled; bool enabled;
@ -194,6 +203,7 @@ private:
{&Marker.defaultBehavior.showAllData, "Marker.defaultBehavior.ShowAllData", false}, {&Marker.defaultBehavior.showAllData, "Marker.defaultBehavior.ShowAllData", false},
{&Marker.interpolatePoints, "Marker.interpolatePoints", false}, {&Marker.interpolatePoints, "Marker.interpolatePoints", false},
{&Marker.sortOrder, "Marker.sortOrder", MarkerSortOrder::PrefMarkerSortXCoord}, {&Marker.sortOrder, "Marker.sortOrder", MarkerSortOrder::PrefMarkerSortXCoord},
{&Marker.symbolStyle, "Marker.symbolStyle", MarkerSymbolStyle::EmptyNumberAbove},
{&SCPIServer.enabled, "SCPIServer.enabled", true}, {&SCPIServer.enabled, "SCPIServer.enabled", true},
{&SCPIServer.port, "SCPIServer.port", 19542}, {&SCPIServer.port, "SCPIServer.port", 19542},
}}; }};

View File

@ -79,7 +79,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>687</width> <width>687</width>
<height>938</height> <height>884</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_12"> <layout class="QHBoxLayout" name="horizontalLayout_12">
@ -98,7 +98,7 @@
</size> </size>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>3</number>
</property> </property>
<widget class="QWidget" name="Startup"> <widget class="QWidget" name="Startup">
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
@ -1281,6 +1281,32 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="2" column="0">
<widget class="QLabel" name="label_45">
<property name="text">
<string>Symbol Style:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="MarkerSymbolStyle">
<item>
<property name="text">
<string>Filled triangle - Marker number inside</string>
</property>
</item>
<item>
<property name="text">
<string>Filled triangle - Marker number above</string>
</property>
</item>
<item>
<property name="text">
<string>Empty triangle - Marker number above</string>
</property>
</item>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>