Update to experimental state in master :D #2

Merged
neuron303 merged 24 commits from master into master 2019-09-23 15:19:47 +02:00
9 changed files with 52 additions and 88 deletions
Showing only changes of commit 6c550abaaf - Show all commits

View File

@@ -124,10 +124,11 @@ MainWindow::MainWindow(QWidget *parent) :
auto widget = new QWidget; auto widget = new QWidget;
auto layout = new QFormLayout(widget); auto layout = new QFormLayout(widget);
{ {
auto input = new QSpinBox; auto input = new QDoubleSpinBox;
input->setRange(0, 255); input->setRange(0, 1.0);
input->setSingleStep(0.1);
input->setValue(m_ui->widget->afterglow()); input->setValue(m_ui->widget->afterglow());
connect(input, qOverload<int>(&QSpinBox::valueChanged), m_ui->widget, &OsciWidget::setAfterglow); connect(input, qOverload<double>(&QDoubleSpinBox::valueChanged), m_ui->widget, &OsciWidget::setAfterglow);
layout->addRow(tr("Afterglow:"), input); layout->addRow(tr("Afterglow:"), input);
} }
{ {

View File

@@ -30,6 +30,13 @@ void OsciWidget::setFps(int fps)
m_redrawTimerId = startTimer(1000/m_fps); m_redrawTimerId = startTimer(1000/m_fps);
} }
void OsciWidget::setAfterglow(float afterglow){
m_afterglow = afterglow;
// percentage of the image that should be visible after one second
// i.e. factor^fps=afterglow -> factor = afterglow^(1/fps)
m_afterglowColor = 255 * pow(afterglow, 1.0/m_fps);
}
void OsciWidget::setLightspeed(int lightspeed) { void OsciWidget::setLightspeed(int lightspeed) {
const auto temp = (float(lightspeed)/20.f); const auto temp = (float(lightspeed)/20.f);
m_lightspeed = temp*temp*temp; m_lightspeed = temp*temp*temp;
@@ -73,7 +80,7 @@ void OsciWidget::updateFrameBuffer()
// darkening last frame // darkening last frame
painter.setCompositionMode(QPainter::CompositionMode_Multiply); painter.setCompositionMode(QPainter::CompositionMode_Multiply);
painter.setPen({}); painter.setPen({});
painter.setBrush(QColor(m_afterglow, m_afterglow, m_afterglow)); painter.setBrush(QColor(m_afterglowColor, m_afterglowColor, m_afterglowColor));
painter.drawRect(m_pixmap.rect()); painter.drawRect(m_pixmap.rect());
// drawing new lines ontop // drawing new lines ontop

View File

@@ -21,7 +21,7 @@ public:
float factor() const { return m_factor; } float factor() const { return m_factor; }
int fps() const { return m_fps; } int fps() const { return m_fps; }
int afterglow() const { return m_afterglow; } float afterglow() const { return m_afterglow; }
int lightspeed() const; int lightspeed() const;
signals: signals:
@@ -30,7 +30,7 @@ signals:
public slots: public slots:
void setFactor(float factor) { m_factor = factor; } void setFactor(float factor) { m_factor = factor; }
void setFps(int fps); void setFps(int fps);
void setAfterglow(int afterglow) { m_afterglow = afterglow; } void setAfterglow(float afterglow);
void setLightspeed(int lightspeed); void setLightspeed(int lightspeed);
void renderSamples(const SamplePair *begin, const SamplePair *end); void renderSamples(const SamplePair *begin, const SamplePair *end);
@@ -44,7 +44,8 @@ private:
private: private:
float m_factor{2.f}; float m_factor{2.f};
int m_fps{30}, m_afterglow{175}; int m_fps{30}, m_afterglowColor{175};
float m_afterglow{0.2};
float m_lightspeed{35.f}; float m_lightspeed{35.f};
std::vector<SamplePair> m_buffer; std::vector<SamplePair> m_buffer;