This commit is contained in:
Maurice Grönwoldt 2020-07-09 16:31:33 +02:00
commit 61482e8d4c
36 changed files with 325 additions and 122 deletions

View file

@ -29,5 +29,6 @@ public:
protected:
std::string m_processId;
std::shared_ptr<LabelComponent> m_label;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BaseComponent);
};
#endif //VENO_BASECOMPONENT_H

View file

@ -24,5 +24,6 @@ protected:
void drawHeadline (Graphics& g);
void drawFooter (Graphics& g);
std::unique_ptr<Waveforms> waveform;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SidebarLCD);
};
#endif //VENO_SIDEBARLCD_H

View file

@ -63,6 +63,9 @@ void Waveforms::renderOpenGL ()
auto color = theme->getColour (ThemeColour::lcd);
shaderProgram->setUniform ("color", color.getFloatRed (), color.getFloatGreen (), color.getFloatBlue (),
color.getFloatAlpha ());
// same color currently! will set to a diff if peak is detected!
shaderProgram->setUniform ("gradientColor", color.getFloatRed (), color.getFloatGreen (), color.getFloatBlue (),
color.getFloatAlpha ());
if (m_isWelcome || m_isStarting || m_isChangingData)
{
return;
@ -92,6 +95,8 @@ void Waveforms::compileOpenGLShaderProgram ()
&& shaderProgramAttempt->link ())
{
shaderProgram = std::move (shaderProgramAttempt);
} else {
DBG(shaderProgramAttempt->getLastError().toStdString());
}
}
@ -144,10 +149,17 @@ void Waveforms::drawAudioOutput ()
glBegin (GL_LINE_STRIP);
float posX = -1;
float inc = 2.0f / buffer.size ();
for (float i : buffer)
for (int j = 0; j < buffer.size(); ++j)
{
glVertex2f (posX, i);
posX += inc;
try
{
glVertex2f (posX, buffer.at(j));
posX += inc;
} catch (_exception e)
{
//something is wrong skip the draw and end it!
break;
}
}
glEnd ();
}
@ -160,7 +172,6 @@ void Waveforms::drawPeakMeter ()
return;
}
auto instance = VenoInstance::getInstance (BaseComponent::m_processId);
instance->audioBuffer->calcPeak ();
repaint();
// draw peak signal
auto leftChannel = getdBForChannel (instance->audioBuffer->leftPeak);
@ -276,6 +287,8 @@ void Waveforms::selectColourByPeak (float value)
return;
}
auto color = theme->getColour (ThemeColour::lcd);
shaderProgram->setUniform ("color", color.getFloatRed (), color.getFloatGreen (), color.getFloatBlue (),
color.getFloatAlpha ());
if (value > 0.87)
{
color = theme->getColour (ThemeColour::clip);
@ -284,7 +297,7 @@ void Waveforms::selectColourByPeak (float value)
{
color = theme->getColour (ThemeColour::warning);
}
shaderProgram->setUniform ("color", color.getFloatRed (), color.getFloatGreen (), color.getFloatBlue (),
shaderProgram->setUniform ("gradientColor", color.getFloatRed (), color.getFloatGreen (), color.getFloatBlue (),
color.getFloatAlpha ());
}

View file

@ -28,6 +28,7 @@ protected:
int m_time_needed_startup = 0;
int m_time_needed = 0;
bool needToClear = false;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Waveforms);
public:
explicit Waveforms (const std::string& processId);
~Waveforms () override;