commit e010e0138b3c92f0b714bd35be1a2cf2d1a38845
parent 208337feb73d308e8f6c4b6caf89c519eaa7fbaa
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Tue, 6 Aug 2024 22:57:51 +0200
implement temporary override text
Diffstat:
2 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/source/nord/n2x/n2xJucePlugin/n2xLcd.cpp b/source/nord/n2x/n2xJucePlugin/n2xLcd.cpp
@@ -32,7 +32,9 @@ namespace n2xJucePlugin
if(m_text == _text)
return;
m_text = _text;
- onTextChanged();
+
+ if(m_overrideText.empty())
+ onTextChanged();
}
void Lcd::timerCallback()
@@ -42,14 +44,14 @@ namespace n2xJucePlugin
switch(m_animState)
{
case AnimState::Start:
- if(updateClippedText(m_text, ++m_currentOffset))
+ if(updateClippedText(getCurrentText(), ++m_currentOffset))
{
m_animState = AnimState::Scroll;
startTimer(g_animDelayScroll);
}
break;
case AnimState::Scroll:
- if(!updateClippedText(m_text, ++m_currentOffset))
+ if(!updateClippedText(getCurrentText(), ++m_currentOffset))
{
m_animState = AnimState::End;
startTimer(g_animDelayEnd);
@@ -62,7 +64,7 @@ namespace n2xJucePlugin
case AnimState::End:
m_animState = AnimState::Start;
m_currentOffset = 0;
- updateClippedText(m_text, m_currentOffset);
+ updateClippedText(getCurrentText(), m_currentOffset);
startTimer(g_animDelayStart);
break;
}
@@ -73,6 +75,21 @@ namespace n2xJucePlugin
onProgramChanged();
}
+ void Lcd::setOverrideText(const std::string& _text)
+ {
+ std::string t = _text;
+ if(!t.empty())
+ {
+ while(t.size() < 3)
+ t = ' ' + t;
+ }
+
+ if(t == m_overrideText)
+ return;
+ m_overrideText = t;
+ onTextChanged();
+ }
+
void Lcd::setClippedText(const std::string& _text)
{
if(m_clippedText == _text)
@@ -128,9 +145,9 @@ namespace n2xJucePlugin
void Lcd::onTextChanged()
{
- updateClippedText(m_text, 0);
+ updateClippedText(getCurrentText(), 0);
- if(m_clippedText != m_text)
+ if(m_clippedText != getCurrentText())
{
startAnim();
}
@@ -144,4 +161,11 @@ namespace n2xJucePlugin
{
setText(m_editor.getCurrentPatchName());
}
+
+ const std::string& Lcd::getCurrentText() const
+ {
+ if(m_overrideText.empty())
+ return m_text;
+ return m_overrideText;
+ }
}
diff --git a/source/nord/n2x/n2xJucePlugin/n2xLcd.h b/source/nord/n2x/n2xJucePlugin/n2xLcd.h
@@ -33,6 +33,8 @@ namespace n2xJucePlugin
void updatePatchName();
+ void setOverrideText(const std::string& _text);
+
private:
void setClippedText(const std::string& _text);
static std::string substring(const std::string& _text, uint32_t _offset, uint32_t _len);
@@ -40,6 +42,7 @@ namespace n2xJucePlugin
void startAnim();
void onTextChanged();
void onProgramChanged();
+ const std::string& getCurrentText() const;
Editor& m_editor;
juce::Label* m_label;
@@ -48,6 +51,8 @@ namespace n2xJucePlugin
uint32_t m_currentOffset = 0;
AnimState m_animState = AnimState::Start;
+ std::string m_overrideText;
+
pluginLib::EventListener<> m_onProgramChanged;
pluginLib::EventListener<uint8_t> m_onPartChanged;
};