Use different prefixes depending on the axis type
This commit is contained in:
parent
2265b8f6c0
commit
670dff15c6
@ -405,10 +405,12 @@ void TraceXYPlot::draw(QPainter &p)
|
|||||||
auto tickLen = i == 0 ? -2 : 2;
|
auto tickLen = i == 0 ? -2 : 2;
|
||||||
p.drawLine(tickStart, yCoord, tickStart + tickLen, yCoord);
|
p.drawLine(tickStart, yCoord, tickStart + tickLen, yCoord);
|
||||||
QString unit = "";
|
QString unit = "";
|
||||||
|
QString prefix = " ";
|
||||||
if(pref.Graphs.showUnits) {
|
if(pref.Graphs.showUnits) {
|
||||||
unit = AxisUnit(YAxis[i].type);
|
unit = AxisUnit(YAxis[i].type);
|
||||||
|
prefix = AxisPrefixes(YAxis[i].type);
|
||||||
}
|
}
|
||||||
auto tickValue = Unit::ToString(YAxis[i].ticks[j], unit, "fpnum kMG", significantDigits);
|
auto tickValue = Unit::ToString(YAxis[i].ticks[j], unit, prefix, significantDigits);
|
||||||
if(i == 0) {
|
if(i == 0) {
|
||||||
p.drawText(QRectF(0, yCoord - AxisLabelSize/2 - 2, tickStart + 2 * tickLen, AxisLabelSize), Qt::AlignRight, tickValue);
|
p.drawText(QRectF(0, yCoord - AxisLabelSize/2 - 2, tickStart + 2 * tickLen, AxisLabelSize), Qt::AlignRight, tickValue);
|
||||||
} else {
|
} else {
|
||||||
@ -1218,7 +1220,7 @@ QString TraceXYPlot::mouseText(QPoint pos)
|
|||||||
auto max = qMax(abs(YAxis[i].rangeMax), abs(YAxis[i].rangeMin));
|
auto max = qMax(abs(YAxis[i].rangeMax), abs(YAxis[i].rangeMin));
|
||||||
auto step = abs(YAxis[i].rangeMax - YAxis[i].rangeMin) / 1000.0;
|
auto step = abs(YAxis[i].rangeMax - YAxis[i].rangeMin) / 1000.0;
|
||||||
significantDigits = floor(log10(max)) - floor(log10(step)) + 1;
|
significantDigits = floor(log10(max)) - floor(log10(step)) + 1;
|
||||||
ret += Unit::ToString(coords[i].y(), AxisUnit(YAxis[i].type), "fpnum kMG", significantDigits) + "\n";
|
ret += Unit::ToString(coords[i].y(), AxisUnit(YAxis[i].type), AxisPrefixes(YAxis[i].type), significantDigits) + "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1259,6 +1261,39 @@ QString TraceXYPlot::AxisUnit(TraceXYPlot::YAxisType type)
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString TraceXYPlot::AxisPrefixes(TraceXYPlot::YAxisType type)
|
||||||
|
{
|
||||||
|
auto source = model.getSource();
|
||||||
|
if(source == TraceModel::DataSource::VNA) {
|
||||||
|
switch(type) {
|
||||||
|
case TraceXYPlot::YAxisType::Magnitude: return " ";
|
||||||
|
case TraceXYPlot::YAxisType::Phase: return " ";
|
||||||
|
case TraceXYPlot::YAxisType::UnwrappedPhase: return " ";
|
||||||
|
case TraceXYPlot::YAxisType::VSWR: return " ";
|
||||||
|
case TraceXYPlot::YAxisType::ImpulseReal: return "pnum kMG";
|
||||||
|
case TraceXYPlot::YAxisType::ImpulseMag: return " ";
|
||||||
|
case TraceXYPlot::YAxisType::Step: return "pnum kMG";
|
||||||
|
case TraceXYPlot::YAxisType::Impedance: return "m kM";
|
||||||
|
case TraceXYPlot::YAxisType::GroupDelay: return "pnum ";
|
||||||
|
case TraceXYPlot::YAxisType::Disabled: return " ";
|
||||||
|
case TraceXYPlot::YAxisType::Real: return "pnum ";
|
||||||
|
case TraceXYPlot::YAxisType::Imaginary: return "pnum ";
|
||||||
|
case TraceXYPlot::YAxisType::QualityFactor: return " ";
|
||||||
|
case TraceXYPlot::YAxisType::SeriesR: return "m kM";
|
||||||
|
case TraceXYPlot::YAxisType::Reactance: return "m kM";
|
||||||
|
case TraceXYPlot::YAxisType::Capacitance: return "pnum ";
|
||||||
|
case TraceXYPlot::YAxisType::Inductance: return "pnum ";
|
||||||
|
case TraceXYPlot::YAxisType::Last: return " ";
|
||||||
|
}
|
||||||
|
} else if(source == TraceModel::DataSource::SA) {
|
||||||
|
switch(type) {
|
||||||
|
case TraceXYPlot::YAxisType::Magnitude: return " ";
|
||||||
|
default: return " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return " ";
|
||||||
|
}
|
||||||
|
|
||||||
QString TraceXYPlot::AxisUnit(TraceXYPlot::XAxisType type)
|
QString TraceXYPlot::AxisUnit(TraceXYPlot::XAxisType type)
|
||||||
{
|
{
|
||||||
switch(type) {
|
switch(type) {
|
||||||
|
@ -95,6 +95,7 @@ private:
|
|||||||
QString mouseText(QPoint pos) override;
|
QString mouseText(QPoint pos) override;
|
||||||
|
|
||||||
QString AxisUnit(YAxisType type);
|
QString AxisUnit(YAxisType type);
|
||||||
|
QString AxisPrefixes(YAxisType type);
|
||||||
static QString AxisUnit(XAxisType type);
|
static QString AxisUnit(XAxisType type);
|
||||||
|
|
||||||
std::set<Trace*> tracesAxis[2];
|
std::set<Trace*> tracesAxis[2];
|
||||||
|
@ -53,9 +53,13 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
|
|||||||
ui->Y1divs->setEnabled(index != 0 && !autoRange);
|
ui->Y1divs->setEnabled(index != 0 && !autoRange);
|
||||||
auto type = (TraceXYPlot::YAxisType) index;
|
auto type = (TraceXYPlot::YAxisType) index;
|
||||||
QString unit = plot->AxisUnit(type);
|
QString unit = plot->AxisUnit(type);
|
||||||
|
QString prefixes = plot->AxisPrefixes(type);
|
||||||
ui->Y1min->setUnit(unit);
|
ui->Y1min->setUnit(unit);
|
||||||
|
ui->Y1min->setPrefixes(prefixes);
|
||||||
ui->Y1max->setUnit(unit);
|
ui->Y1max->setUnit(unit);
|
||||||
|
ui->Y1max->setPrefixes(prefixes);
|
||||||
ui->Y1divs->setUnit(unit);
|
ui->Y1divs->setUnit(unit);
|
||||||
|
ui->Y1divs->setPrefixes(prefixes);
|
||||||
});
|
});
|
||||||
connect(ui->Y1auto, &QCheckBox::toggled, [this](bool checked) {
|
connect(ui->Y1auto, &QCheckBox::toggled, [this](bool checked) {
|
||||||
ui->Y1min->setEnabled(!checked);
|
ui->Y1min->setEnabled(!checked);
|
||||||
@ -73,9 +77,13 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
|
|||||||
ui->Y2divs->setEnabled(index != 0 && !autoRange);
|
ui->Y2divs->setEnabled(index != 0 && !autoRange);
|
||||||
auto type = (TraceXYPlot::YAxisType) index;
|
auto type = (TraceXYPlot::YAxisType) index;
|
||||||
QString unit = plot->AxisUnit(type);
|
QString unit = plot->AxisUnit(type);
|
||||||
|
QString prefixes = plot->AxisPrefixes(type);
|
||||||
ui->Y2min->setUnit(unit);
|
ui->Y2min->setUnit(unit);
|
||||||
|
ui->Y2min->setPrefixes(prefixes);
|
||||||
ui->Y2max->setUnit(unit);
|
ui->Y2max->setUnit(unit);
|
||||||
|
ui->Y2max->setPrefixes(prefixes);
|
||||||
ui->Y2divs->setUnit(unit);
|
ui->Y2divs->setUnit(unit);
|
||||||
|
ui->Y2divs->setPrefixes(prefixes);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(ui->Y2auto, &QCheckBox::toggled, [this](bool checked) {
|
connect(ui->Y2auto, &QCheckBox::toggled, [this](bool checked) {
|
||||||
|
Loading…
Reference in New Issue
Block a user