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;
|
||||
p.drawLine(tickStart, yCoord, tickStart + tickLen, yCoord);
|
||||
QString unit = "";
|
||||
QString prefix = " ";
|
||||
if(pref.Graphs.showUnits) {
|
||||
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) {
|
||||
p.drawText(QRectF(0, yCoord - AxisLabelSize/2 - 2, tickStart + 2 * tickLen, AxisLabelSize), Qt::AlignRight, tickValue);
|
||||
} else {
|
||||
@ -1218,7 +1220,7 @@ QString TraceXYPlot::mouseText(QPoint pos)
|
||||
auto max = qMax(abs(YAxis[i].rangeMax), abs(YAxis[i].rangeMin));
|
||||
auto step = abs(YAxis[i].rangeMax - YAxis[i].rangeMin) / 1000.0;
|
||||
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 "";
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
switch(type) {
|
||||
|
@ -95,6 +95,7 @@ private:
|
||||
QString mouseText(QPoint pos) override;
|
||||
|
||||
QString AxisUnit(YAxisType type);
|
||||
QString AxisPrefixes(YAxisType type);
|
||||
static QString AxisUnit(XAxisType type);
|
||||
|
||||
std::set<Trace*> tracesAxis[2];
|
||||
|
@ -53,9 +53,13 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
|
||||
ui->Y1divs->setEnabled(index != 0 && !autoRange);
|
||||
auto type = (TraceXYPlot::YAxisType) index;
|
||||
QString unit = plot->AxisUnit(type);
|
||||
QString prefixes = plot->AxisPrefixes(type);
|
||||
ui->Y1min->setUnit(unit);
|
||||
ui->Y1min->setPrefixes(prefixes);
|
||||
ui->Y1max->setUnit(unit);
|
||||
ui->Y1max->setPrefixes(prefixes);
|
||||
ui->Y1divs->setUnit(unit);
|
||||
ui->Y1divs->setPrefixes(prefixes);
|
||||
});
|
||||
connect(ui->Y1auto, &QCheckBox::toggled, [this](bool checked) {
|
||||
ui->Y1min->setEnabled(!checked);
|
||||
@ -73,9 +77,13 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
|
||||
ui->Y2divs->setEnabled(index != 0 && !autoRange);
|
||||
auto type = (TraceXYPlot::YAxisType) index;
|
||||
QString unit = plot->AxisUnit(type);
|
||||
QString prefixes = plot->AxisPrefixes(type);
|
||||
ui->Y2min->setUnit(unit);
|
||||
ui->Y2min->setPrefixes(prefixes);
|
||||
ui->Y2max->setUnit(unit);
|
||||
ui->Y2max->setPrefixes(prefixes);
|
||||
ui->Y2divs->setUnit(unit);
|
||||
ui->Y2divs->setPrefixes(prefixes);
|
||||
});
|
||||
|
||||
connect(ui->Y2auto, &QCheckBox::toggled, [this](bool checked) {
|
||||
|
Loading…
Reference in New Issue
Block a user