From 0eba7e11e8d44e0a2adce4ca5dd855ff7b27b18a Mon Sep 17 00:00:00 2001 From: Peter Poetzi Date: Sun, 5 Mar 2023 00:32:29 +0100 Subject: [PATCH] add everyNLamp parameter --- PresetsSettingsPage.qml | 9 ++++++++- patternmaker.cpp | 12 ++++++++---- patternmaker.h | 2 +- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/PresetsSettingsPage.qml b/PresetsSettingsPage.qml index 671f92b..df1a500 100644 --- a/PresetsSettingsPage.qml +++ b/PresetsSettingsPage.qml @@ -222,6 +222,13 @@ ColumnLayout { realValue: 60 } + SpinBox { + id: advanceEveryNLamp + Layout.preferredWidth: 120 + from: 1 + value: 2 + } + SpinBox { id: generateSteps Layout.preferredWidth: 120 @@ -233,7 +240,7 @@ ColumnLayout { Button { text: qsTr('Rainbow') - onPressed: patternMaker.setRainbow(0, phaseAdvanceSlider.realValue / 360.) + onPressed: patternMaker.setRainbow(0, phaseAdvanceSlider.realValue / 360., advanceEveryNLamp.value) } } } diff --git a/patternmaker.cpp b/patternmaker.cpp index 68e2349..471387d 100644 --- a/patternmaker.cpp +++ b/patternmaker.cpp @@ -141,7 +141,7 @@ void PatternMaker::setPattern(int n, int k, DeviceTypeRegisterType registerType, m_controller->setSliderStates(std::move(sliderStates)); } -void PatternMaker::setRainbow(float phase, float advancePerLamp) +void PatternMaker::setRainbow(float phase, float advancePerLamp, int advanceEveryNLamp) { if (!m_controller) { @@ -157,8 +157,6 @@ void PatternMaker::setRainbow(float phase, float advancePerLamp) int i{}; for (const auto &device : devices) { - const auto current_i = i++; - const auto color = QColor::fromHsvF(fmod(phase,1.),1.,1.); std::vector sliderState; @@ -192,7 +190,13 @@ void PatternMaker::setRainbow(float phase, float advancePerLamp) } sliderStates.push_back(std::move(sliderState)); - phase += advancePerLamp; + + //qWarning() << "i=" << i << " advanceEveryNLamp=" << advanceEveryNLamp << " phase=" << phase; + + if(++i >= advanceEveryNLamp){ + i = 0; + phase += advancePerLamp; + } } m_controller->setSliderStates(std::move(sliderStates)); diff --git a/patternmaker.h b/patternmaker.h index 51a6495..4ecc1a2 100644 --- a/patternmaker.h +++ b/patternmaker.h @@ -21,7 +21,7 @@ public: Q_INVOKABLE void setAllFadersLow(); Q_INVOKABLE void setAllFadersMax(); Q_INVOKABLE void setPattern(int n, int k, DeviceTypeRegisterType registerType, quint8 value); - Q_INVOKABLE void setRainbow(float phase, float advancePerLamp); + Q_INVOKABLE void setRainbow(float phase, float advancePerLamp, int advanceEveryNLamp); signals: void controllerChanged(DmxController *controller);