Removed warnings, added XY-plot data next to cursor
This commit is contained in:
parent
37bd9a0435
commit
1b003cc481
@ -44,7 +44,7 @@ void TraceMarker::setTimeDomain(bool timeDomain)
|
||||
return;
|
||||
}
|
||||
this->timeDomain = timeDomain;
|
||||
// TODO handle changed setting and everything
|
||||
|
||||
if(timeDomain) {
|
||||
// need to delete this marker if the TDR data of the trace is no longer available
|
||||
connect(parentTrace, &Trace::changedTDRstate, [=](bool tdr_available){
|
||||
|
@ -99,7 +99,7 @@ void TracePlot::contextMenuEvent(QContextMenuEvent *event)
|
||||
|
||||
void TracePlot::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
|
||||
Q_UNUSED(event)
|
||||
auto pref = Preferences::getInstance();
|
||||
QPainter p(this);
|
||||
// p.setRenderHint(QPainter::Antialiasing);
|
||||
@ -172,6 +172,7 @@ void TracePlot::mousePressEvent(QMouseEvent *event)
|
||||
|
||||
void TracePlot::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
selectedMarker = nullptr;
|
||||
}
|
||||
|
||||
|
@ -298,6 +298,7 @@ void TraceXYPlot::draw(QPainter &p)
|
||||
case YAxisType::Impulse: labelY = "Impulse Response"; break;
|
||||
case YAxisType::Step: labelY = "Step Response"; break;
|
||||
case YAxisType::Impedance: labelY = "Impedance"; break;
|
||||
default: break;
|
||||
}
|
||||
auto xStart = i == 0 ? 0 : w.width() - AxisLabelSize * 1.5;
|
||||
p.save();
|
||||
@ -719,6 +720,14 @@ QPoint TraceXYPlot::plotValueToPixel(QPointF plotValue, int Yaxis)
|
||||
return p;
|
||||
}
|
||||
|
||||
QPointF TraceXYPlot::pixelToPlotValue(QPoint pixel, int Yaxis)
|
||||
{
|
||||
QPointF p;
|
||||
p.setX(Util::Scale<double>(pixel.x(), plotAreaLeft, plotAreaLeft + plotAreaWidth, XAxis.rangeMin, XAxis.rangeMax));
|
||||
p.setY(Util::Scale<double>(pixel.y(), plotAreaBottom, 0, YAxis[Yaxis].rangeMin, YAxis[Yaxis].rangeMax));
|
||||
return p;
|
||||
}
|
||||
|
||||
QPoint TraceXYPlot::markerToPixel(TraceMarker *m)
|
||||
{
|
||||
QPoint ret = QPoint();
|
||||
@ -791,3 +800,47 @@ void TraceXYPlot::traceDropped(Trace *t, QPoint position)
|
||||
enableTraceAxis(t, 1, true);
|
||||
}
|
||||
}
|
||||
|
||||
QString TraceXYPlot::mouseText(QPoint pos)
|
||||
{
|
||||
QString ret;
|
||||
if(QRect(plotAreaLeft, 0, plotAreaWidth + 1, plotAreaBottom).contains(pos)) {
|
||||
// cursor within plot area
|
||||
QPointF coords[2];
|
||||
coords[0] = pixelToPlotValue(pos, 0);
|
||||
coords[1] = pixelToPlotValue(pos, 1);
|
||||
int significantDigits = floor(log10(XAxis.rangeMax)) - floor(log10((XAxis.rangeMax - XAxis.rangeMin) / 1000.0)) + 1;
|
||||
ret += Unit::ToString(coords[0].x(), AxisUnit(XAxis.type), "fpnum kMG", significantDigits) + "\n";
|
||||
for(int i=0;i<2;i++) {
|
||||
if(YAxis[i].type != YAxisType::Disabled) {
|
||||
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";
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
QString TraceXYPlot::AxisUnit(TraceXYPlot::YAxisType type)
|
||||
{
|
||||
switch(type) {
|
||||
case TraceXYPlot::YAxisType::Magnitude: return "db"; break;
|
||||
case TraceXYPlot::YAxisType::Phase: return "°"; break;
|
||||
case TraceXYPlot::YAxisType::VSWR: return ""; break;
|
||||
case TraceXYPlot::YAxisType::Impulse: return ""; break;
|
||||
case TraceXYPlot::YAxisType::Step: return ""; break;
|
||||
case TraceXYPlot::YAxisType::Impedance: return "Ohm"; break;
|
||||
default: return ""; break;
|
||||
}
|
||||
}
|
||||
|
||||
QString TraceXYPlot::AxisUnit(TraceXYPlot::XAxisType type)
|
||||
{
|
||||
switch(type) {
|
||||
case XAxisType::Frequency: return "Hz"; break;
|
||||
case XAxisType::Time: return "s"; break;
|
||||
case XAxisType::Distance: return "m"; break;
|
||||
}
|
||||
}
|
||||
|
@ -63,9 +63,14 @@ private:
|
||||
unsigned int numTraceSamples(Trace *t);
|
||||
QPoint dataToPixel(Trace::Data d);
|
||||
QPoint plotValueToPixel(QPointF plotValue, int Yaxis);
|
||||
QPointF pixelToPlotValue(QPoint pixel, int YAxis);
|
||||
QPoint markerToPixel(TraceMarker *m) override;
|
||||
double nearestTracePoint(Trace *t, QPoint pixel) override;
|
||||
void traceDropped(Trace *t, QPoint position) override;
|
||||
QString mouseText(QPoint pos) override;
|
||||
|
||||
static QString AxisUnit(YAxisType type);
|
||||
static QString AxisUnit(XAxisType type);
|
||||
|
||||
std::set<Trace*> tracesAxis[2];
|
||||
|
||||
|
@ -21,7 +21,7 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
|
||||
ui->Y1max->setEnabled(index != 0 && !autoRange);
|
||||
ui->Y1divs->setEnabled(index != 0 && !autoRange);
|
||||
auto type = (TraceXYPlot::YAxisType) index;
|
||||
QString unit = YAxisUnit(type);
|
||||
QString unit = TraceXYPlot::AxisUnit(type);
|
||||
ui->Y1min->setUnit(unit);
|
||||
ui->Y1max->setUnit(unit);
|
||||
ui->Y1divs->setUnit(unit);
|
||||
@ -41,7 +41,7 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
|
||||
ui->Y2max->setEnabled(index != 0 && !autoRange);
|
||||
ui->Y2divs->setEnabled(index != 0 && !autoRange);
|
||||
auto type = (TraceXYPlot::YAxisType) index;
|
||||
QString unit = YAxisUnit(type);
|
||||
QString unit = TraceXYPlot::AxisUnit(type);
|
||||
ui->Y2min->setUnit(unit);
|
||||
ui->Y2max->setUnit(unit);
|
||||
ui->Y2divs->setUnit(unit);
|
||||
@ -160,30 +160,12 @@ void XYplotAxisDialog::XAxisTypeChanged(int XAxisIndex)
|
||||
}
|
||||
}
|
||||
|
||||
QString unit;
|
||||
switch(type) {
|
||||
case TraceXYPlot::XAxisType::Frequency: unit = "Hz"; break;
|
||||
case TraceXYPlot::XAxisType::Time: unit = "s"; break;
|
||||
case TraceXYPlot::XAxisType::Distance: unit = "m"; break;
|
||||
}
|
||||
QString unit = TraceXYPlot::AxisUnit(type);
|
||||
ui->Xmin->setUnit(unit);
|
||||
ui->Xmax->setUnit(unit);
|
||||
ui->Xdivs->setUnit(unit);
|
||||
}
|
||||
|
||||
QString XYplotAxisDialog::YAxisUnit(TraceXYPlot::YAxisType type)
|
||||
{
|
||||
switch(type) {
|
||||
case TraceXYPlot::YAxisType::Magnitude: return "db"; break;
|
||||
case TraceXYPlot::YAxisType::Phase: return "°"; break;
|
||||
case TraceXYPlot::YAxisType::VSWR: return ""; break;
|
||||
case TraceXYPlot::YAxisType::Impulse: return ""; break;
|
||||
case TraceXYPlot::YAxisType::Step: return ""; break;
|
||||
case TraceXYPlot::YAxisType::Impedance: return "Ohm"; break;
|
||||
default: return ""; break;
|
||||
}
|
||||
}
|
||||
|
||||
std::set<TraceXYPlot::YAxisType> XYplotAxisDialog::supportedYAxis(TraceXYPlot::XAxisType type)
|
||||
{
|
||||
set<TraceXYPlot::YAxisType> ret = {TraceXYPlot::YAxisType::Disabled};
|
||||
|
@ -21,7 +21,6 @@ private slots:
|
||||
void XAxisTypeChanged(int XAxisIndex);
|
||||
|
||||
private:
|
||||
QString YAxisUnit(TraceXYPlot::YAxisType type);
|
||||
std::set<TraceXYPlot::YAxisType> supportedYAxis(TraceXYPlot::XAxisType type);
|
||||
Ui::XYplotAxisDialog *ui;
|
||||
TraceXYPlot *plot;
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||
|
||||
<provider class="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" console="false" env-hash="-1870342659776466326" id="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="Ac6 SW4 STM32 MCU Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
<provider class="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" console="false" env-hash="1307432939745961523" id="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="Ac6 SW4 STM32 MCU Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user