osci-render/Source/FrameSettingsComponent.h

42 wiersze
1.6 KiB
C
Czysty Zwykły widok Historia

2024-04-15 19:54:25 +00:00
#pragma once
#include <JuceHeader.h>
#include "PluginProcessor.h"
2024-04-21 18:07:15 +00:00
#include "components/DoubleTextBox.h"
2024-05-11 22:10:54 +00:00
#include "components/EffectComponent.h"
#include "components/SwitchButton.h"
2024-04-15 19:54:25 +00:00
class OscirenderAudioProcessorEditor;
2024-05-11 22:10:54 +00:00
class FrameSettingsComponent : public juce::GroupComponent, public juce::AudioProcessorParameter::Listener, juce::AsyncUpdater {
2024-04-15 19:54:25 +00:00
public:
2024-05-11 22:10:54 +00:00
FrameSettingsComponent(OscirenderAudioProcessor&, OscirenderAudioProcessorEditor&);
~FrameSettingsComponent();
2024-04-15 19:54:25 +00:00
void resized() override;
void parameterValueChanged(int parameterIndex, float newValue) override;
void parameterGestureChanged(int parameterIndex, bool gestureIsStarting) override;
void handleAsyncUpdate() override;
2024-04-15 19:54:25 +00:00
void update();
void setAnimated(bool animated);
void setImage(bool image);
2024-04-15 19:54:25 +00:00
private:
OscirenderAudioProcessor& audioProcessor;
OscirenderAudioProcessorEditor& pluginEditor;
bool animated = true;
bool image = true;
2024-04-15 19:54:25 +00:00
jux::SwitchButton animate{audioProcessor.animateFrames};
jux::SwitchButton sync{audioProcessor.animationSyncBPM};
juce::Label rateLabel{ "Framerate","Framerate"};
juce::Label offsetLabel{ "Offset","Offset" };
DoubleTextBox rateBox{ audioProcessor.animationRate->min, audioProcessor.animationRate->max };
DoubleTextBox offsetBox{ audioProcessor.animationOffset->min, audioProcessor.animationRate->max };
2024-04-15 19:54:25 +00:00
jux::SwitchButton invertImage{audioProcessor.invertImage};
2024-05-11 22:10:54 +00:00
EffectComponent threshold{ audioProcessor, *audioProcessor.imageThreshold };
EffectComponent stride{ audioProcessor, *audioProcessor.imageStride };
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(FrameSettingsComponent)
};