mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-04 14:17:50 -04:00
New scope: compute trace in ScopeVis only when required by GLScope. Fixed trace and trigger color dialogs
This commit is contained in:
parent
e32659b86a
commit
710e2b931d
@ -10,7 +10,7 @@ add_subdirectory(udpsrc)
|
|||||||
add_subdirectory(demodwfm)
|
add_subdirectory(demodwfm)
|
||||||
add_subdirectory(chanalyzer)
|
add_subdirectory(chanalyzer)
|
||||||
add_subdirectory(chanalyzerng)
|
add_subdirectory(chanalyzerng)
|
||||||
add_subdirectory(demodatv)
|
#add_subdirectory(demodatv)
|
||||||
|
|
||||||
if(LIBDSDCC_FOUND AND LIBMBE_FOUND)
|
if(LIBDSDCC_FOUND AND LIBMBE_FOUND)
|
||||||
add_subdirectory(demoddsd)
|
add_subdirectory(demoddsd)
|
||||||
|
@ -269,6 +269,11 @@ void ScopeVisNG::processTrace(const SampleVector::const_iterator& cbegin, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// trace process
|
// trace process
|
||||||
|
if (m_glScope->getDataChanged()) // optimization: process trace only if required by glScope
|
||||||
|
{
|
||||||
|
m_triggerState = TriggerUntriggered;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_triggerState == TriggerTriggered)
|
if (m_triggerState == TriggerTriggered)
|
||||||
{
|
{
|
||||||
int remainder = -1;
|
int remainder = -1;
|
||||||
@ -306,6 +311,7 @@ void ScopeVisNG::processTrace(const SampleVector::const_iterator& cbegin, const
|
|||||||
m_traceDiscreteMemory.current().m_endPoint = mbegin;
|
m_traceDiscreteMemory.current().m_endPoint = mbegin;
|
||||||
m_traceDiscreteMemory.store(); // next memory trace
|
m_traceDiscreteMemory.store(); // next memory trace
|
||||||
m_triggerState = TriggerUntriggered;
|
m_triggerState = TriggerUntriggered;
|
||||||
|
//if (m_glScope) m_glScope->incrementTraceCounter();
|
||||||
|
|
||||||
// process remainder recursively
|
// process remainder recursively
|
||||||
if (remainder != 0)
|
if (remainder != 0)
|
||||||
|
@ -58,6 +58,8 @@ GLScopeNG::GLScopeNG(QWidget* parent) :
|
|||||||
|
|
||||||
m_powerOverlayFont.setBold(true);
|
m_powerOverlayFont.setBold(true);
|
||||||
m_powerOverlayFont.setPointSize(font().pointSize()+1);
|
m_powerOverlayFont.setPointSize(font().pointSize()+1);
|
||||||
|
|
||||||
|
//m_traceCounter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLScopeNG::~GLScopeNG()
|
GLScopeNG::~GLScopeNG()
|
||||||
@ -177,6 +179,11 @@ void GLScopeNG::paintGL()
|
|||||||
if(m_configChanged)
|
if(m_configChanged)
|
||||||
applyConfig();
|
applyConfig();
|
||||||
|
|
||||||
|
// qDebug("GLScopeNG::paintGL: m_traceCounter: %d", m_traceCounter);
|
||||||
|
// m_traceCounter = 0;
|
||||||
|
|
||||||
|
m_dataChanged = false;
|
||||||
|
|
||||||
QOpenGLFunctions *glFunctions = QOpenGLContext::currentContext()->functions();
|
QOpenGLFunctions *glFunctions = QOpenGLContext::currentContext()->functions();
|
||||||
glFunctions->glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
glFunctions->glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
glFunctions->glClear(GL_COLOR_BUFFER_BIT);
|
glFunctions->glClear(GL_COLOR_BUFFER_BIT);
|
||||||
@ -343,7 +350,10 @@ void GLScopeNG::paintGL()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_dataChanged = false;
|
else if (m_displayMode == DisplayY) // display only traces #1..n
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
m_mutex.unlock();
|
m_mutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -425,6 +435,10 @@ void GLScopeNG::applyConfig()
|
|||||||
{
|
{
|
||||||
setYScale(m_y2Scale, m_highlightedTraceIndex > 0 ? m_highlightedTraceIndex : 1); // if Highlighted trace is #0 (X trace) set it to first Y trace (trace #1)
|
setYScale(m_y2Scale, m_highlightedTraceIndex > 0 ? m_highlightedTraceIndex : 1); // if Highlighted trace is #0 (X trace) set it to first Y trace (trace #1)
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setYScale(m_y1Scale, 0); // Default to the X trace (trace #0) - If there is only one trace it should not get there (Y displays disabled in the UI)
|
||||||
|
}
|
||||||
|
|
||||||
if ((m_displayMode == DisplayX) || (m_displayMode == DisplayY)) // unique display
|
if ((m_displayMode == DisplayX) || (m_displayMode == DisplayY)) // unique display
|
||||||
{
|
{
|
||||||
|
@ -68,6 +68,9 @@ public:
|
|||||||
void setDisplayGridIntensity(int intensity);
|
void setDisplayGridIntensity(int intensity);
|
||||||
void setDisplayTraceIntensity(int intensity);
|
void setDisplayTraceIntensity(int intensity);
|
||||||
void setFocusedTriggerData(ScopeVisNG::TriggerData& triggerData) { m_focusedTriggerData = triggerData; }
|
void setFocusedTriggerData(ScopeVisNG::TriggerData& triggerData) { m_focusedTriggerData = triggerData; }
|
||||||
|
//void incrementTraceCounter() { m_traceCounter++; }
|
||||||
|
|
||||||
|
bool getDataChanged() const { return m_dataChanged; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sampleRateChanged(int);
|
void sampleRateChanged(int);
|
||||||
@ -76,6 +79,7 @@ private:
|
|||||||
std::vector<ScopeVisNG::TraceData> *m_tracesData;
|
std::vector<ScopeVisNG::TraceData> *m_tracesData;
|
||||||
std::vector<float *> *m_traces;
|
std::vector<float *> *m_traces;
|
||||||
ScopeVisNG::TriggerData m_focusedTriggerData;
|
ScopeVisNG::TriggerData m_focusedTriggerData;
|
||||||
|
//int m_traceCounter;
|
||||||
uint32_t m_bufferIndex;
|
uint32_t m_bufferIndex;
|
||||||
DisplayMode m_displayMode;
|
DisplayMode m_displayMode;
|
||||||
QTimer m_timer;
|
QTimer m_timer;
|
||||||
|
@ -64,6 +64,10 @@ void GLScopeNGGUI::setBuddies(MessageQueue* messageQueue, ScopeVisNG* scopeVis,
|
|||||||
ui->horizontalXY->setChecked(false);
|
ui->horizontalXY->setChecked(false);
|
||||||
ui->verticalXY->setChecked(false);
|
ui->verticalXY->setChecked(false);
|
||||||
ui->polar->setChecked(false);
|
ui->polar->setChecked(false);
|
||||||
|
ui->onlyY->setEnabled(false);
|
||||||
|
ui->horizontalXY->setEnabled(false);
|
||||||
|
ui->verticalXY->setEnabled(false);
|
||||||
|
ui->polar->setEnabled(false);
|
||||||
m_glScope->setDisplayMode(GLScopeNG::DisplayX);
|
m_glScope->setDisplayMode(GLScopeNG::DisplayX);
|
||||||
|
|
||||||
// initialize trigger combo
|
// initialize trigger combo
|
||||||
@ -337,12 +341,16 @@ void GLScopeNGGUI::on_traceDelay_valueChanged(int value)
|
|||||||
|
|
||||||
void GLScopeNGGUI::on_traceColor_clicked()
|
void GLScopeNGGUI::on_traceColor_clicked()
|
||||||
{
|
{
|
||||||
QColor newColor = QColorDialog::getColor();
|
QColor newColor = QColorDialog::getColor(m_focusedTraceColor);
|
||||||
m_focusedTraceColor = newColor;
|
|
||||||
int r,g,b,a;
|
if (newColor.isValid()) // user clicked OK and selected a color
|
||||||
m_focusedTraceColor.getRgb(&r, &g, &b, &a);
|
{
|
||||||
ui->traceColor->setStyleSheet(tr("QLabel { background-color : rgb(%1,%2,%3); }").arg(r).arg(g).arg(b));
|
m_focusedTraceColor = newColor;
|
||||||
changeCurrentTrace();
|
int r,g,b,a;
|
||||||
|
m_focusedTraceColor.getRgb(&r, &g, &b, &a);
|
||||||
|
ui->traceColor->setStyleSheet(tr("QLabel { background-color : rgb(%1,%2,%3); }").arg(r).arg(g).arg(b));
|
||||||
|
changeCurrentTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLScopeNGGUI::on_trigMode_currentIndexChanged(int index)
|
void GLScopeNGGUI::on_trigMode_currentIndexChanged(int index)
|
||||||
@ -422,12 +430,16 @@ void GLScopeNGGUI::on_trigPre_valueChanged(int value)
|
|||||||
|
|
||||||
void GLScopeNGGUI::on_trigColor_clicked()
|
void GLScopeNGGUI::on_trigColor_clicked()
|
||||||
{
|
{
|
||||||
QColor newColor = QColorDialog::getColor();
|
QColor newColor = QColorDialog::getColor(m_focusedTriggerColor);
|
||||||
m_focusedTriggerColor = newColor;
|
|
||||||
int r,g,b,a;
|
if (newColor.isValid()) // user clicked "OK"
|
||||||
m_focusedTriggerColor.getRgb(&r, &g, &b, &a);
|
{
|
||||||
ui->trigColor->setStyleSheet(tr("QLabel { background-color : rgb(%1,%2,%3); }").arg(r).arg(g).arg(b));
|
m_focusedTriggerColor = newColor;
|
||||||
changeCurrentTrigger();
|
int r,g,b,a;
|
||||||
|
m_focusedTriggerColor.getRgb(&r, &g, &b, &a);
|
||||||
|
ui->trigColor->setStyleSheet(tr("QLabel { background-color : rgb(%1,%2,%3); }").arg(r).arg(g).arg(b));
|
||||||
|
changeCurrentTrigger();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLScopeNGGUI::on_trigOneShot_toggled(bool checked)
|
void GLScopeNGGUI::on_trigOneShot_toggled(bool checked)
|
||||||
@ -625,13 +637,13 @@ void GLScopeNGGUI::setTrigLevelDisplay()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(fabs(a) < 0.000001)
|
if(fabs(a) < 0.000001)
|
||||||
ui->trigLevelText->setText(tr("%1\nn").arg(a * 1000000000.0f));
|
ui->trigLevelText->setText(tr("%1\nn").arg(a * 1000000000.0f, 0, 'f', 2));
|
||||||
else if(fabs(a) < 0.001)
|
else if(fabs(a) < 0.001)
|
||||||
ui->trigLevelText->setText(tr("%1\nµ").arg(a * 1000000.0f));
|
ui->trigLevelText->setText(tr("%1\nµ").arg(a * 1000000.0f, 0, 'f', 2));
|
||||||
else if(fabs(a) < 1.0)
|
else if(fabs(a) < 1.0)
|
||||||
ui->trigLevelText->setText(tr("%1\nm").arg(a * 1000.0f));
|
ui->trigLevelText->setText(tr("%1\nm").arg(a * 1000.0f, 0, 'f', 2));
|
||||||
else
|
else
|
||||||
ui->trigLevelText->setText(tr("%1").arg(a * 1.0f));
|
ui->trigLevelText->setText(tr("%1").arg(a * 1.0f, 0, 'f', 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -917,6 +917,9 @@ kS/s</string>
|
|||||||
<height>16</height>
|
<height>16</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Current trace color (click to change)</string>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
@ -1311,7 +1314,7 @@ kS/s</string>
|
|||||||
<widget class="QLabel" name="trigLevelText">
|
<widget class="QLabel" name="trigLevelText">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>36</width>
|
<width>40</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -1529,6 +1532,9 @@ kS/s</string>
|
|||||||
<height>16</height>
|
<height>16</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Current trigger color (click to change)</string>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user