| @@ -24,8 +24,8 @@ | |||||
| /* This component scrolls a continuous waveform showing the audio that's | /* This component scrolls a continuous waveform showing the audio that's | ||||
| coming into whatever audio inputs this object is connected to. | coming into whatever audio inputs this object is connected to. | ||||
| */ | */ | ||||
| class LiveScrollingAudioDisplay : public AudioVisualiserComponent, | |||||
| public AudioIODeviceCallback | |||||
| class LiveScrollingAudioDisplay final : public AudioVisualiserComponent, | |||||
| public AudioIODeviceCallback | |||||
| { | { | ||||
| public: | public: | ||||
| LiveScrollingAudioDisplay() : AudioVisualiserComponent (1) | LiveScrollingAudioDisplay() : AudioVisualiserComponent (1) | ||||
| @@ -38,7 +38,7 @@ struct DSPDemoParameterBase : public ChangeBroadcaster | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct SliderParameter : public DSPDemoParameterBase | |||||
| struct SliderParameter final : public DSPDemoParameterBase | |||||
| { | { | ||||
| SliderParameter (Range<double> range, double skew, double initialValue, | SliderParameter (Range<double> range, double skew, double initialValue, | ||||
| const String& labelName, const String& suffix = {}) | const String& labelName, const String& suffix = {}) | ||||
| @@ -66,7 +66,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct ChoiceParameter : public DSPDemoParameterBase | |||||
| struct ChoiceParameter final : public DSPDemoParameterBase | |||||
| { | { | ||||
| ChoiceParameter (const StringArray& options, int initialId, const String& labelName) | ChoiceParameter (const StringArray& options, int initialId, const String& labelName) | ||||
| : DSPDemoParameterBase (labelName) | : DSPDemoParameterBase (labelName) | ||||
| @@ -89,11 +89,11 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioThumbnailComponent : public Component, | |||||
| public FileDragAndDropTarget, | |||||
| public ChangeBroadcaster, | |||||
| private ChangeListener, | |||||
| private Timer | |||||
| class AudioThumbnailComponent final : public Component, | |||||
| public FileDragAndDropTarget, | |||||
| public ChangeBroadcaster, | |||||
| private ChangeListener, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| AudioThumbnailComponent (AudioDeviceManager& adm, AudioFormatManager& afm) | AudioThumbnailComponent (AudioDeviceManager& adm, AudioFormatManager& afm) | ||||
| @@ -217,7 +217,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoParametersComponent : public Component | |||||
| class DemoParametersComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| DemoParametersComponent (const std::vector<DSPDemoParameterBase*>& demoParams) | DemoParametersComponent (const std::vector<DSPDemoParameterBase*>& demoParams) | ||||
| @@ -270,9 +270,9 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| template <class DemoType> | template <class DemoType> | ||||
| struct DSPDemo : public AudioSource, | |||||
| public ProcessorWrapper<DemoType>, | |||||
| private ChangeListener | |||||
| struct DSPDemo final : public AudioSource, | |||||
| public ProcessorWrapper<DemoType>, | |||||
| private ChangeListener | |||||
| { | { | ||||
| DSPDemo (AudioSource& input) | DSPDemo (AudioSource& input) | ||||
| : inputSource (&input) | : inputSource (&input) | ||||
| @@ -327,10 +327,10 @@ struct DSPDemo : public AudioSource, | |||||
| //============================================================================== | //============================================================================== | ||||
| template <class DemoType> | template <class DemoType> | ||||
| class AudioFileReaderComponent : public Component, | |||||
| private TimeSliceThread, | |||||
| private Value::Listener, | |||||
| private ChangeListener | |||||
| class AudioFileReaderComponent final : public Component, | |||||
| private TimeSliceThread, | |||||
| private Value::Listener, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -496,9 +496,9 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioPlayerHeader : public Component, | |||||
| private ChangeListener, | |||||
| private Value::Listener | |||||
| class AudioPlayerHeader final : public Component, | |||||
| private ChangeListener, | |||||
| private Value::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| AudioPlayerHeader (AudioDeviceManager& adm, | AudioPlayerHeader (AudioDeviceManager& adm, | ||||
| @@ -218,11 +218,7 @@ inline Path getJUCELogoPath() | |||||
| // 0.0 and 1.0 at a random speed | // 0.0 and 1.0 at a random speed | ||||
| struct BouncingNumber | struct BouncingNumber | ||||
| { | { | ||||
| BouncingNumber() | |||||
| : speed (0.0004 + 0.0007 * Random::getSystemRandom().nextDouble()), | |||||
| phase (Random::getSystemRandom().nextDouble()) | |||||
| { | |||||
| } | |||||
| virtual ~BouncingNumber() = default; | |||||
| float getValue() const | float getValue() const | ||||
| { | { | ||||
| @@ -231,10 +227,11 @@ struct BouncingNumber | |||||
| } | } | ||||
| protected: | protected: | ||||
| double speed, phase; | |||||
| double speed = 0.0004 + 0.0007 * Random::getSystemRandom().nextDouble(), | |||||
| phase = Random::getSystemRandom().nextDouble(); | |||||
| }; | }; | ||||
| struct SlowerBouncingNumber : public BouncingNumber | |||||
| struct SlowerBouncingNumber final : public BouncingNumber | |||||
| { | { | ||||
| SlowerBouncingNumber() | SlowerBouncingNumber() | ||||
| { | { | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class AudioAppDemo : public AudioAppComponent | |||||
| class AudioAppDemo final : public AudioAppComponent | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -52,8 +52,8 @@ | |||||
| #include "../Assets/AudioLiveScrollingDisplay.h" | #include "../Assets/AudioLiveScrollingDisplay.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class LatencyTester : public AudioIODeviceCallback, | |||||
| private Timer | |||||
| class LatencyTester final : public AudioIODeviceCallback, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| LatencyTester (TextEditor& editorBox) | LatencyTester (TextEditor& editorBox) | ||||
| @@ -304,7 +304,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioLatencyDemo : public Component | |||||
| class AudioLatencyDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| AudioLatencyDemo() | AudioLatencyDemo() | ||||
| @@ -48,12 +48,12 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| class DemoThumbnailComp : public Component, | |||||
| public ChangeListener, | |||||
| public FileDragAndDropTarget, | |||||
| public ChangeBroadcaster, | |||||
| private ScrollBar::Listener, | |||||
| private Timer | |||||
| class DemoThumbnailComp final : public Component, | |||||
| public ChangeListener, | |||||
| public FileDragAndDropTarget, | |||||
| public ChangeBroadcaster, | |||||
| private ScrollBar::Listener, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| DemoThumbnailComp (AudioFormatManager& formatManager, | DemoThumbnailComp (AudioFormatManager& formatManager, | ||||
| @@ -251,13 +251,13 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioPlaybackDemo : public Component, | |||||
| #if (JUCE_ANDROID || JUCE_IOS) | |||||
| private Button::Listener, | |||||
| #else | |||||
| private FileBrowserListener, | |||||
| #endif | |||||
| private ChangeListener | |||||
| class AudioPlaybackDemo final : public Component, | |||||
| #if (JUCE_ANDROID || JUCE_IOS) | |||||
| private Button::Listener, | |||||
| #else | |||||
| private FileBrowserListener, | |||||
| #endif | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| AudioPlaybackDemo() | AudioPlaybackDemo() | ||||
| @@ -55,7 +55,7 @@ | |||||
| /** A simple class that acts as an AudioIODeviceCallback and writes the | /** A simple class that acts as an AudioIODeviceCallback and writes the | ||||
| incoming audio data to a WAV file. | incoming audio data to a WAV file. | ||||
| */ | */ | ||||
| class AudioRecorder : public AudioIODeviceCallback | |||||
| class AudioRecorder final : public AudioIODeviceCallback | |||||
| { | { | ||||
| public: | public: | ||||
| AudioRecorder (AudioThumbnail& thumbnailToUpdate) | AudioRecorder (AudioThumbnail& thumbnailToUpdate) | ||||
| @@ -170,8 +170,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class RecordingThumbnail : public Component, | |||||
| private ChangeListener | |||||
| class RecordingThumbnail final : public Component, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| RecordingThumbnail() | RecordingThumbnail() | ||||
| @@ -230,7 +230,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioRecordingDemo : public Component | |||||
| class AudioRecordingDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| AudioRecordingDemo() | AudioRecordingDemo() | ||||
| @@ -51,8 +51,8 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioSettingsDemo : public Component, | |||||
| public ChangeListener | |||||
| class AudioSettingsDemo final : public Component, | |||||
| public ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| AudioSettingsDemo() | AudioSettingsDemo() | ||||
| @@ -53,7 +53,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Our demo synth sound is just a basic sine wave.. */ | /** Our demo synth sound is just a basic sine wave.. */ | ||||
| struct SineWaveSound : public SynthesiserSound | |||||
| struct SineWaveSound final : public SynthesiserSound | |||||
| { | { | ||||
| bool appliesToNote (int /*midiNoteNumber*/) override { return true; } | bool appliesToNote (int /*midiNoteNumber*/) override { return true; } | ||||
| bool appliesToChannel (int /*midiChannel*/) override { return true; } | bool appliesToChannel (int /*midiChannel*/) override { return true; } | ||||
| @@ -61,7 +61,7 @@ struct SineWaveSound : public SynthesiserSound | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Our demo synth voice just plays a sine wave.. */ | /** Our demo synth voice just plays a sine wave.. */ | ||||
| struct SineWaveVoice : public SynthesiserVoice | |||||
| struct SineWaveVoice final : public SynthesiserVoice | |||||
| { | { | ||||
| bool canPlaySound (SynthesiserSound* sound) override | bool canPlaySound (SynthesiserSound* sound) override | ||||
| { | { | ||||
| @@ -153,7 +153,7 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| // This is an audio source that streams the output of our demo synth. | // This is an audio source that streams the output of our demo synth. | ||||
| struct SynthAudioSource : public AudioSource | |||||
| struct SynthAudioSource final : public AudioSource | |||||
| { | { | ||||
| SynthAudioSource (MidiKeyboardState& keyState) : keyboardState (keyState) | SynthAudioSource (MidiKeyboardState& keyState) : keyboardState (keyState) | ||||
| { | { | ||||
| @@ -238,7 +238,7 @@ struct SynthAudioSource : public AudioSource | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class Callback : public AudioIODeviceCallback | |||||
| class Callback final : public AudioIODeviceCallback | |||||
| { | { | ||||
| public: | public: | ||||
| Callback (AudioSourcePlayer& playerIn, LiveScrollingAudioDisplay& displayIn) | Callback (AudioSourcePlayer& playerIn, LiveScrollingAudioDisplay& displayIn) | ||||
| @@ -283,7 +283,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioSynthesiserDemo : public Component | |||||
| class AudioSynthesiserDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| AudioSynthesiserDemo() | AudioSynthesiserDemo() | ||||
| @@ -95,7 +95,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPESetupComponent : public Component | |||||
| class MPESetupComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -349,8 +349,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ZoneLayoutComponent : public Component, | |||||
| private MPEInstrument::Listener | |||||
| class ZoneLayoutComponent final : public Component, | |||||
| private MPEInstrument::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -466,7 +466,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPEDemoSynthVoice : public MPESynthesiserVoice | |||||
| class MPEDemoSynthVoice final : public MPESynthesiserVoice | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -622,10 +622,10 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPEDemo : public Component, | |||||
| private AudioIODeviceCallback, | |||||
| private MidiInputCallback, | |||||
| private MPEInstrument::Listener | |||||
| class MPEDemo final : public Component, | |||||
| private AudioIODeviceCallback, | |||||
| private MidiInputCallback, | |||||
| private MPEInstrument::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| struct MidiDeviceListEntry : ReferenceCountedObject | |||||
| struct MidiDeviceListEntry final : ReferenceCountedObject | |||||
| { | { | ||||
| explicit MidiDeviceListEntry (MidiDeviceInfo info) : deviceInfo (info) {} | explicit MidiDeviceListEntry (MidiDeviceInfo info) : deviceInfo (info) {} | ||||
| @@ -72,10 +72,10 @@ struct MidiDeviceListEntry : ReferenceCountedObject | |||||
| //============================================================================== | //============================================================================== | ||||
| class MidiDemo : public Component, | |||||
| private MidiKeyboardState::Listener, | |||||
| private MidiInputCallback, | |||||
| private AsyncUpdater | |||||
| class MidiDemo final : public Component, | |||||
| private MidiKeyboardState::Listener, | |||||
| private MidiInputCallback, | |||||
| private AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -172,8 +172,8 @@ private: | |||||
| This component represents a horizontal vibrating musical string of fixed height | This component represents a horizontal vibrating musical string of fixed height | ||||
| and variable length. The string can be excited by calling stringPlucked(). | and variable length. The string can be excited by calling stringPlucked(). | ||||
| */ | */ | ||||
| class StringComponent : public Component, | |||||
| private Timer | |||||
| class StringComponent final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| StringComponent (int lengthInPixels, Colour stringColour) | StringComponent (int lengthInPixels, Colour stringColour) | ||||
| @@ -249,7 +249,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class PluckedStringsDemo : public AudioAppComponent | |||||
| class PluckedStringsDemo final : public AudioAppComponent | |||||
| { | { | ||||
| public: | public: | ||||
| PluckedStringsDemo() | PluckedStringsDemo() | ||||
| @@ -50,8 +50,8 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class SimpleFFTDemo : public AudioAppComponent, | |||||
| private Timer | |||||
| class SimpleFFTDemo final : public AudioAppComponent, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| SimpleFFTDemo() : | SimpleFFTDemo() : | ||||
| @@ -3,7 +3,7 @@ | |||||
| #include "PluginProcessor.h" | #include "PluginProcessor.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioPluginAudioProcessorEditor : public juce::AudioProcessorEditor | |||||
| class AudioPluginAudioProcessorEditor final : public juce::AudioProcessorEditor | |||||
| { | { | ||||
| public: | public: | ||||
| explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&); | explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&); | ||||
| @@ -3,7 +3,7 @@ | |||||
| #include <juce_audio_processors/juce_audio_processors.h> | #include <juce_audio_processors/juce_audio_processors.h> | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioPluginAudioProcessor : public juce::AudioProcessor | |||||
| class AudioPluginAudioProcessor final : public juce::AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -11,7 +11,7 @@ | |||||
| This component lives inside our window, and this is where you should put all | This component lives inside our window, and this is where you should put all | ||||
| your controls and content. | your controls and content. | ||||
| */ | */ | ||||
| class MainComponent : public juce::Component | |||||
| class MainComponent final : public juce::Component | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -186,7 +186,7 @@ struct ConvolutionDemoDSP | |||||
| std::vector<DSPDemoParameterBase*> parameters { &cabinetParam }; | std::vector<DSPDemoParameterBase*> parameters { &cabinetParam }; | ||||
| }; | }; | ||||
| struct ConvolutionDemo : public Component | |||||
| struct ConvolutionDemo final : public Component | |||||
| { | { | ||||
| ConvolutionDemo() | ConvolutionDemo() | ||||
| { | { | ||||
| @@ -98,7 +98,7 @@ struct FIRFilterDemoDSP | |||||
| std::vector<DSPDemoParameterBase*> parameters { &cutoffParam, &typeParam }; | std::vector<DSPDemoParameterBase*> parameters { &cutoffParam, &typeParam }; | ||||
| }; | }; | ||||
| struct FIRFilterDemo : public Component | |||||
| struct FIRFilterDemo final : public Component | |||||
| { | { | ||||
| FIRFilterDemo() | FIRFilterDemo() | ||||
| { | { | ||||
| @@ -83,7 +83,7 @@ struct GainDemoDSP | |||||
| std::vector<DSPDemoParameterBase*> parameters { &gainParam }; | std::vector<DSPDemoParameterBase*> parameters { &gainParam }; | ||||
| }; | }; | ||||
| struct GainDemo : public Component | |||||
| struct GainDemo final : public Component | |||||
| { | { | ||||
| GainDemo() | GainDemo() | ||||
| { | { | ||||
| @@ -102,7 +102,7 @@ struct IIRFilterDemoDSP | |||||
| double sampleRate = 0.0; | double sampleRate = 0.0; | ||||
| }; | }; | ||||
| struct IIRFilterDemo : public Component | |||||
| struct IIRFilterDemo final : public Component | |||||
| { | { | ||||
| IIRFilterDemo() | IIRFilterDemo() | ||||
| { | { | ||||
| @@ -134,7 +134,7 @@ struct OscillatorDemoDSP | |||||
| std::vector<DSPDemoParameterBase*> parameters { &typeParam, &accuracy, &freqParam, &gainParam, &mixParam }; | std::vector<DSPDemoParameterBase*> parameters { &typeParam, &accuracy, &freqParam, &gainParam, &mixParam }; | ||||
| }; | }; | ||||
| struct OscillatorDemo : public Component | |||||
| struct OscillatorDemo final : public Component | |||||
| { | { | ||||
| OscillatorDemo() | OscillatorDemo() | ||||
| { | { | ||||
| @@ -113,7 +113,7 @@ struct OverdriveDemoDSP | |||||
| double sampleRate = 0.0; | double sampleRate = 0.0; | ||||
| }; | }; | ||||
| struct OverdriveDemo : public Component | |||||
| struct OverdriveDemo final : public Component | |||||
| { | { | ||||
| OverdriveDemo() | OverdriveDemo() | ||||
| { | { | ||||
| @@ -156,7 +156,7 @@ struct SIMDRegisterDemoDSP | |||||
| double sampleRate = 0.0; | double sampleRate = 0.0; | ||||
| }; | }; | ||||
| struct SIMDRegisterDemo : public Component | |||||
| struct SIMDRegisterDemo final : public Component | |||||
| { | { | ||||
| SIMDRegisterDemo() | SIMDRegisterDemo() | ||||
| { | { | ||||
| @@ -100,7 +100,7 @@ struct StateVariableFilterDemoDSP | |||||
| double sampleRate = 0.0; | double sampleRate = 0.0; | ||||
| }; | }; | ||||
| struct StateVariableFilterDemo : public Component | |||||
| struct StateVariableFilterDemo final : public Component | |||||
| { | { | ||||
| StateVariableFilterDemo() | StateVariableFilterDemo() | ||||
| { | { | ||||
| @@ -82,7 +82,7 @@ struct WaveShaperTanhDemoDSP | |||||
| std::vector<DSPDemoParameterBase*> parameters { &accuracy }; // no params for this demo | std::vector<DSPDemoParameterBase*> parameters { &accuracy }; // no params for this demo | ||||
| }; | }; | ||||
| struct WaveShaperTanhDemo : public Component | |||||
| struct WaveShaperTanhDemo final : public Component | |||||
| { | { | ||||
| WaveShaperTanhDemo() | WaveShaperTanhDemo() | ||||
| { | { | ||||
| @@ -31,8 +31,8 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| #if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD | #if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD | ||||
| // Just add a simple icon to the Window system tray area or Mac menu bar.. | // Just add a simple icon to the Window system tray area or Mac menu bar.. | ||||
| struct DemoTaskbarComponent : public SystemTrayIconComponent, | |||||
| private Timer | |||||
| struct DemoTaskbarComponent final : public SystemTrayIconComponent, | |||||
| private Timer | |||||
| { | { | ||||
| DemoTaskbarComponent() | DemoTaskbarComponent() | ||||
| { | { | ||||
| @@ -76,7 +76,7 @@ | |||||
| std::unique_ptr<AudioDeviceManager> sharedAudioDeviceManager; | std::unique_ptr<AudioDeviceManager> sharedAudioDeviceManager; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoRunnerApplication : public JUCEApplication | |||||
| class DemoRunnerApplication final : public JUCEApplication | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -117,7 +117,7 @@ public: | |||||
| ApplicationCommandManager& getGlobalCommandManager() { return commandManager; } | ApplicationCommandManager& getGlobalCommandManager() { return commandManager; } | ||||
| private: | private: | ||||
| class MainAppWindow : public DocumentWindow | |||||
| class MainAppWindow final : public DocumentWindow | |||||
| { | { | ||||
| public: | public: | ||||
| MainAppWindow (const String& name) | MainAppWindow (const String& name) | ||||
| @@ -57,7 +57,7 @@ | |||||
| This component sets its accessibility title and help text properties and | This component sets its accessibility title and help text properties and | ||||
| also acts as a focus container for its children. | also acts as a focus container for its children. | ||||
| */ | */ | ||||
| class ContentComponent : public Component | |||||
| class ContentComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| ContentComponent (const String& title, const String& info, Component& contentToDisplay) | ContentComponent (const String& title, const String& info, Component& contentToDisplay) | ||||
| @@ -96,8 +96,8 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| struct InfoIcon : public Component, | |||||
| public SettableTooltipClient | |||||
| struct InfoIcon final : public Component, | |||||
| public SettableTooltipClient | |||||
| { | { | ||||
| InfoIcon() | InfoIcon() | ||||
| { | { | ||||
| @@ -151,7 +151,7 @@ private: | |||||
| visible and controllable by accessibility clients. There are a few examples | visible and controllable by accessibility clients. There are a few examples | ||||
| of some widgets in this demo such as Sliders, Buttons and a TreeView. | of some widgets in this demo such as Sliders, Buttons and a TreeView. | ||||
| */ | */ | ||||
| class JUCEWidgetsComponent : public Component | |||||
| class JUCEWidgetsComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| JUCEWidgetsComponent() | JUCEWidgetsComponent() | ||||
| @@ -184,7 +184,7 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| class ButtonsComponent : public Component | |||||
| class ButtonsComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| ButtonsComponent() | ButtonsComponent() | ||||
| @@ -217,7 +217,7 @@ private: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| struct RadioButtonsGroupComponent : public Component | |||||
| struct RadioButtonsGroupComponent final : public Component | |||||
| { | { | ||||
| RadioButtonsGroupComponent() | RadioButtonsGroupComponent() | ||||
| { | { | ||||
| @@ -263,7 +263,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class SlidersComponent : public Component | |||||
| class SlidersComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| SlidersComponent() | SlidersComponent() | ||||
| @@ -317,7 +317,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class TreeViewComponent : public Component | |||||
| class TreeViewComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| TreeViewComponent() | TreeViewComponent() | ||||
| @@ -335,7 +335,7 @@ private: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| struct RootItem : public TreeViewItem | |||||
| struct RootItem final : public TreeViewItem | |||||
| { | { | ||||
| RootItem() | RootItem() | ||||
| { | { | ||||
| @@ -447,7 +447,7 @@ constexpr NameAndRole accessibilityRoles[] | |||||
| Component::createAccessibilityHandler() method to return a custom AccessibilityHandler. | Component::createAccessibilityHandler() method to return a custom AccessibilityHandler. | ||||
| The properties of this handler are set by the various controls in the demo. | The properties of this handler are set by the various controls in the demo. | ||||
| */ | */ | ||||
| class CustomWidgetComponent : public Component | |||||
| class CustomWidgetComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| CustomWidgetComponent() | CustomWidgetComponent() | ||||
| @@ -488,7 +488,7 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| class AccessibleComponent : public Component | |||||
| class AccessibleComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| explicit AccessibleComponent (CustomWidgetComponent& owner) | explicit AccessibleComponent (CustomWidgetComponent& owner) | ||||
| @@ -543,7 +543,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class InfoComponent : public Component | |||||
| class InfoComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| explicit InfoComponent (CustomWidgetComponent& owner) | explicit InfoComponent (CustomWidgetComponent& owner) | ||||
| @@ -636,7 +636,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ActionsComponent : public Component | |||||
| class ActionsComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| explicit ActionsComponent (CustomWidgetComponent& owner) | explicit ActionsComponent (CustomWidgetComponent& owner) | ||||
| @@ -675,8 +675,8 @@ private: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| class AccessibilityActionComponent : public Component, | |||||
| private Timer | |||||
| class AccessibilityActionComponent final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| AccessibilityActionComponent (CustomWidgetComponent& owner, | AccessibilityActionComponent (CustomWidgetComponent& owner, | ||||
| @@ -769,7 +769,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ValueInterfaceComponent : public Component | |||||
| class ValueInterfaceComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| explicit ValueInterfaceComponent (CustomWidgetComponent& owner) | explicit ValueInterfaceComponent (CustomWidgetComponent& owner) | ||||
| @@ -883,7 +883,7 @@ private: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| struct RangedValueComponent : public Component | |||||
| struct RangedValueComponent final : public Component | |||||
| { | { | ||||
| RangedValueComponent() | RangedValueComponent() | ||||
| { | { | ||||
| @@ -986,7 +986,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class StateComponent : public Component | |||||
| class StateComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| StateComponent() | StateComponent() | ||||
| @@ -1096,7 +1096,7 @@ private: | |||||
| /** | /** | ||||
| The top-level component containing an example of custom child component navigation. | The top-level component containing an example of custom child component navigation. | ||||
| */ | */ | ||||
| class CustomNavigationComponent : public Component | |||||
| class CustomNavigationComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| CustomNavigationComponent() | CustomNavigationComponent() | ||||
| @@ -1126,7 +1126,7 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| class NavigableComponentsHolder : public Component | |||||
| class NavigableComponentsHolder final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| NavigableComponentsHolder() | NavigableComponentsHolder() | ||||
| @@ -1163,7 +1163,7 @@ private: | |||||
| std::unique_ptr<ComponentTraverser> createFocusTraverser() override | std::unique_ptr<ComponentTraverser> createFocusTraverser() override | ||||
| { | { | ||||
| struct CustomTraverser : public FocusTraverser | |||||
| struct CustomTraverser final : public FocusTraverser | |||||
| { | { | ||||
| explicit CustomTraverser (NavigableComponentsHolder& owner) | explicit CustomTraverser (NavigableComponentsHolder& owner) | ||||
| : navigableComponentsHolder (owner) {} | : navigableComponentsHolder (owner) {} | ||||
| @@ -1221,7 +1221,7 @@ private: | |||||
| } | } | ||||
| private: | private: | ||||
| struct NavigableComponent : public Component | |||||
| struct NavigableComponent final : public Component | |||||
| { | { | ||||
| NavigableComponent (int index, int total, NavigableComponentsHolder& owner) | NavigableComponent (int index, int total, NavigableComponentsHolder& owner) | ||||
| { | { | ||||
| @@ -1360,7 +1360,7 @@ private: | |||||
| screen reader application to be read out along with a priority determining how | screen reader application to be read out along with a priority determining how | ||||
| it should be read out (whether it should interrupt other announcements, etc.). | it should be read out (whether it should interrupt other announcements, etc.). | ||||
| */ | */ | ||||
| class AnnouncementsComponent : public Component | |||||
| class AnnouncementsComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| AnnouncementsComponent() | AnnouncementsComponent() | ||||
| @@ -1442,7 +1442,7 @@ private: | |||||
| This just contains a TabbedComponent with a tab for each of the top-level demos. | This just contains a TabbedComponent with a tab for each of the top-level demos. | ||||
| */ | */ | ||||
| class AccessibilityDemo : public Component | |||||
| class AccessibilityDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| AccessibilityDemo() | AccessibilityDemo() | ||||
| @@ -52,7 +52,7 @@ | |||||
| This component lives inside our window, and this is where you should put all | This component lives inside our window, and this is where you should put all | ||||
| your controls and content. | your controls and content. | ||||
| */ | */ | ||||
| class AnimationAppDemo : public AnimatedAppComponent | |||||
| class AnimationAppDemo final : public AnimatedAppComponent | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| /** This will be the source of our balls and can be dragged around. */ | /** This will be the source of our balls and can be dragged around. */ | ||||
| class BallGeneratorComponent : public Component | |||||
| class BallGeneratorComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| BallGeneratorComponent() {} | BallGeneratorComponent() {} | ||||
| @@ -93,7 +93,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct BallComponent : public Component | |||||
| struct BallComponent final : public Component | |||||
| { | { | ||||
| BallComponent (Point<float> pos) | BallComponent (Point<float> pos) | ||||
| : position (pos), | : position (pos), | ||||
| @@ -136,8 +136,8 @@ struct BallComponent : public Component | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AnimationDemo : public Component, | |||||
| private Timer | |||||
| class AnimationDemo final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| AnimationDemo() | AnimationDemo() | ||||
| @@ -50,8 +50,8 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class BouncingBallWavetableDemo : public AudioAppComponent, | |||||
| private Timer | |||||
| class BouncingBallWavetableDemo final : public AudioAppComponent, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -50,7 +50,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class CameraDemo : public Component | |||||
| class CameraDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| CameraDemo() | CameraDemo() | ||||
| @@ -53,8 +53,8 @@ | |||||
| #endif | #endif | ||||
| //============================================================================== | //============================================================================== | ||||
| class CodeEditorDemo : public Component, | |||||
| private FilenameComponentListener | |||||
| class CodeEditorDemo final : public Component, | |||||
| private FilenameComponentListener | |||||
| { | { | ||||
| public: | public: | ||||
| CodeEditorDemo() | CodeEditorDemo() | ||||
| @@ -51,7 +51,7 @@ | |||||
| /** | /** | ||||
| This class represents one of the individual lights in our grid. | This class represents one of the individual lights in our grid. | ||||
| */ | */ | ||||
| class ToggleLightComponent : public Component | |||||
| class ToggleLightComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| ToggleLightComponent() {} | ToggleLightComponent() {} | ||||
| @@ -84,7 +84,7 @@ private: | |||||
| /** | /** | ||||
| This is the parent class that holds multiple ToggleLightComponents in a grid. | This is the parent class that holds multiple ToggleLightComponents in a grid. | ||||
| */ | */ | ||||
| class ToggleLightGridComponent : public Component | |||||
| class ToggleLightGridComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| ToggleLightGridComponent() | ToggleLightGridComponent() | ||||
| @@ -134,7 +134,7 @@ private: | |||||
| This component lives inside our window, and this is where you should put all | This component lives inside our window, and this is where you should put all | ||||
| your controls and content. | your controls and content. | ||||
| */ | */ | ||||
| class ComponentDemo : public Component | |||||
| class ComponentDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -50,7 +50,7 @@ | |||||
| #include "WidgetsDemo.h" | #include "WidgetsDemo.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class ComponentTransformsDemo : public Component | |||||
| class ComponentTransformsDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| ComponentTransformsDemo() | ComponentTransformsDemo() | ||||
| @@ -55,7 +55,7 @@ struct MessageBoxOwnerComponent : public Component | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoBackgroundThread : public ThreadWithProgressWindow | |||||
| class DemoBackgroundThread final : public ThreadWithProgressWindow | |||||
| { | { | ||||
| public: | public: | ||||
| explicit DemoBackgroundThread (MessageBoxOwnerComponent& comp) | explicit DemoBackgroundThread (MessageBoxOwnerComponent& comp) | ||||
| @@ -117,7 +117,7 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| class DialogsDemo : public MessageBoxOwnerComponent | |||||
| class DialogsDemo final : public MessageBoxOwnerComponent | |||||
| { | { | ||||
| public: | public: | ||||
| enum DialogType | enum DialogType | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| struct DemoFlexPanel : public Component | |||||
| struct DemoFlexPanel final : public Component | |||||
| { | { | ||||
| DemoFlexPanel (Colour col, FlexItem& item) | DemoFlexPanel (Colour col, FlexItem& item) | ||||
| : flexItem (item), colour (col) | : flexItem (item), colour (col) | ||||
| @@ -163,7 +163,7 @@ struct DemoFlexPanel : public Component | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct FlexBoxDemo : public juce::Component | |||||
| struct FlexBoxDemo final : public juce::Component | |||||
| { | { | ||||
| FlexBoxDemo() | FlexBoxDemo() | ||||
| { | { | ||||
| @@ -49,9 +49,9 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class FontsDemo : public Component, | |||||
| private ListBoxModel, | |||||
| private Slider::Listener | |||||
| class FontsDemo final : public Component, | |||||
| private ListBoxModel, | |||||
| private Slider::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| FontsDemo() | FontsDemo() | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Holds the various toggle buttons for the animation modes. */ | /** Holds the various toggle buttons for the animation modes. */ | ||||
| class ControllersComponent : public Component | |||||
| class ControllersComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| ControllersComponent() | ControllersComponent() | ||||
| @@ -113,7 +113,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class GraphicsDemoBase : public Component | |||||
| class GraphicsDemoBase : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| GraphicsDemoBase (ControllersComponent& cc, const String& name) | GraphicsDemoBase (ControllersComponent& cc, const String& name) | ||||
| @@ -280,7 +280,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class RectangleFillTypesDemo : public GraphicsDemoBase | |||||
| class RectangleFillTypesDemo final : public GraphicsDemoBase | |||||
| { | { | ||||
| public: | public: | ||||
| RectangleFillTypesDemo (ControllersComponent& cc) | RectangleFillTypesDemo (ControllersComponent& cc) | ||||
| @@ -316,7 +316,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class PathsDemo : public GraphicsDemoBase | |||||
| class PathsDemo final : public GraphicsDemoBase | |||||
| { | { | ||||
| public: | public: | ||||
| PathsDemo (ControllersComponent& cc, bool linear, bool radial) | PathsDemo (ControllersComponent& cc, bool linear, bool radial) | ||||
| @@ -377,7 +377,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class StrokesDemo : public GraphicsDemoBase | |||||
| class StrokesDemo final : public GraphicsDemoBase | |||||
| { | { | ||||
| public: | public: | ||||
| StrokesDemo (ControllersComponent& cc) | StrokesDemo (ControllersComponent& cc) | ||||
| @@ -410,7 +410,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ImagesRenderingDemo : public GraphicsDemoBase | |||||
| class ImagesRenderingDemo final : public GraphicsDemoBase | |||||
| { | { | ||||
| public: | public: | ||||
| ImagesRenderingDemo (ControllersComponent& cc, bool argb, bool tiled) | ImagesRenderingDemo (ControllersComponent& cc, bool argb, bool tiled) | ||||
| @@ -448,7 +448,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class GlyphsDemo : public GraphicsDemoBase | |||||
| class GlyphsDemo final : public GraphicsDemoBase | |||||
| { | { | ||||
| public: | public: | ||||
| GlyphsDemo (ControllersComponent& cc) | GlyphsDemo (ControllersComponent& cc) | ||||
| @@ -468,7 +468,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class SVGDemo : public GraphicsDemoBase | |||||
| class SVGDemo final : public GraphicsDemoBase | |||||
| { | { | ||||
| public: | public: | ||||
| SVGDemo (ControllersComponent& cc) | SVGDemo (ControllersComponent& cc) | ||||
| @@ -513,7 +513,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class LinesDemo : public GraphicsDemoBase | |||||
| class LinesDemo final : public GraphicsDemoBase | |||||
| { | { | ||||
| public: | public: | ||||
| LinesDemo (ControllersComponent& cc) | LinesDemo (ControllersComponent& cc) | ||||
| @@ -576,8 +576,8 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoHolderComponent : public Component, | |||||
| private Timer | |||||
| class DemoHolderComponent final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| DemoHolderComponent() | DemoHolderComponent() | ||||
| @@ -623,8 +623,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class TestListComponent : public Component, | |||||
| private ListBoxModel | |||||
| class TestListComponent final : public Component, | |||||
| private ListBoxModel | |||||
| { | { | ||||
| public: | public: | ||||
| TestListComponent (DemoHolderComponent& holder, ControllersComponent& controls) | TestListComponent (DemoHolderComponent& holder, ControllersComponent& controls) | ||||
| @@ -695,7 +695,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class GraphicsDemo : public Component | |||||
| class GraphicsDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| GraphicsDemo() | GraphicsDemo() | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| struct GridDemo : public Component | |||||
| struct GridDemo final : public Component | |||||
| { | { | ||||
| GridDemo() | GridDemo() | ||||
| { | { | ||||
| @@ -48,7 +48,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class HelloWorldDemo : public Component | |||||
| class HelloWorldDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -49,8 +49,8 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class ImagesDemo : public Component, | |||||
| public FileBrowserListener | |||||
| class ImagesDemo final : public Component, | |||||
| public FileBrowserListener | |||||
| { | { | ||||
| public: | public: | ||||
| ImagesDemo() | ImagesDemo() | ||||
| @@ -66,8 +66,8 @@ enum KeyPressCommandIDs | |||||
| This is a simple target for the key-presses which will live inside the demo component | This is a simple target for the key-presses which will live inside the demo component | ||||
| and contains a button that can be moved around with the arrow keys. | and contains a button that can be moved around with the arrow keys. | ||||
| */ | */ | ||||
| class KeyPressTarget : public Component, | |||||
| public ApplicationCommandTarget | |||||
| class KeyPressTarget final : public Component, | |||||
| public ApplicationCommandTarget | |||||
| { | { | ||||
| public: | public: | ||||
| KeyPressTarget() | KeyPressTarget() | ||||
| @@ -213,7 +213,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class KeyMappingsDemo : public Component | |||||
| class KeyMappingsDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| KeyMappingsDemo() | KeyMappingsDemo() | ||||
| @@ -55,7 +55,7 @@ | |||||
| It's a good idea not to hard code your colours, use the findColour method along with appropriate | It's a good idea not to hard code your colours, use the findColour method along with appropriate | ||||
| ColourIds so you can set these on a per-component basis. | ColourIds so you can set these on a per-component basis. | ||||
| */ | */ | ||||
| struct CustomLookAndFeel : public LookAndFeel_V4 | |||||
| struct CustomLookAndFeel : public LookAndFeel_V4 | |||||
| { | { | ||||
| void drawRoundThumb (Graphics& g, float x, float y, float diameter, Colour colour, float outlineThickness) | void drawRoundThumb (Graphics& g, float x, float y, float diameter, Colour colour, float outlineThickness) | ||||
| { | { | ||||
| @@ -296,7 +296,7 @@ struct CustomLookAndFeel : public LookAndFeel_V4 | |||||
| This inherits from CustomLookAndFeel above for the linear bar and slider backgrounds. | This inherits from CustomLookAndFeel above for the linear bar and slider backgrounds. | ||||
| */ | */ | ||||
| struct SquareLookAndFeel : public CustomLookAndFeel | |||||
| struct SquareLookAndFeel final : public CustomLookAndFeel | |||||
| { | { | ||||
| void drawButtonBackground (Graphics& g, Button& button, const Colour& backgroundColour, | void drawButtonBackground (Graphics& g, Button& button, const Colour& backgroundColour, | ||||
| bool isMouseOverButton, bool isButtonDown) override | bool isMouseOverButton, bool isButtonDown) override | ||||
| @@ -434,7 +434,7 @@ struct SquareLookAndFeel : public CustomLookAndFeel | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct LookAndFeelDemoComponent : public Component | |||||
| struct LookAndFeelDemoComponent final : public Component | |||||
| { | { | ||||
| LookAndFeelDemoComponent() | LookAndFeelDemoComponent() | ||||
| { | { | ||||
| @@ -521,7 +521,7 @@ struct LookAndFeelDemoComponent : public Component | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class LookAndFeelDemo : public Component | |||||
| class LookAndFeelDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| LookAndFeelDemo() | LookAndFeelDemo() | ||||
| @@ -53,8 +53,8 @@ | |||||
| also listen to changes in the text and mark the FileBasedDocument as 'dirty'. This 'dirty' | also listen to changes in the text and mark the FileBasedDocument as 'dirty'. This 'dirty' | ||||
| flag is used to prompt the user to save the note when it is closed. | flag is used to prompt the user to save the note when it is closed. | ||||
| */ | */ | ||||
| class Note : public Component, | |||||
| public FileBasedDocument | |||||
| class Note final : public Component, | |||||
| public FileBasedDocument | |||||
| { | { | ||||
| public: | public: | ||||
| Note (const String& name, const String& contents) | Note (const String& name, const String& contents) | ||||
| @@ -133,7 +133,7 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Simple MultiDocumentPanel that just tries to save our notes when they are closed. | /** Simple MultiDocumentPanel that just tries to save our notes when they are closed. | ||||
| */ | */ | ||||
| class DemoMultiDocumentPanel : public MultiDocumentPanel | |||||
| class DemoMultiDocumentPanel final : public MultiDocumentPanel | |||||
| { | { | ||||
| public: | public: | ||||
| DemoMultiDocumentPanel() = default; | DemoMultiDocumentPanel() = default; | ||||
| @@ -165,8 +165,8 @@ private: | |||||
| /** Simple multi-document panel that manages a number of notes that you can store to files. | /** Simple multi-document panel that manages a number of notes that you can store to files. | ||||
| By default this will look for notes saved to the desktop and load them up. | By default this will look for notes saved to the desktop and load them up. | ||||
| */ | */ | ||||
| class MDIDemo : public Component, | |||||
| public FileDragAndDropTarget | |||||
| class MDIDemo final : public Component, | |||||
| public FileDragAndDropTarget | |||||
| { | { | ||||
| public: | public: | ||||
| MDIDemo() | MDIDemo() | ||||
| @@ -54,7 +54,7 @@ | |||||
| is enabled. It contains an icon that can be used to show the side panel containing | is enabled. It contains an icon that can be used to show the side panel containing | ||||
| the menu. | the menu. | ||||
| */ | */ | ||||
| struct BurgerMenuHeader : public Component | |||||
| struct BurgerMenuHeader final : public Component | |||||
| { | { | ||||
| BurgerMenuHeader (SidePanel& sp) | BurgerMenuHeader (SidePanel& sp) | ||||
| : sidePanel (sp) | : sidePanel (sp) | ||||
| @@ -120,9 +120,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MenusDemo : public Component, | |||||
| public ApplicationCommandTarget, | |||||
| public MenuBarModel | |||||
| class MenusDemo final : public Component, | |||||
| public ApplicationCommandTarget, | |||||
| public MenuBarModel | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -341,8 +341,8 @@ private: | |||||
| Command messages that aren't handled in the main component will be passed | Command messages that aren't handled in the main component will be passed | ||||
| to this class to respond to. | to this class to respond to. | ||||
| */ | */ | ||||
| class OuterCommandTarget : public Component, | |||||
| public ApplicationCommandTarget | |||||
| class OuterCommandTarget final : public Component, | |||||
| public ApplicationCommandTarget | |||||
| { | { | ||||
| public: | public: | ||||
| OuterCommandTarget (ApplicationCommandManager& m) | OuterCommandTarget (ApplicationCommandManager& m) | ||||
| @@ -430,8 +430,8 @@ private: | |||||
| Command messages that aren't handled in the OuterCommandTarget will be passed | Command messages that aren't handled in the OuterCommandTarget will be passed | ||||
| to this class to respond to. | to this class to respond to. | ||||
| */ | */ | ||||
| struct InnerCommandTarget : public Component, | |||||
| public ApplicationCommandTarget | |||||
| struct InnerCommandTarget final : public Component, | |||||
| public ApplicationCommandTarget | |||||
| { | { | ||||
| InnerCommandTarget (ApplicationCommandManager& m) | InnerCommandTarget (ApplicationCommandManager& m) | ||||
| : commandManager (m) | : commandManager (m) | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class MultiTouchDemo : public Component | |||||
| class MultiTouchDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| MultiTouchDemo() | MultiTouchDemo() | ||||
| @@ -54,7 +54,7 @@ | |||||
| This component lives inside our window, and this is where you should put all | This component lives inside our window, and this is where you should put all | ||||
| your controls and content. | your controls and content. | ||||
| */ | */ | ||||
| class OpenGLAppDemo : public OpenGLAppComponent | |||||
| class OpenGLAppDemo final : public OpenGLAppComponent | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -951,7 +951,7 @@ private: | |||||
| Graphics g (*glRenderer); | Graphics g (*glRenderer); | ||||
| g.addTransform (AffineTransform::scale (desktopScale)); | g.addTransform (AffineTransform::scale (desktopScale)); | ||||
| for (auto s : stars) | |||||
| for (const auto& s : stars) | |||||
| { | { | ||||
| auto size = 0.25f; | auto size = 0.25f; | ||||
| @@ -49,9 +49,9 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class OpenGLDemo2D : public Component, | |||||
| private CodeDocument::Listener, | |||||
| private Timer | |||||
| class OpenGLDemo2D final : public Component, | |||||
| private CodeDocument::Listener, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| OpenGLDemo2D() | OpenGLDemo2D() | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoButtonPropertyComponent : public ButtonPropertyComponent | |||||
| class DemoButtonPropertyComponent final : public ButtonPropertyComponent | |||||
| { | { | ||||
| public: | public: | ||||
| DemoButtonPropertyComponent (const String& propertyName) | DemoButtonPropertyComponent (const String& propertyName) | ||||
| @@ -80,7 +80,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoSliderPropertyComponent : public SliderPropertyComponent | |||||
| class DemoSliderPropertyComponent final : public SliderPropertyComponent | |||||
| { | { | ||||
| public: | public: | ||||
| DemoSliderPropertyComponent (const String& propertyName) | DemoSliderPropertyComponent (const String& propertyName) | ||||
| @@ -162,8 +162,8 @@ static Array<PropertyComponent*> createChoices (int howMany) | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| class PropertiesDemo : public Component, | |||||
| private Timer | |||||
| class PropertiesDemo final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| PropertiesDemo() | PropertiesDemo() | ||||
| @@ -51,9 +51,9 @@ | |||||
| #if JUCE_MAC || JUCE_WINDOWS | #if JUCE_MAC || JUCE_WINDOWS | ||||
| //============================================================================== | //============================================================================== | ||||
| // so that we can easily have two video windows each with a file browser, wrap this up as a class.. | // so that we can easily have two video windows each with a file browser, wrap this up as a class.. | ||||
| class MovieComponentWithFileBrowser : public Component, | |||||
| public DragAndDropTarget, | |||||
| private FilenameComponentListener | |||||
| class MovieComponentWithFileBrowser final : public Component, | |||||
| public DragAndDropTarget, | |||||
| private FilenameComponentListener | |||||
| { | { | ||||
| public: | public: | ||||
| MovieComponentWithFileBrowser() | MovieComponentWithFileBrowser() | ||||
| @@ -147,9 +147,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class VideoDemo : public Component, | |||||
| public DragAndDropContainer, | |||||
| private FileBrowserListener | |||||
| class VideoDemo final : public Component, | |||||
| public DragAndDropContainer, | |||||
| private FileBrowserListener | |||||
| { | { | ||||
| public: | public: | ||||
| VideoDemo() | VideoDemo() | ||||
| @@ -269,8 +269,8 @@ private: | |||||
| }; | }; | ||||
| #elif JUCE_IOS || JUCE_ANDROID | #elif JUCE_IOS || JUCE_ANDROID | ||||
| //============================================================================== | //============================================================================== | ||||
| class VideoDemo : public Component, | |||||
| private Timer | |||||
| class VideoDemo final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| VideoDemo() | VideoDemo() | ||||
| @@ -55,7 +55,7 @@ | |||||
| when the browser changes URL. You don't need to do this, you can just also | when the browser changes URL. You don't need to do this, you can just also | ||||
| just use the WebBrowserComponent class directly. | just use the WebBrowserComponent class directly. | ||||
| */ | */ | ||||
| class DemoBrowserComponent : public WebBrowserComponent | |||||
| class DemoBrowserComponent final : public WebBrowserComponent | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -89,7 +89,7 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| class WebBrowserDemo : public Component | |||||
| class WebBrowserDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| WebBrowserDemo() | WebBrowserDemo() | ||||
| @@ -59,7 +59,7 @@ static void showBubbleMessage (Component& targetComponent, const String& textToS | |||||
| /** To demonstrate how sliders can have custom snapping applied to their values, | /** To demonstrate how sliders can have custom snapping applied to their values, | ||||
| this simple class snaps the value to 50 if it comes near. | this simple class snaps the value to 50 if it comes near. | ||||
| */ | */ | ||||
| struct SnappingSlider : public Slider | |||||
| struct SnappingSlider final : public Slider | |||||
| { | { | ||||
| double snapValue (double attemptedValue, DragMode dragMode) override | double snapValue (double attemptedValue, DragMode dragMode) override | ||||
| { | { | ||||
| @@ -74,8 +74,8 @@ struct SnappingSlider : public Slider | |||||
| }; | }; | ||||
| /** A TextButton that pops up a colour chooser to change its colours. */ | /** A TextButton that pops up a colour chooser to change its colours. */ | ||||
| class ColourChangeButton : public TextButton, | |||||
| public ChangeListener | |||||
| class ColourChangeButton final : public TextButton, | |||||
| public ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| ColourChangeButton() | ColourChangeButton() | ||||
| @@ -112,7 +112,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct SlidersPage : public Component | |||||
| struct SlidersPage final : public Component | |||||
| { | { | ||||
| SlidersPage() | SlidersPage() | ||||
| { | { | ||||
| @@ -261,7 +261,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct ButtonsPage : public Component | |||||
| struct ButtonsPage final : public Component | |||||
| { | { | ||||
| ButtonsPage (bool isRunningComponentTransformDemo) | ButtonsPage (bool isRunningComponentTransformDemo) | ||||
| { | { | ||||
| @@ -461,8 +461,8 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| struct MiscPage : public Component, | |||||
| private Timer | |||||
| struct MiscPage final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| MiscPage() | MiscPage() | ||||
| { | { | ||||
| @@ -540,7 +540,7 @@ struct MiscPage : public Component, | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct MenuPage : public Component | |||||
| struct MenuPage final : public Component | |||||
| { | { | ||||
| MenuPage() | MenuPage() | ||||
| { | { | ||||
| @@ -735,8 +735,8 @@ struct MenuPage : public Component | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ToolbarDemoComp : public Component, | |||||
| private Slider::Listener | |||||
| class ToolbarDemoComp final : public Component, | |||||
| private Slider::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| ToolbarDemoComp() | ToolbarDemoComp() | ||||
| @@ -802,7 +802,7 @@ private: | |||||
| customiseButton { "Customise..." }; | customiseButton { "Customise..." }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoToolbarItemFactory : public ToolbarItemFactory | |||||
| class DemoToolbarItemFactory final : public ToolbarItemFactory | |||||
| { | { | ||||
| public: | public: | ||||
| DemoToolbarItemFactory() {} | DemoToolbarItemFactory() {} | ||||
| @@ -977,8 +977,8 @@ private: | |||||
| /** | /** | ||||
| This class shows how to implement a TableListBoxModel to show in a TableListBox. | This class shows how to implement a TableListBoxModel to show in a TableListBox. | ||||
| */ | */ | ||||
| class TableDemoComponent : public Component, | |||||
| public TableListBoxModel | |||||
| class TableDemoComponent final : public Component, | |||||
| public TableListBoxModel | |||||
| { | { | ||||
| public: | public: | ||||
| TableDemoComponent() | TableDemoComponent() | ||||
| @@ -1303,8 +1303,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DragAndDropDemo : public Component, | |||||
| public DragAndDropContainer | |||||
| class DragAndDropDemo final : public Component, | |||||
| public DragAndDropContainer | |||||
| { | { | ||||
| public: | public: | ||||
| DragAndDropDemo() | DragAndDropDemo() | ||||
| @@ -1509,7 +1509,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct DemoTabbedComponent : public TabbedComponent | |||||
| struct DemoTabbedComponent final : public TabbedComponent | |||||
| { | { | ||||
| DemoTabbedComponent (bool isRunningComponenTransformsDemo) | DemoTabbedComponent (bool isRunningComponenTransformsDemo) | ||||
| : TabbedComponent (TabbedButtonBar::TabsAtTop) | : TabbedComponent (TabbedButtonBar::TabsAtTop) | ||||
| @@ -1567,7 +1567,7 @@ struct DemoTabbedComponent : public TabbedComponent | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct WidgetsDemo : public Component | |||||
| struct WidgetsDemo final : public Component | |||||
| { | { | ||||
| WidgetsDemo (bool isRunningComponenTransformsDemo = false) | WidgetsDemo (bool isRunningComponenTransformsDemo = false) | ||||
| : tabs (isRunningComponenTransformsDemo) | : tabs (isRunningComponenTransformsDemo) | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Just a simple window that deletes itself when closed. */ | /** Just a simple window that deletes itself when closed. */ | ||||
| class BasicWindow : public DocumentWindow | |||||
| class BasicWindow final : public DocumentWindow | |||||
| { | { | ||||
| public: | public: | ||||
| BasicWindow (const String& name, Colour backgroundColour, int buttonsNeeded) | BasicWindow (const String& name, Colour backgroundColour, int buttonsNeeded) | ||||
| @@ -68,8 +68,8 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| /** This window contains a ColourSelector which can be used to change the window's colour. */ | /** This window contains a ColourSelector which can be used to change the window's colour. */ | ||||
| class ColourSelectorWindow : public DocumentWindow, | |||||
| private ChangeListener | |||||
| class ColourSelectorWindow final : public DocumentWindow, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| ColourSelectorWindow (const String& name, Colour backgroundColour, int buttonsNeeded) | ColourSelectorWindow (const String& name, Colour backgroundColour, int buttonsNeeded) | ||||
| @@ -106,8 +106,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class BouncingBallComponent : public Component, | |||||
| public Timer | |||||
| class BouncingBallComponent final : public Component, | |||||
| public Timer | |||||
| { | { | ||||
| public: | public: | ||||
| BouncingBallComponent() | BouncingBallComponent() | ||||
| @@ -159,7 +159,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class BouncingBallsContainer : public Component | |||||
| class BouncingBallsContainer final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| BouncingBallsContainer (int numBalls) | BouncingBallsContainer (int numBalls) | ||||
| @@ -207,7 +207,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class WindowsDemo : public Component | |||||
| class WindowsDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| enum Windows | enum Windows | ||||
| @@ -53,7 +53,7 @@ | |||||
| #include <ARA_Library/Utilities/ARATimelineConversion.h> | #include <ARA_Library/Utilities/ARATimelineConversion.h> | ||||
| //============================================================================== | //============================================================================== | ||||
| class ARADemoPluginAudioModification : public ARAAudioModification | |||||
| class ARADemoPluginAudioModification final : public ARAAudioModification | |||||
| { | { | ||||
| public: | public: | ||||
| ARADemoPluginAudioModification (ARAAudioSource* audioSource, | ARADemoPluginAudioModification (ARAAudioSource* audioSource, | ||||
| @@ -79,7 +79,7 @@ struct PreviewState | |||||
| std::atomic<ARAPlaybackRegion*> previewedRegion { nullptr }; | std::atomic<ARAPlaybackRegion*> previewedRegion { nullptr }; | ||||
| }; | }; | ||||
| class SharedTimeSliceThread : public TimeSliceThread | |||||
| class SharedTimeSliceThread final : public TimeSliceThread | |||||
| { | { | ||||
| public: | public: | ||||
| SharedTimeSliceThread() | SharedTimeSliceThread() | ||||
| @@ -89,7 +89,7 @@ public: | |||||
| } | } | ||||
| }; | }; | ||||
| class AsyncConfigurationCallback : private AsyncUpdater | |||||
| class AsyncConfigurationCallback final : private AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| explicit AsyncConfigurationCallback (std::function<void()> callbackIn) | explicit AsyncConfigurationCallback (std::function<void()> callbackIn) | ||||
| @@ -303,7 +303,7 @@ struct ProcessingLockInterface | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class PlaybackRenderer : public ARAPlaybackRenderer | |||||
| class PlaybackRenderer final : public ARAPlaybackRenderer | |||||
| { | { | ||||
| public: | public: | ||||
| PlaybackRenderer (ARA::PlugIn::DocumentController* dc, ProcessingLockInterface& lockInterfaceIn) | PlaybackRenderer (ARA::PlugIn::DocumentController* dc, ProcessingLockInterface& lockInterfaceIn) | ||||
| @@ -480,8 +480,8 @@ private: | |||||
| std::unique_ptr<AudioBuffer<float>> tempBuffer; | std::unique_ptr<AudioBuffer<float>> tempBuffer; | ||||
| }; | }; | ||||
| class EditorRenderer : public ARAEditorRenderer, | |||||
| private ARARegionSequence::Listener | |||||
| class EditorRenderer final : public ARAEditorRenderer, | |||||
| private ARARegionSequence::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| EditorRenderer (ARA::PlugIn::DocumentController* documentController, | EditorRenderer (ARA::PlugIn::DocumentController* documentController, | ||||
| @@ -699,8 +699,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ARADemoPluginDocumentControllerSpecialisation : public ARADocumentControllerSpecialisation, | |||||
| private ProcessingLockInterface | |||||
| class ARADemoPluginDocumentControllerSpecialisation final : public ARADocumentControllerSpecialisation, | |||||
| private ProcessingLockInterface | |||||
| { | { | ||||
| public: | public: | ||||
| using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation; | using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation; | ||||
| @@ -853,8 +853,8 @@ struct PlayHeadState | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ARADemoPluginAudioProcessorImpl : public AudioProcessor, | |||||
| public AudioProcessorARAExtension | |||||
| class ARADemoPluginAudioProcessorImpl : public AudioProcessor, | |||||
| public AudioProcessorARAExtension | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -985,14 +985,14 @@ private: | |||||
| ListenerList<Listener> listeners; | ListenerList<Listener> listeners; | ||||
| }; | }; | ||||
| class RulersView : public Component, | |||||
| public SettableTooltipClient, | |||||
| private Timer, | |||||
| private TimeToViewScaling::Listener, | |||||
| private ARAMusicalContext::Listener | |||||
| class RulersView final : public Component, | |||||
| public SettableTooltipClient, | |||||
| private Timer, | |||||
| private TimeToViewScaling::Listener, | |||||
| private ARAMusicalContext::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| class CycleMarkerComponent : public Component | |||||
| class CycleMarkerComponent final : public Component | |||||
| { | { | ||||
| void paint (Graphics& g) override | void paint (Graphics& g) override | ||||
| { | { | ||||
| @@ -1233,7 +1233,7 @@ private: | |||||
| bool isDraggingCycle = false; | bool isDraggingCycle = false; | ||||
| }; | }; | ||||
| class RulersHeader : public Component | |||||
| class RulersHeader final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| RulersHeader() | RulersHeader() | ||||
| @@ -1274,7 +1274,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct WaveformCache : private ARAAudioSource::Listener | |||||
| struct WaveformCache final : private ARAAudioSource::Listener | |||||
| { | { | ||||
| WaveformCache() : thumbnailCache (20) | WaveformCache() : thumbnailCache (20) | ||||
| { | { | ||||
| @@ -1325,12 +1325,12 @@ private: | |||||
| std::map<ARAAudioSource*, std::unique_ptr<AudioThumbnail>> thumbnails; | std::map<ARAAudioSource*, std::unique_ptr<AudioThumbnail>> thumbnails; | ||||
| }; | }; | ||||
| class PlaybackRegionView : public Component, | |||||
| public ChangeListener, | |||||
| public SettableTooltipClient, | |||||
| private ARAAudioSource::Listener, | |||||
| private ARAPlaybackRegion::Listener, | |||||
| private ARAEditorView::Listener | |||||
| class PlaybackRegionView final : public Component, | |||||
| public ChangeListener, | |||||
| public SettableTooltipClient, | |||||
| private ARAAudioSource::Listener, | |||||
| private ARAPlaybackRegion::Listener, | |||||
| private ARAEditorView::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| PlaybackRegionView (ARAEditorView& editorView, ARAPlaybackRegion& region, WaveformCache& cache) | PlaybackRegionView (ARAEditorView& editorView, ARAPlaybackRegion& region, WaveformCache& cache) | ||||
| @@ -1467,7 +1467,7 @@ public: | |||||
| } | } | ||||
| private: | private: | ||||
| class PreviewRegionOverlay : public Component | |||||
| class PreviewRegionOverlay final : public Component | |||||
| { | { | ||||
| static constexpr auto previewLength = 0.5; | static constexpr auto previewLength = 0.5; | ||||
| @@ -1522,11 +1522,11 @@ private: | |||||
| bool isSelected = false; | bool isSelected = false; | ||||
| }; | }; | ||||
| class RegionSequenceView : public Component, | |||||
| public ChangeBroadcaster, | |||||
| private TimeToViewScaling::Listener, | |||||
| private ARARegionSequence::Listener, | |||||
| private ARAPlaybackRegion::Listener | |||||
| class RegionSequenceView final : public Component, | |||||
| public ChangeBroadcaster, | |||||
| private TimeToViewScaling::Listener, | |||||
| private ARARegionSequence::Listener, | |||||
| private ARAPlaybackRegion::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| RegionSequenceView (ARAEditorView& editorView, TimeToViewScaling& scaling, ARARegionSequence& rs, WaveformCache& cache) | RegionSequenceView (ARAEditorView& editorView, TimeToViewScaling& scaling, ARARegionSequence& rs, WaveformCache& cache) | ||||
| @@ -1645,7 +1645,7 @@ private: | |||||
| double playbackDuration = 0.0; | double playbackDuration = 0.0; | ||||
| }; | }; | ||||
| class ZoomControls : public Component | |||||
| class ZoomControls final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| ZoomControls() | ZoomControls() | ||||
| @@ -1672,8 +1672,8 @@ private: | |||||
| TextButton zoomInButton { "+" }, zoomOutButton { "-" }; | TextButton zoomInButton { "+" }, zoomOutButton { "-" }; | ||||
| }; | }; | ||||
| class PlayheadPositionLabel : public Label, | |||||
| private Timer | |||||
| class PlayheadPositionLabel final : public Label, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| PlayheadPositionLabel (PlayHeadState& playHeadStateIn) | PlayheadPositionLabel (PlayHeadState& playHeadStateIn) | ||||
| @@ -1769,9 +1769,9 @@ private: | |||||
| ARAMusicalContext* selectedMusicalContext = nullptr; | ARAMusicalContext* selectedMusicalContext = nullptr; | ||||
| }; | }; | ||||
| class TrackHeader : public Component, | |||||
| private ARARegionSequence::Listener, | |||||
| private ARAEditorView::Listener | |||||
| class TrackHeader final : public Component, | |||||
| private ARARegionSequence::Listener, | |||||
| private ARAEditorView::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| TrackHeader (ARAEditorView& editorView, ARARegionSequence& regionSequenceIn) | TrackHeader (ARAEditorView& editorView, ARARegionSequence& regionSequenceIn) | ||||
| @@ -1848,7 +1848,7 @@ private: | |||||
| constexpr auto trackHeight = 60; | constexpr auto trackHeight = 60; | ||||
| class VerticalLayoutViewportContent : public Component | |||||
| class VerticalLayoutViewportContent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| void resized() override | void resized() override | ||||
| @@ -1863,7 +1863,7 @@ public: | |||||
| } | } | ||||
| }; | }; | ||||
| class VerticalLayoutViewport : public Viewport | |||||
| class VerticalLayoutViewport final : public Viewport | |||||
| { | { | ||||
| public: | public: | ||||
| VerticalLayoutViewport() | VerticalLayoutViewport() | ||||
| @@ -1887,12 +1887,12 @@ private: | |||||
| } | } | ||||
| }; | }; | ||||
| class OverlayComponent : public Component, | |||||
| private Timer, | |||||
| private TimeToViewScaling::Listener | |||||
| class OverlayComponent final : public Component, | |||||
| private Timer, | |||||
| private TimeToViewScaling::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| class PlayheadMarkerComponent : public Component | |||||
| class PlayheadMarkerComponent final : public Component | |||||
| { | { | ||||
| void paint (Graphics& g) override { g.fillAll (Colours::yellow.darker (0.2f)); } | void paint (Graphics& g) override { g.fillAll (Colours::yellow.darker (0.2f)); } | ||||
| }; | }; | ||||
| @@ -1981,11 +1981,11 @@ private: | |||||
| PlayheadMarkerComponent playheadMarker; | PlayheadMarkerComponent playheadMarker; | ||||
| }; | }; | ||||
| class DocumentView : public Component, | |||||
| public ChangeListener, | |||||
| public ARAMusicalContext::Listener, | |||||
| private ARADocument::Listener, | |||||
| private ARAEditorView::Listener | |||||
| class DocumentView final : public Component, | |||||
| public ChangeListener, | |||||
| public ARAMusicalContext::Listener, | |||||
| private ARADocument::Listener, | |||||
| private ARAEditorView::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| DocumentView (ARAEditorView& editorView, PlayHeadState& playHeadState) | DocumentView (ARAEditorView& editorView, PlayHeadState& playHeadState) | ||||
| @@ -2287,8 +2287,8 @@ private: | |||||
| }; | }; | ||||
| class ARADemoPluginProcessorEditor : public AudioProcessorEditor, | |||||
| public AudioProcessorEditorARAExtension | |||||
| class ARADemoPluginProcessorEditor final : public AudioProcessorEditor, | |||||
| public AudioProcessorEditorARAExtension | |||||
| { | { | ||||
| public: | public: | ||||
| explicit ARADemoPluginProcessorEditor (ARADemoPluginAudioProcessorImpl& p) | explicit ARADemoPluginProcessorEditor (ARADemoPluginAudioProcessorImpl& p) | ||||
| @@ -2334,7 +2334,7 @@ private: | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARADemoPluginProcessorEditor) | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARADemoPluginProcessorEditor) | ||||
| }; | }; | ||||
| class ARADemoPluginAudioProcessor : public ARADemoPluginAudioProcessorImpl | |||||
| class ARADemoPluginAudioProcessor final : public ARADemoPluginAudioProcessorImpl | |||||
| { | { | ||||
| public: | public: | ||||
| bool hasEditor() const override { return true; } | bool hasEditor() const override { return true; } | ||||
| @@ -54,7 +54,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class MaterialLookAndFeel : public LookAndFeel_V4 | |||||
| class MaterialLookAndFeel final : public LookAndFeel_V4 | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -178,8 +178,8 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AUv3SynthEditor : public AudioProcessorEditor, | |||||
| private Timer | |||||
| class AUv3SynthEditor final : public AudioProcessorEditor, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -309,7 +309,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AUv3SynthProcessor : public AudioProcessor | |||||
| class AUv3SynthProcessor final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| AUv3SynthProcessor () | AUv3SynthProcessor () | ||||
| @@ -52,7 +52,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class Arpeggiator : public AudioProcessor | |||||
| class Arpeggiator final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| @@ -55,7 +55,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| /** A demo synth sound that's just a basic sine wave.. */ | /** A demo synth sound that's just a basic sine wave.. */ | ||||
| class SineWaveSound : public SynthesiserSound | |||||
| class SineWaveSound final : public SynthesiserSound | |||||
| { | { | ||||
| public: | public: | ||||
| SineWaveSound() {} | SineWaveSound() {} | ||||
| @@ -66,7 +66,7 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| /** A simple demo synth voice that just plays a sine wave.. */ | /** A simple demo synth voice that just plays a sine wave.. */ | ||||
| class SineWaveVoice : public SynthesiserVoice | |||||
| class SineWaveVoice final : public SynthesiserVoice | |||||
| { | { | ||||
| public: | public: | ||||
| SineWaveVoice() {} | SineWaveVoice() {} | ||||
| @@ -175,7 +175,7 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| /** As the name suggest, this class does the actual audio processing. */ | /** As the name suggest, this class does the actual audio processing. */ | ||||
| class JuceDemoPluginAudioProcessor : public AudioProcessor | |||||
| class JuceDemoPluginAudioProcessor final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -362,9 +362,9 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| /** This is the editor component that our filter will display. */ | /** This is the editor component that our filter will display. */ | ||||
| class JuceDemoPluginAudioProcessorEditor : public AudioProcessorEditor, | |||||
| private Timer, | |||||
| private Value::Listener | |||||
| class JuceDemoPluginAudioProcessorEditor final : public AudioProcessorEditor, | |||||
| private Timer, | |||||
| private Value::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| JuceDemoPluginAudioProcessorEditor (JuceDemoPluginAudioProcessor& owner) | JuceDemoPluginAudioProcessorEditor (JuceDemoPluginAudioProcessor& owner) | ||||
| @@ -143,15 +143,15 @@ void resetAll (Processors&... processors) | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| class DspModulePluginDemo : public AudioProcessor, | |||||
| private ValueTree::Listener | |||||
| class DspModulePluginDemo : public AudioProcessor, | |||||
| private ValueTree::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| DspModulePluginDemo() | DspModulePluginDemo() | ||||
| : DspModulePluginDemo (AudioProcessorValueTreeState::ParameterLayout{}) {} | : DspModulePluginDemo (AudioProcessorValueTreeState::ParameterLayout{}) {} | ||||
| //============================================================================== | //============================================================================== | ||||
| void prepareToPlay (double sampleRate, int samplesPerBlock) override | |||||
| void prepareToPlay (double sampleRate, int samplesPerBlock) final | |||||
| { | { | ||||
| const auto channels = jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()); | const auto channels = jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()); | ||||
| @@ -163,15 +163,15 @@ public: | |||||
| reset(); | reset(); | ||||
| } | } | ||||
| void reset() override | |||||
| void reset() final | |||||
| { | { | ||||
| chain.reset(); | chain.reset(); | ||||
| update(); | update(); | ||||
| } | } | ||||
| void releaseResources() override {} | |||||
| void releaseResources() final {} | |||||
| void processBlock (AudioBuffer<float>& buffer, MidiBuffer&) override | |||||
| void processBlock (AudioBuffer<float>& buffer, MidiBuffer&) final | |||||
| { | { | ||||
| if (jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()) == 0) | if (jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()) == 0) | ||||
| return; | return; | ||||
| @@ -195,43 +195,43 @@ public: | |||||
| chain.process (dsp::ProcessContextReplacing<float> (inoutBlock)); | chain.process (dsp::ProcessContextReplacing<float> (inoutBlock)); | ||||
| } | } | ||||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) override {} | |||||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) final {} | |||||
| //============================================================================== | //============================================================================== | ||||
| AudioProcessorEditor* createEditor() override { return nullptr; } | AudioProcessorEditor* createEditor() override { return nullptr; } | ||||
| bool hasEditor() const override { return false; } | bool hasEditor() const override { return false; } | ||||
| //============================================================================== | //============================================================================== | ||||
| const String getName() const override { return "DSPModulePluginDemo"; } | |||||
| const String getName() const final { return "DSPModulePluginDemo"; } | |||||
| bool acceptsMidi() const override { return false; } | |||||
| bool producesMidi() const override { return false; } | |||||
| bool isMidiEffect() const override { return false; } | |||||
| bool acceptsMidi() const final { return false; } | |||||
| bool producesMidi() const final { return false; } | |||||
| bool isMidiEffect() const final { return false; } | |||||
| double getTailLengthSeconds() const override { return 0.0; } | |||||
| double getTailLengthSeconds() const final { return 0.0; } | |||||
| //============================================================================== | //============================================================================== | ||||
| int getNumPrograms() override { return 1; } | |||||
| int getCurrentProgram() override { return 0; } | |||||
| void setCurrentProgram (int) override {} | |||||
| const String getProgramName (int) override { return "None"; } | |||||
| int getNumPrograms() final { return 1; } | |||||
| int getCurrentProgram() final { return 0; } | |||||
| void setCurrentProgram (int) final {} | |||||
| const String getProgramName (int) final { return "None"; } | |||||
| void changeProgramName (int, const String&) override {} | |||||
| void changeProgramName (int, const String&) final {} | |||||
| //============================================================================== | //============================================================================== | ||||
| bool isBusesLayoutSupported (const BusesLayout& layout) const override | |||||
| bool isBusesLayoutSupported (const BusesLayout& layout) const final | |||||
| { | { | ||||
| return layout == BusesLayout { { AudioChannelSet::stereo() }, | return layout == BusesLayout { { AudioChannelSet::stereo() }, | ||||
| { AudioChannelSet::stereo() } }; | { AudioChannelSet::stereo() } }; | ||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| void getStateInformation (MemoryBlock& destData) override | |||||
| void getStateInformation (MemoryBlock& destData) final | |||||
| { | { | ||||
| copyXmlToBinary (*apvts.copyState().createXml(), destData); | copyXmlToBinary (*apvts.copyState().createXml(), destData); | ||||
| } | } | ||||
| void setStateInformation (const void* data, int sizeInBytes) override | |||||
| void setStateInformation (const void* data, int sizeInBytes) final | |||||
| { | { | ||||
| apvts.replaceState (ValueTree::fromXml (*getXmlFromBinary (data, sizeInBytes))); | apvts.replaceState (ValueTree::fromXml (*getXmlFromBinary (data, sizeInBytes))); | ||||
| } | } | ||||
| @@ -811,7 +811,7 @@ private: | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| void valueTreePropertyChanged (ValueTree&, const Identifier&) override | |||||
| void valueTreePropertyChanged (ValueTree&, const Identifier&) final | |||||
| { | { | ||||
| requiresUpdate.store (true); | requiresUpdate.store (true); | ||||
| } | } | ||||
| @@ -1498,7 +1498,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DspModulePluginDemoEditor : public AudioProcessorEditor | |||||
| class DspModulePluginDemoEditor final : public AudioProcessorEditor | |||||
| { | { | ||||
| public: | public: | ||||
| explicit DspModulePluginDemoEditor (DspModulePluginDemo& p) | explicit DspModulePluginDemoEditor (DspModulePluginDemo& p) | ||||
| @@ -1637,7 +1637,7 @@ private: | |||||
| RangedAudioParameter& param; | RangedAudioParameter& param; | ||||
| }; | }; | ||||
| class AttachedSlider : public ComponentWithParamMenu | |||||
| class AttachedSlider final : public ComponentWithParamMenu | |||||
| { | { | ||||
| public: | public: | ||||
| AttachedSlider (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | AttachedSlider (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | ||||
| @@ -1663,7 +1663,7 @@ private: | |||||
| SliderParameterAttachment attachment; | SliderParameterAttachment attachment; | ||||
| }; | }; | ||||
| class AttachedToggle : public ComponentWithParamMenu | |||||
| class AttachedToggle final : public ComponentWithParamMenu | |||||
| { | { | ||||
| public: | public: | ||||
| AttachedToggle (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | AttachedToggle (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | ||||
| @@ -1682,7 +1682,7 @@ private: | |||||
| ButtonParameterAttachment attachment; | ButtonParameterAttachment attachment; | ||||
| }; | }; | ||||
| class AttachedCombo : public ComponentWithParamMenu | |||||
| class AttachedCombo final : public ComponentWithParamMenu | |||||
| { | { | ||||
| public: | public: | ||||
| AttachedCombo (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | AttachedCombo (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | ||||
| @@ -1795,7 +1795,7 @@ private: | |||||
| grid.performLayout (bounds); | grid.performLayout (bounds); | ||||
| } | } | ||||
| struct BasicControls : public Component | |||||
| struct BasicControls final : public Component | |||||
| { | { | ||||
| explicit BasicControls (AudioProcessorEditor& editor, | explicit BasicControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::MainGroup& state) | const DspModulePluginDemo::ParameterReferences::MainGroup& state) | ||||
| @@ -1814,7 +1814,7 @@ private: | |||||
| AttachedSlider pan, input, output; | AttachedSlider pan, input, output; | ||||
| }; | }; | ||||
| struct DistortionControls : public Component | |||||
| struct DistortionControls final : public Component | |||||
| { | { | ||||
| explicit DistortionControls (AudioProcessorEditor& editor, | explicit DistortionControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::DistortionGroup& state) | const DspModulePluginDemo::ParameterReferences::DistortionGroup& state) | ||||
| @@ -1840,7 +1840,7 @@ private: | |||||
| AttachedCombo type, oversampling; | AttachedCombo type, oversampling; | ||||
| }; | }; | ||||
| struct ConvolutionControls : public Component | |||||
| struct ConvolutionControls final : public Component | |||||
| { | { | ||||
| explicit ConvolutionControls (AudioProcessorEditor& editor, | explicit ConvolutionControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::ConvolutionGroup& state) | const DspModulePluginDemo::ParameterReferences::ConvolutionGroup& state) | ||||
| @@ -1860,7 +1860,7 @@ private: | |||||
| AttachedSlider mix; | AttachedSlider mix; | ||||
| }; | }; | ||||
| struct MultiBandControls : public Component | |||||
| struct MultiBandControls final : public Component | |||||
| { | { | ||||
| explicit MultiBandControls (AudioProcessorEditor& editor, | explicit MultiBandControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::MultiBandGroup& state) | const DspModulePluginDemo::ParameterReferences::MultiBandGroup& state) | ||||
| @@ -1881,7 +1881,7 @@ private: | |||||
| AttachedSlider low, high, lRFreq; | AttachedSlider low, high, lRFreq; | ||||
| }; | }; | ||||
| struct CompressorControls : public Component | |||||
| struct CompressorControls final : public Component | |||||
| { | { | ||||
| explicit CompressorControls (AudioProcessorEditor& editor, | explicit CompressorControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::CompressorGroup& state) | const DspModulePluginDemo::ParameterReferences::CompressorGroup& state) | ||||
| @@ -1903,7 +1903,7 @@ private: | |||||
| AttachedSlider threshold, ratio, attack, release; | AttachedSlider threshold, ratio, attack, release; | ||||
| }; | }; | ||||
| struct NoiseGateControls : public Component | |||||
| struct NoiseGateControls final : public Component | |||||
| { | { | ||||
| explicit NoiseGateControls (AudioProcessorEditor& editor, | explicit NoiseGateControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::NoiseGateGroup& state) | const DspModulePluginDemo::ParameterReferences::NoiseGateGroup& state) | ||||
| @@ -1925,7 +1925,7 @@ private: | |||||
| AttachedSlider threshold, ratio, attack, release; | AttachedSlider threshold, ratio, attack, release; | ||||
| }; | }; | ||||
| struct LimiterControls : public Component | |||||
| struct LimiterControls final : public Component | |||||
| { | { | ||||
| explicit LimiterControls (AudioProcessorEditor& editor, | explicit LimiterControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::LimiterGroup& state) | const DspModulePluginDemo::ParameterReferences::LimiterGroup& state) | ||||
| @@ -1945,7 +1945,7 @@ private: | |||||
| AttachedSlider threshold, release; | AttachedSlider threshold, release; | ||||
| }; | }; | ||||
| struct DirectDelayControls : public Component | |||||
| struct DirectDelayControls final : public Component | |||||
| { | { | ||||
| explicit DirectDelayControls (AudioProcessorEditor& editor, | explicit DirectDelayControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::DirectDelayGroup& state) | const DspModulePluginDemo::ParameterReferences::DirectDelayGroup& state) | ||||
| @@ -1968,7 +1968,7 @@ private: | |||||
| AttachedSlider delay, smooth, mix; | AttachedSlider delay, smooth, mix; | ||||
| }; | }; | ||||
| struct DelayEffectControls : public Component | |||||
| struct DelayEffectControls final : public Component | |||||
| { | { | ||||
| explicit DelayEffectControls (AudioProcessorEditor& editor, | explicit DelayEffectControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::DelayEffectGroup& state) | const DspModulePluginDemo::ParameterReferences::DelayEffectGroup& state) | ||||
| @@ -1993,7 +1993,7 @@ private: | |||||
| AttachedSlider value, smooth, lowpass, feedback, mix; | AttachedSlider value, smooth, lowpass, feedback, mix; | ||||
| }; | }; | ||||
| struct PhaserControls : public Component | |||||
| struct PhaserControls final : public Component | |||||
| { | { | ||||
| explicit PhaserControls (AudioProcessorEditor& editor, | explicit PhaserControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::PhaserGroup& state) | const DspModulePluginDemo::ParameterReferences::PhaserGroup& state) | ||||
| @@ -2016,7 +2016,7 @@ private: | |||||
| AttachedSlider rate, depth, centre, feedback, mix; | AttachedSlider rate, depth, centre, feedback, mix; | ||||
| }; | }; | ||||
| struct ChorusControls : public Component | |||||
| struct ChorusControls final : public Component | |||||
| { | { | ||||
| explicit ChorusControls (AudioProcessorEditor& editor, | explicit ChorusControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::ChorusGroup& state) | const DspModulePluginDemo::ParameterReferences::ChorusGroup& state) | ||||
| @@ -2039,7 +2039,7 @@ private: | |||||
| AttachedSlider rate, depth, centre, feedback, mix; | AttachedSlider rate, depth, centre, feedback, mix; | ||||
| }; | }; | ||||
| struct LadderControls : public Component | |||||
| struct LadderControls final : public Component | |||||
| { | { | ||||
| explicit LadderControls (AudioProcessorEditor& editor, | explicit LadderControls (AudioProcessorEditor& editor, | ||||
| const DspModulePluginDemo::ParameterReferences::LadderGroup& state) | const DspModulePluginDemo::ParameterReferences::LadderGroup& state) | ||||
| @@ -2088,7 +2088,7 @@ private: | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DspModulePluginDemoEditor) | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DspModulePluginDemoEditor) | ||||
| }; | }; | ||||
| struct DspModulePluginDemoAudioProcessor : public DspModulePluginDemo | |||||
| struct DspModulePluginDemoAudioProcessor final : public DspModulePluginDemo | |||||
| { | { | ||||
| AudioProcessorEditor* createEditor() override | AudioProcessorEditor* createEditor() override | ||||
| { | { | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class GainProcessor : public AudioProcessor | |||||
| class GainProcessor final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| @@ -88,7 +88,7 @@ public: | |||||
| pluginList.addChangeListener (this); | pluginList.addChangeListener (this); | ||||
| } | } | ||||
| bool isBusesLayoutSupported (const BusesLayout& layouts) const override | |||||
| bool isBusesLayoutSupported (const BusesLayout& layouts) const final | |||||
| { | { | ||||
| const auto& mainOutput = layouts.getMainOutputChannelSet(); | const auto& mainOutput = layouts.getMainOutputChannelSet(); | ||||
| const auto& mainInput = layouts.getMainInputChannelSet(); | const auto& mainInput = layouts.getMainInputChannelSet(); | ||||
| @@ -102,7 +102,7 @@ public: | |||||
| return true; | return true; | ||||
| } | } | ||||
| void prepareToPlay (double sr, int bs) override | |||||
| void prepareToPlay (double sr, int bs) final | |||||
| { | { | ||||
| const ScopedLock sl (innerMutex); | const ScopedLock sl (innerMutex); | ||||
| @@ -115,7 +115,7 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| void releaseResources() override | |||||
| void releaseResources() final | |||||
| { | { | ||||
| const ScopedLock sl (innerMutex); | const ScopedLock sl (innerMutex); | ||||
| @@ -125,7 +125,7 @@ public: | |||||
| inner->releaseResources(); | inner->releaseResources(); | ||||
| } | } | ||||
| void reset() override | |||||
| void reset() final | |||||
| { | { | ||||
| const ScopedLock sl (innerMutex); | const ScopedLock sl (innerMutex); | ||||
| @@ -136,12 +136,12 @@ public: | |||||
| // In this example, we don't actually pass any audio through the inner processor. | // In this example, we don't actually pass any audio through the inner processor. | ||||
| // In a 'real' plugin, we'd need to add some synchronisation to ensure that the inner | // In a 'real' plugin, we'd need to add some synchronisation to ensure that the inner | ||||
| // plugin instance was never modified (deleted, replaced etc.) during a call to processBlock. | // plugin instance was never modified (deleted, replaced etc.) during a call to processBlock. | ||||
| void processBlock (AudioBuffer<float>&, MidiBuffer&) override | |||||
| void processBlock (AudioBuffer<float>&, MidiBuffer&) final | |||||
| { | { | ||||
| jassert (! isUsingDoublePrecision()); | jassert (! isUsingDoublePrecision()); | ||||
| } | } | ||||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) override | |||||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) final | |||||
| { | { | ||||
| jassert (isUsingDoublePrecision()); | jassert (isUsingDoublePrecision()); | ||||
| } | } | ||||
| @@ -149,18 +149,18 @@ public: | |||||
| bool hasEditor() const override { return false; } | bool hasEditor() const override { return false; } | ||||
| AudioProcessorEditor* createEditor() override { return nullptr; } | AudioProcessorEditor* createEditor() override { return nullptr; } | ||||
| const String getName() const override { return "HostPluginDemo"; } | |||||
| bool acceptsMidi() const override { return true; } | |||||
| bool producesMidi() const override { return true; } | |||||
| double getTailLengthSeconds() const override { return 0.0; } | |||||
| const String getName() const final { return "HostPluginDemo"; } | |||||
| bool acceptsMidi() const final { return true; } | |||||
| bool producesMidi() const final { return true; } | |||||
| double getTailLengthSeconds() const final { return 0.0; } | |||||
| int getNumPrograms() override { return 0; } | |||||
| int getCurrentProgram() override { return 0; } | |||||
| void setCurrentProgram (int) override {} | |||||
| const String getProgramName (int) override { return "None"; } | |||||
| void changeProgramName (int, const String&) override {} | |||||
| int getNumPrograms() final { return 0; } | |||||
| int getCurrentProgram() final { return 0; } | |||||
| void setCurrentProgram (int) final {} | |||||
| const String getProgramName (int) final { return "None"; } | |||||
| void changeProgramName (int, const String&) final {} | |||||
| void getStateInformation (MemoryBlock& destData) override | |||||
| void getStateInformation (MemoryBlock& destData) final | |||||
| { | { | ||||
| const ScopedLock sl (innerMutex); | const ScopedLock sl (innerMutex); | ||||
| @@ -185,7 +185,7 @@ public: | |||||
| destData.replaceAll (text.toRawUTF8(), text.getNumBytesAsUTF8()); | destData.replaceAll (text.toRawUTF8(), text.getNumBytesAsUTF8()); | ||||
| } | } | ||||
| void setStateInformation (const void* data, int sizeInBytes) override | |||||
| void setStateInformation (const void* data, int sizeInBytes) final | |||||
| { | { | ||||
| const ScopedLock sl (innerMutex); | const ScopedLock sl (innerMutex); | ||||
| @@ -285,7 +285,7 @@ private: | |||||
| static constexpr const char* innerStateTag = "inner_state"; | static constexpr const char* innerStateTag = "inner_state"; | ||||
| static constexpr const char* editorStyleTag = "editor_style"; | static constexpr const char* editorStyleTag = "editor_style"; | ||||
| void changeListenerCallback (ChangeBroadcaster* source) override | |||||
| void changeListenerCallback (ChangeBroadcaster* source) final | |||||
| { | { | ||||
| if (source != &pluginList) | if (source != &pluginList) | ||||
| return; | return; | ||||
| @@ -312,7 +312,7 @@ static void doLayout (Component* main, Component& bottom, int bottomHeight, Rect | |||||
| grid.performLayout (bounds); | grid.performLayout (bounds); | ||||
| } | } | ||||
| class PluginLoaderComponent : public Component | |||||
| class PluginLoaderComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| template <typename Callback> | template <typename Callback> | ||||
| @@ -348,7 +348,7 @@ public: | |||||
| } | } | ||||
| private: | private: | ||||
| struct Buttons : public Component | |||||
| struct Buttons final : public Component | |||||
| { | { | ||||
| Buttons() | Buttons() | ||||
| { | { | ||||
| @@ -390,7 +390,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class PluginEditorComponent : public Component | |||||
| class PluginEditorComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| template <typename Callback> | template <typename Callback> | ||||
| @@ -435,7 +435,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ScaledDocumentWindow : public DocumentWindow | |||||
| class ScaledDocumentWindow final : public DocumentWindow | |||||
| { | { | ||||
| public: | public: | ||||
| ScaledDocumentWindow (Colour bg, float scale) | ScaledDocumentWindow (Colour bg, float scale) | ||||
| @@ -448,7 +448,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class HostAudioProcessorEditor : public AudioProcessorEditor | |||||
| class HostAudioProcessorEditor final : public AudioProcessorEditor | |||||
| { | { | ||||
| public: | public: | ||||
| explicit HostAudioProcessorEditor (HostAudioProcessorImpl& owner) | explicit HostAudioProcessorEditor (HostAudioProcessorImpl& owner) | ||||
| @@ -576,7 +576,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class HostAudioProcessor : public HostAudioProcessorImpl | |||||
| class HostAudioProcessor final : public HostAudioProcessorImpl | |||||
| { | { | ||||
| public: | public: | ||||
| bool hasEditor() const override { return true; } | bool hasEditor() const override { return true; } | ||||
| @@ -113,8 +113,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MidiTable : public Component, | |||||
| private TableListBoxModel | |||||
| class MidiTable final : public Component, | |||||
| private TableListBoxModel | |||||
| { | { | ||||
| public: | public: | ||||
| MidiTable (MidiListModel& m) | MidiTable (MidiListModel& m) | ||||
| @@ -220,8 +220,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MidiLoggerPluginDemoProcessor : public AudioProcessor, | |||||
| private Timer | |||||
| class MidiLoggerPluginDemoProcessor final : public AudioProcessor, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| MidiLoggerPluginDemoProcessor() | MidiLoggerPluginDemoProcessor() | ||||
| @@ -268,8 +268,8 @@ public: | |||||
| } | } | ||||
| private: | private: | ||||
| class Editor : public AudioProcessorEditor, | |||||
| private Value::Listener | |||||
| class Editor final : public AudioProcessorEditor, | |||||
| private Value::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| explicit Editor (MidiLoggerPluginDemoProcessor& ownerIn) | explicit Editor (MidiLoggerPluginDemoProcessor& ownerIn) | ||||
| @@ -53,7 +53,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class MultiOutSynth : public AudioProcessor | |||||
| class MultiOutSynth final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| enum | enum | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class NoiseGate : public AudioProcessor | |||||
| class NoiseGate final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -111,7 +111,7 @@ struct EmbeddedViewListener | |||||
| JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor") | JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor") | ||||
| //============================================================================== | //============================================================================== | ||||
| class EmbeddedUI : public reaper::IReaperUIEmbedInterface | |||||
| class EmbeddedUI final : public reaper::IReaperUIEmbedInterface | |||||
| { | { | ||||
| public: | public: | ||||
| explicit EmbeddedUI (EmbeddedViewListener& demo) : listener (demo) {} | explicit EmbeddedUI (EmbeddedViewListener& demo) : listener (demo) {} | ||||
| @@ -146,7 +146,7 @@ private: | |||||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | JUCE_END_IGNORE_WARNINGS_GCC_LIKE | ||||
| class VST2Extensions : public VST2ClientExtensions | |||||
| class VST2Extensions final : public VST2ClientExtensions | |||||
| { | { | ||||
| public: | public: | ||||
| explicit VST2Extensions (EmbeddedViewListener& l) | explicit VST2Extensions (EmbeddedViewListener& l) | ||||
| @@ -187,7 +187,7 @@ private: | |||||
| EmbeddedViewListener& listener; | EmbeddedViewListener& listener; | ||||
| }; | }; | ||||
| class VST3Extensions : public VST3ClientExtensions | |||||
| class VST3Extensions final : public VST3ClientExtensions | |||||
| { | { | ||||
| public: | public: | ||||
| explicit VST3Extensions (EmbeddedViewListener& l) | explicit VST3Extensions (EmbeddedViewListener& l) | ||||
| @@ -222,7 +222,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class Editor : public AudioProcessorEditor | |||||
| class Editor final : public AudioProcessorEditor | |||||
| { | { | ||||
| public: | public: | ||||
| explicit Editor (AudioProcessor& proc, | explicit Editor (AudioProcessor& proc, | ||||
| @@ -258,9 +258,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ReaperEmbeddedViewDemo : public AudioProcessor, | |||||
| private EmbeddedViewListener, | |||||
| private Timer | |||||
| class ReaperEmbeddedViewDemo final : public AudioProcessor, | |||||
| private EmbeddedViewListener, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| ReaperEmbeddedViewDemo() | ReaperEmbeddedViewDemo() | ||||
| @@ -111,8 +111,8 @@ struct Command | |||||
| }; | }; | ||||
| template <typename Proc, typename Func> | template <typename Proc, typename Func> | ||||
| class TemplateCommand : public Command<Proc>, | |||||
| private Func | |||||
| class TemplateCommand final : public Command<Proc>, | |||||
| private Func | |||||
| { | { | ||||
| public: | public: | ||||
| template <typename FuncPrime> | template <typename FuncPrime> | ||||
| @@ -257,7 +257,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPESamplerVoice : public MPESynthesiserVoice | |||||
| class MPESamplerVoice final : public MPESynthesiserVoice | |||||
| { | { | ||||
| public: | public: | ||||
| explicit MPESamplerVoice (std::shared_ptr<const MPESamplerSound> sound) | explicit MPESamplerVoice (std::shared_ptr<const MPESamplerSound> sound) | ||||
| @@ -501,7 +501,7 @@ private: | |||||
| }; | }; | ||||
| template <typename Contents> | template <typename Contents> | ||||
| class ReferenceCountingAdapter : public ReferenceCountedObject | |||||
| class ReferenceCountingAdapter final : public ReferenceCountedObject | |||||
| { | { | ||||
| public: | public: | ||||
| template <typename... Args> | template <typename... Args> | ||||
| @@ -564,7 +564,7 @@ public: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MemoryAudioFormatReaderFactory : public AudioFormatReaderFactory | |||||
| class MemoryAudioFormatReaderFactory final : public AudioFormatReaderFactory | |||||
| { | { | ||||
| public: | public: | ||||
| MemoryAudioFormatReaderFactory (const void* sampleDataIn, size_t dataSizeIn) | MemoryAudioFormatReaderFactory (const void* sampleDataIn, size_t dataSizeIn) | ||||
| @@ -588,7 +588,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class FileAudioFormatReaderFactory : public AudioFormatReaderFactory | |||||
| class FileAudioFormatReaderFactory final : public AudioFormatReaderFactory | |||||
| { | { | ||||
| public: | public: | ||||
| explicit FileAudioFormatReaderFactory (File fileIn) | explicit FileAudioFormatReaderFactory (File fileIn) | ||||
| @@ -643,20 +643,20 @@ struct GenericVariantConverter | |||||
| }; | }; | ||||
| template <typename Numeric> | template <typename Numeric> | ||||
| struct VariantConverter<Range<Numeric>> : GenericVariantConverter<Range<Numeric>> {}; | |||||
| struct VariantConverter<Range<Numeric>> final : GenericVariantConverter<Range<Numeric>> {}; | |||||
| template<> | template<> | ||||
| struct VariantConverter<MPEZoneLayout> : GenericVariantConverter<MPEZoneLayout> {}; | |||||
| struct VariantConverter<MPEZoneLayout> final : GenericVariantConverter<MPEZoneLayout> {}; | |||||
| template<> | template<> | ||||
| struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>> | |||||
| struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>> final | |||||
| : GenericVariantConverter<std::shared_ptr<AudioFormatReaderFactory>> | : GenericVariantConverter<std::shared_ptr<AudioFormatReaderFactory>> | ||||
| {}; | {}; | ||||
| } // namespace juce | } // namespace juce | ||||
| //============================================================================== | //============================================================================== | ||||
| class VisibleRangeDataModel : private ValueTree::Listener | |||||
| class VisibleRangeDataModel final : private ValueTree::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| class Listener | class Listener | ||||
| @@ -757,7 +757,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPESettingsDataModel : private ValueTree::Listener | |||||
| class MPESettingsDataModel final : private ValueTree::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| class Listener | class Listener | ||||
| @@ -947,7 +947,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DataModel : private ValueTree::Listener | |||||
| class DataModel final : private ValueTree::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| class Listener | class Listener | ||||
| @@ -1132,8 +1132,8 @@ constexpr int controlSeparation = 6; | |||||
| } // namespace | } // namespace | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPELegacySettingsComponent final : public Component, | |||||
| private MPESettingsDataModel::Listener | |||||
| class MPELegacySettingsComponent final : public Component, | |||||
| private MPESettingsDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| explicit MPELegacySettingsComponent (const MPESettingsDataModel& model, | explicit MPELegacySettingsComponent (const MPESettingsDataModel& model, | ||||
| @@ -1256,8 +1256,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPENewSettingsComponent final : public Component, | |||||
| private MPESettingsDataModel::Listener | |||||
| class MPENewSettingsComponent final : public Component, | |||||
| private MPESettingsDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| MPENewSettingsComponent (const MPESettingsDataModel& model, | MPENewSettingsComponent (const MPESettingsDataModel& model, | ||||
| @@ -1352,8 +1352,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MPESettingsComponent final : public Component, | |||||
| private MPESettingsDataModel::Listener | |||||
| class MPESettingsComponent final : public Component, | |||||
| private MPESettingsDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| MPESettingsComponent (const MPESettingsDataModel& model, | MPESettingsComponent (const MPESettingsDataModel& model, | ||||
| @@ -1446,7 +1446,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class LoopPointMarker : public Component | |||||
| class LoopPointMarker final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| using MouseCallback = std::function<void (LoopPointMarker&, const MouseEvent&)>; | using MouseCallback = std::function<void (LoopPointMarker&, const MouseEvent&)>; | ||||
| @@ -1523,8 +1523,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class Ruler : public Component, | |||||
| private VisibleRangeDataModel::Listener | |||||
| class Ruler final : public Component, | |||||
| private VisibleRangeDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| explicit Ruler (const VisibleRangeDataModel& model) | explicit Ruler (const VisibleRangeDataModel& model) | ||||
| @@ -1614,9 +1614,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class LoopPointsOverlay : public Component, | |||||
| private DataModel::Listener, | |||||
| private VisibleRangeDataModel::Listener | |||||
| class LoopPointsOverlay final : public Component, | |||||
| private DataModel::Listener, | |||||
| private VisibleRangeDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| LoopPointsOverlay (const DataModel& dModel, | LoopPointsOverlay (const DataModel& dModel, | ||||
| @@ -1715,9 +1715,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class PlaybackPositionOverlay : public Component, | |||||
| private Timer, | |||||
| private VisibleRangeDataModel::Listener | |||||
| class PlaybackPositionOverlay final : public Component, | |||||
| private Timer, | |||||
| private VisibleRangeDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| using Provider = std::function<std::vector<float>()>; | using Provider = std::function<std::vector<float>()>; | ||||
| @@ -1762,10 +1762,10 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class WaveformView : public Component, | |||||
| private ChangeListener, | |||||
| private DataModel::Listener, | |||||
| private VisibleRangeDataModel::Listener | |||||
| class WaveformView final : public Component, | |||||
| private ChangeListener, | |||||
| private DataModel::Listener, | |||||
| private VisibleRangeDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| WaveformView (const DataModel& model, | WaveformView (const DataModel& model, | ||||
| @@ -1853,8 +1853,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class WaveformEditor : public Component, | |||||
| private DataModel::Listener | |||||
| class WaveformEditor final : public Component, | |||||
| private DataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| WaveformEditor (const DataModel& model, | WaveformEditor (const DataModel& model, | ||||
| @@ -1909,9 +1909,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MainSamplerView : public Component, | |||||
| private DataModel::Listener, | |||||
| private ChangeListener | |||||
| class MainSamplerView final : public Component, | |||||
| private DataModel::Listener, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| MainSamplerView (const DataModel& model, | MainSamplerView (const DataModel& model, | ||||
| @@ -2103,7 +2103,7 @@ struct ProcessorState | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class SamplerAudioProcessor : public AudioProcessor | |||||
| class SamplerAudioProcessor final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| SamplerAudioProcessor() | SamplerAudioProcessor() | ||||
| @@ -2366,10 +2366,10 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| class SamplerAudioProcessorEditor : public AudioProcessorEditor, | |||||
| public FileDragAndDropTarget, | |||||
| private DataModel::Listener, | |||||
| private MPESettingsDataModel::Listener | |||||
| class SamplerAudioProcessorEditor final : public AudioProcessorEditor, | |||||
| public FileDragAndDropTarget, | |||||
| private DataModel::Listener, | |||||
| private MPESettingsDataModel::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| SamplerAudioProcessorEditor (SamplerAudioProcessor& p, ProcessorState state) | SamplerAudioProcessorEditor (SamplerAudioProcessor& p, ProcessorState state) | ||||
| @@ -105,7 +105,7 @@ public: | |||||
| samplesPlayed = samplesToPlay; | samplesPlayed = samplesToPlay; | ||||
| } | } | ||||
| bool applyBusLayouts (const BusesLayout& layouts) override | |||||
| bool applyBusLayouts (const BusesLayout& layouts) final | |||||
| { | { | ||||
| // Some very badly-behaved hosts will call this during processing! | // Some very badly-behaved hosts will call this during processing! | ||||
| const SpinLock::ScopedLockType lock (levelMutex); | const SpinLock::ScopedLockType lock (levelMutex); | ||||
| @@ -225,8 +225,8 @@ inline void configureLabel (Label& label, const AudioProcessor::Bus* layout) | |||||
| label.setColour (Label::textColourId, textColour); | label.setColour (Label::textColourId, textColour); | ||||
| } | } | ||||
| class InputBusViewer : public Component, | |||||
| private Timer | |||||
| class InputBusViewer final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| InputBusViewer (ProcessorWithLevels& proc, int busNumber) | InputBusViewer (ProcessorWithLevels& proc, int busNumber) | ||||
| @@ -306,7 +306,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class OutputBusViewer : public Component | |||||
| class OutputBusViewer final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| OutputBusViewer (ProcessorWithLevels& proc, int busNumber) | OutputBusViewer (ProcessorWithLevels& proc, int busNumber) | ||||
| @@ -332,7 +332,7 @@ public: | |||||
| channelButtons.emplace_back (channelName, channelName); | channelButtons.emplace_back (channelName, channelName); | ||||
| auto& newButton = channelButtons.back(); | auto& newButton = channelButtons.back(); | ||||
| newButton.onClick = [&proc = processor, bus = bus, i] { proc.channelButtonClicked (bus, i); }; | |||||
| newButton.onClick = [&p = processor, b = bus, i] { p.channelButtonClicked (b, i); }; | |||||
| addAndMakeVisible (newButton); | addAndMakeVisible (newButton); | ||||
| } | } | ||||
| @@ -376,7 +376,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class SurroundEditor : public AudioProcessorEditor | |||||
| class SurroundEditor final : public AudioProcessorEditor | |||||
| { | { | ||||
| public: | public: | ||||
| explicit SurroundEditor (ProcessorWithLevels& parent) | explicit SurroundEditor (ProcessorWithLevels& parent) | ||||
| @@ -454,7 +454,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct SurroundProcessor : public ProcessorWithLevels | |||||
| struct SurroundProcessor final : public ProcessorWithLevels | |||||
| { | { | ||||
| AudioProcessorEditor* createEditor() override { return new SurroundEditor (*this); } | AudioProcessorEditor* createEditor() override { return new SurroundEditor (*this); } | ||||
| bool hasEditor() const override { return true; } | bool hasEditor() const override { return true; } | ||||
| @@ -58,7 +58,7 @@ enum DemoAnalyticsEventTypes | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class GoogleAnalyticsDestination : public ThreadedAnalyticsDestination | |||||
| class GoogleAnalyticsDestination final : public ThreadedAnalyticsDestination | |||||
| { | { | ||||
| public: | public: | ||||
| GoogleAnalyticsDestination() | GoogleAnalyticsDestination() | ||||
| @@ -298,7 +298,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AnalyticsCollectionDemo : public Component | |||||
| class AnalyticsCollectionDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -101,8 +101,8 @@ JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||||
| /** This list box just displays a StringArray and broadcasts a change message when the | /** This list box just displays a StringArray and broadcasts a change message when the | ||||
| selected row changes. | selected row changes. | ||||
| */ | */ | ||||
| class Box2DTestList : public ListBoxModel, | |||||
| public ChangeBroadcaster | |||||
| class Box2DTestList final : public ListBoxModel, | |||||
| public ChangeBroadcaster | |||||
| { | { | ||||
| public: | public: | ||||
| Box2DTestList (const StringArray& testList) | Box2DTestList (const StringArray& testList) | ||||
| @@ -134,7 +134,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct Box2DRenderComponent : public Component | |||||
| struct Box2DRenderComponent final : public Component | |||||
| { | { | ||||
| Box2DRenderComponent() | Box2DRenderComponent() | ||||
| { | { | ||||
| @@ -159,9 +159,9 @@ struct Box2DRenderComponent : public Component | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class Box2DDemo : public Component, | |||||
| private Timer, | |||||
| private ChangeListener | |||||
| class Box2DDemo final : public Component, | |||||
| private Timer, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| enum Demos | enum Demos | ||||
| @@ -76,8 +76,8 @@ static String valueTreeToString (const ValueTree& v) | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| class ChildProcessDemo : public Component, | |||||
| private MessageListener | |||||
| class ChildProcessDemo final : public Component, | |||||
| private MessageListener | |||||
| { | { | ||||
| public: | public: | ||||
| ChildProcessDemo() | ChildProcessDemo() | ||||
| @@ -174,9 +174,9 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| // This class is used by the main process, acting as the coordinator and receiving messages | // This class is used by the main process, acting as the coordinator and receiving messages | ||||
| // from the worker process. | // from the worker process. | ||||
| class DemoCoordinatorProcess : public ChildProcessCoordinator, | |||||
| private DeletedAtShutdown, | |||||
| private AsyncUpdater | |||||
| class DemoCoordinatorProcess final : public ChildProcessCoordinator, | |||||
| private DeletedAtShutdown, | |||||
| private AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| DemoCoordinatorProcess (ChildProcessDemo& d) : demo (d) {} | DemoCoordinatorProcess (ChildProcessDemo& d) : demo (d) {} | ||||
| @@ -257,8 +257,8 @@ private: | |||||
| /* This class gets instantiated in the child process, and receives messages from | /* This class gets instantiated in the child process, and receives messages from | ||||
| the coordinator process. | the coordinator process. | ||||
| */ | */ | ||||
| class DemoWorkerProcess : public ChildProcessWorker, | |||||
| private DeletedAtShutdown | |||||
| class DemoWorkerProcess final : public ChildProcessWorker, | |||||
| private DeletedAtShutdown | |||||
| { | { | ||||
| public: | public: | ||||
| DemoWorkerProcess() = default; | DemoWorkerProcess() = default; | ||||
| @@ -322,7 +322,7 @@ inline bool invokeChildProcessDemo (const String& commandLine) | |||||
| // based on the command line parameters, we can't just use the normal auto-generated Main.cpp. | // based on the command line parameters, we can't just use the normal auto-generated Main.cpp. | ||||
| // Instead, we don't do anything in Main.cpp and create a JUCEApplication subclass here with | // Instead, we don't do anything in Main.cpp and create a JUCEApplication subclass here with | ||||
| // the necessary modifications. | // the necessary modifications. | ||||
| class Application : public JUCEApplication | |||||
| class Application final : public JUCEApplication | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class RSAComponent : public Component | |||||
| class RSAComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| RSAComponent() | RSAComponent() | ||||
| @@ -141,7 +141,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class HashesComponent : public Component | |||||
| class HashesComponent final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| HashesComponent() | HashesComponent() | ||||
| @@ -238,7 +238,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class CryptographyDemo : public Component | |||||
| class CryptographyDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| CryptographyDemo() | CryptographyDemo() | ||||
| @@ -67,7 +67,7 @@ | |||||
| */ | */ | ||||
| //============================================================================== | //============================================================================== | ||||
| class VoicePurchases : private InAppPurchases::Listener | |||||
| class VoicePurchases final : private InAppPurchases::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -278,7 +278,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class PhraseModel : public ListBoxModel | |||||
| class PhraseModel final : public ListBoxModel | |||||
| { | { | ||||
| public: | public: | ||||
| PhraseModel() {} | PhraseModel() {} | ||||
| @@ -308,12 +308,12 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class VoiceModel : public ListBoxModel | |||||
| class VoiceModel final : public ListBoxModel | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| class VoiceRow : public Component, | |||||
| private Timer | |||||
| class VoiceRow final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| VoiceRow (VoicePurchases& voicePurchases) : purchases (voicePurchases) | VoiceRow (VoicePurchases& voicePurchases) : purchases (voicePurchases) | ||||
| @@ -491,8 +491,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class InAppPurchasesDemo : public Component, | |||||
| private AsyncUpdater | |||||
| class InAppPurchasesDemo final : public Component, | |||||
| private AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| InAppPurchasesDemo() | InAppPurchasesDemo() | ||||
| @@ -49,9 +49,9 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class JavaScriptDemo : public Component, | |||||
| private CodeDocument::Listener, | |||||
| private Timer | |||||
| class JavaScriptDemo final : public Component, | |||||
| private CodeDocument::Listener, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| JavaScriptDemo() | JavaScriptDemo() | ||||
| @@ -125,7 +125,7 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| // This class is used by the script, and provides methods that the JS can call. | // This class is used by the script, and provides methods that the JS can call. | ||||
| struct DemoClass : public DynamicObject | |||||
| struct DemoClass final : public DynamicObject | |||||
| { | { | ||||
| DemoClass (JavaScriptDemo& demo) : owner (demo) | DemoClass (JavaScriptDemo& demo) : owner (demo) | ||||
| { | { | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| struct LiveConstantDemoComponent : public Component | |||||
| struct LiveConstantDemoComponent final : public Component | |||||
| { | { | ||||
| LiveConstantDemoComponent() {} | LiveConstantDemoComponent() {} | ||||
| @@ -78,7 +78,7 @@ struct LiveConstantDemoComponent : public Component | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class LiveConstantDemo : public Component | |||||
| class LiveConstantDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| LiveConstantDemo() | LiveConstantDemo() | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class BouncingBall : private ComponentListener | |||||
| class BouncingBall : private ComponentListener | |||||
| { | { | ||||
| public: | public: | ||||
| BouncingBall (Component& comp) | BouncingBall (Component& comp) | ||||
| @@ -145,8 +145,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoThread : public BouncingBall, | |||||
| public Thread | |||||
| class DemoThread final : public BouncingBall, | |||||
| public Thread | |||||
| { | { | ||||
| public: | public: | ||||
| DemoThread (Component& containerComp) | DemoThread (Component& containerComp) | ||||
| @@ -194,8 +194,8 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| class DemoThreadPoolJob : public BouncingBall, | |||||
| public ThreadPoolJob | |||||
| class DemoThreadPoolJob final : public BouncingBall, | |||||
| public ThreadPoolJob | |||||
| { | { | ||||
| public: | public: | ||||
| DemoThreadPoolJob (Component& containerComp) | DemoThreadPoolJob (Component& containerComp) | ||||
| @@ -232,8 +232,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MultithreadingDemo : public Component, | |||||
| private Timer | |||||
| class MultithreadingDemo final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -49,8 +49,8 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class NetworkingDemo : public Component, | |||||
| private Thread | |||||
| class NetworkingDemo final : public Component, | |||||
| private Thread | |||||
| { | { | ||||
| public: | public: | ||||
| NetworkingDemo() | NetworkingDemo() | ||||
| @@ -48,9 +48,9 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| class OSCLogListBox : public ListBox, | |||||
| private ListBoxModel, | |||||
| private AsyncUpdater | |||||
| class OSCLogListBox final : public ListBox, | |||||
| private ListBoxModel, | |||||
| private AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| OSCLogListBox() | OSCLogListBox() | ||||
| @@ -189,7 +189,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class OSCSenderDemo : public Component | |||||
| class OSCSenderDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| OSCSenderDemo() | OSCSenderDemo() | ||||
| @@ -238,9 +238,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class OSCReceiverDemo : public Component, | |||||
| private OSCReceiver, | |||||
| private OSCReceiver::ListenerWithOSCAddress<OSCReceiver::MessageLoopCallback> | |||||
| class OSCReceiverDemo final : public Component, | |||||
| private OSCReceiver, | |||||
| private OSCReceiver::ListenerWithOSCAddress<OSCReceiver::MessageLoopCallback> | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -289,8 +289,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class OSCMonitorDemo : public Component, | |||||
| private OSCReceiver::Listener<OSCReceiver::MessageLoopCallback> | |||||
| class OSCMonitorDemo final : public Component, | |||||
| private OSCReceiver::Listener<OSCReceiver::MessageLoopCallback> | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -465,7 +465,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class OSCDemo : public Component | |||||
| class OSCDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| OSCDemo() | OSCDemo() | ||||
| @@ -121,10 +121,10 @@ public class JuceActivity extends Activity | |||||
| */ | */ | ||||
| //============================================================================== | //============================================================================== | ||||
| class PushNotificationsDemo : public Component, | |||||
| private ChangeListener, | |||||
| private ComponentListener, | |||||
| private PushNotifications::Listener | |||||
| class PushNotificationsDemo final : public Component, | |||||
| private ChangeListener, | |||||
| private ComponentListener, | |||||
| private PushNotifications::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -781,7 +781,7 @@ private: | |||||
| } | } | ||||
| #endif | #endif | ||||
| struct RowComponent : public Component | |||||
| struct RowComponent final : public Component | |||||
| { | { | ||||
| RowComponent (Label& l, Component& c, int u = 1) | RowComponent (Label& l, Component& c, int u = 1) | ||||
| : label (l), | : label (l), | ||||
| @@ -1123,7 +1123,7 @@ private: | |||||
| OwnedArray<RowComponent> rowComponents; | OwnedArray<RowComponent> rowComponents; | ||||
| }; | }; | ||||
| struct AuxActionsView : public Component | |||||
| struct AuxActionsView final : public Component | |||||
| { | { | ||||
| AuxActionsView() | AuxActionsView() | ||||
| { | { | ||||
| @@ -1177,7 +1177,7 @@ private: | |||||
| TextButton removeAllPendingNotifsButton { "Remove All Pending Notifs" }; | TextButton removeAllPendingNotifsButton { "Remove All Pending Notifs" }; | ||||
| }; | }; | ||||
| struct RemoteView : public Component | |||||
| struct RemoteView final : public Component | |||||
| { | { | ||||
| RemoteView() | RemoteView() | ||||
| { | { | ||||
| @@ -1209,7 +1209,7 @@ private: | |||||
| TextButton unsubscribeFromSportsButton { "UnsubscribeFromSports" }; | TextButton unsubscribeFromSportsButton { "UnsubscribeFromSports" }; | ||||
| }; | }; | ||||
| struct DemoTabbedComponent : public TabbedComponent | |||||
| struct DemoTabbedComponent final : public TabbedComponent | |||||
| { | { | ||||
| DemoTabbedComponent (PushNotificationsDemo& demoIn, TabbedButtonBar::Orientation orientation) | DemoTabbedComponent (PushNotificationsDemo& demoIn, TabbedButtonBar::Orientation orientation) | ||||
| : TabbedComponent (orientation), demo (demoIn) | : TabbedComponent (orientation), demo (demoIn) | ||||
| @@ -219,7 +219,7 @@ static String getAllSystemInfo() | |||||
| return systemInfo; | return systemInfo; | ||||
| } | } | ||||
| class SystemInfoDemo : public Component | |||||
| class SystemInfoDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| SystemInfoDemo() | SystemInfoDemo() | ||||
| @@ -50,7 +50,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Simple message that holds a Colour. */ | /** Simple message that holds a Colour. */ | ||||
| struct ColourMessage : public Message | |||||
| struct ColourMessage final : public Message | |||||
| { | { | ||||
| ColourMessage (Colour col) : colour (col) {} | ColourMessage (Colour col) : colour (col) {} | ||||
| @@ -73,10 +73,10 @@ struct ColourMessage : public Message | |||||
| The flash will then fade using a Timer to repaint itself and will send a change | The flash will then fade using a Timer to repaint itself and will send a change | ||||
| message once it is finished. | message once it is finished. | ||||
| */ | */ | ||||
| class FlashingComponent : public Component, | |||||
| public MessageListener, | |||||
| public ChangeBroadcaster, | |||||
| private Timer | |||||
| class FlashingComponent final : public Component, | |||||
| public MessageListener, | |||||
| public ChangeBroadcaster, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| FlashingComponent() {} | FlashingComponent() {} | ||||
| @@ -144,8 +144,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class TimersAndEventsDemo : public Component, | |||||
| private ChangeListener | |||||
| class TimersAndEventsDemo final : public Component, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| TimersAndEventsDemo() | TimersAndEventsDemo() | ||||
| @@ -53,7 +53,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class UnitTestsDemo : public Component | |||||
| class UnitTestsDemo final : public Component | |||||
| { | { | ||||
| public: | public: | ||||
| UnitTestsDemo() | UnitTestsDemo() | ||||
| @@ -146,8 +146,8 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| class TestRunnerThread : public Thread, | |||||
| private Timer | |||||
| class TestRunnerThread final : public Thread, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| TestRunnerThread (UnitTestsDemo& utd, const String& ctg) | TestRunnerThread (UnitTestsDemo& utd, const String& ctg) | ||||
| @@ -190,7 +190,7 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| // This subclass of UnitTestRunner is used to redirect the test output to our | // This subclass of UnitTestRunner is used to redirect the test output to our | ||||
| // TextBox, and to interrupt the running tests when our thread is asked to stop.. | // TextBox, and to interrupt the running tests when our thread is asked to stop.. | ||||
| class CustomTestRunner : public UnitTestRunner | |||||
| class CustomTestRunner final : public UnitTestRunner | |||||
| { | { | ||||
| public: | public: | ||||
| CustomTestRunner (TestRunnerThread& trt) : owner (trt) {} | CustomTestRunner (TestRunnerThread& trt) : owner (trt) {} | ||||
| @@ -49,8 +49,8 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class ValueTreeItem : public TreeViewItem, | |||||
| private ValueTree::Listener | |||||
| class ValueTreeItem final : public TreeViewItem, | |||||
| private ValueTree::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| ValueTreeItem (const ValueTree& v, UndoManager& um) | ValueTreeItem (const ValueTree& v, UndoManager& um) | ||||
| @@ -179,9 +179,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ValueTreesDemo : public Component, | |||||
| public DragAndDropContainer, | |||||
| private Timer | |||||
| class ValueTreesDemo final : public Component, | |||||
| public DragAndDropContainer, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| ValueTreesDemo() | ValueTreesDemo() | ||||
| @@ -49,7 +49,7 @@ | |||||
| #include "../Assets/DemoUtilities.h" | #include "../Assets/DemoUtilities.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class XmlTreeItem : public TreeViewItem | |||||
| class XmlTreeItem final : public TreeViewItem | |||||
| { | { | ||||
| public: | public: | ||||
| XmlTreeItem (XmlElement& x) : xml (x) {} | XmlTreeItem (XmlElement& x) : xml (x) {} | ||||
| @@ -115,7 +115,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class JsonTreeItem : public TreeViewItem | |||||
| class JsonTreeItem final : public TreeViewItem | |||||
| { | { | ||||
| public: | public: | ||||
| JsonTreeItem (Identifier i, var value) | JsonTreeItem (Identifier i, var value) | ||||
| @@ -228,8 +228,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class XMLandJSONDemo : public Component, | |||||
| private CodeDocument::Listener | |||||
| class XMLandJSONDemo final : public Component, | |||||
| private CodeDocument::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| /** The type of database to parse. */ | /** The type of database to parse. */ | ||||
| @@ -29,8 +29,8 @@ | |||||
| #include <mutex> | #include <mutex> | ||||
| //============================================================================== | //============================================================================== | ||||
| class MainContentComponent : public AudioAppComponent, | |||||
| private Timer | |||||
| class MainContentComponent final : public AudioAppComponent, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -31,8 +31,8 @@ | |||||
| #error "If you're building the audio plugin host, you probably want to enable VST and/or AU support" | #error "If you're building the audio plugin host, you probably want to enable VST and/or AU support" | ||||
| #endif | #endif | ||||
| class PluginScannerSubprocess : private ChildProcessWorker, | |||||
| private AsyncUpdater | |||||
| class PluginScannerSubprocess final : private ChildProcessWorker, | |||||
| private AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| PluginScannerSubprocess() | PluginScannerSubprocess() | ||||
| @@ -139,8 +139,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class PluginHostApp : public JUCEApplication, | |||||
| private AsyncUpdater | |||||
| class PluginHostApp final : public JUCEApplication, | |||||
| private AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| PluginHostApp() = default; | PluginHostApp() = default; | ||||
| @@ -213,7 +213,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioAccessController : public ARA::Host::AudioAccessControllerInterface | |||||
| class AudioAccessController final : public ARA::Host::AudioAccessControllerInterface | |||||
| { | { | ||||
| public: | public: | ||||
| ARA::ARAAudioReaderHostRef createAudioReaderForSource (ARA::ARAAudioSourceHostRef audioSourceHostRef, | ARA::ARAAudioReaderHostRef createAudioReaderForSource (ARA::ARAAudioSourceHostRef audioSourceHostRef, | ||||
| @@ -264,7 +264,7 @@ private: | |||||
| std::map<AudioReader*, std::unique_ptr<AudioReader>> audioReaders; | std::map<AudioReader*, std::unique_ptr<AudioReader>> audioReaders; | ||||
| }; | }; | ||||
| class ArchivingController : public ARA::Host::ArchivingControllerInterface | |||||
| class ArchivingController final : public ARA::Host::ArchivingControllerInterface | |||||
| { | { | ||||
| public: | public: | ||||
| using ReaderConverter = ARAHostModel::ConversionFunctions<MemoryBlock*, ARA::ARAArchiveReaderHostRef>; | using ReaderConverter = ARAHostModel::ConversionFunctions<MemoryBlock*, ARA::ARAArchiveReaderHostRef>; | ||||
| @@ -316,7 +316,7 @@ public: | |||||
| } | } | ||||
| }; | }; | ||||
| class ContentAccessController : public ARA::Host::ContentAccessControllerInterface | |||||
| class ContentAccessController final : public ARA::Host::ContentAccessControllerInterface | |||||
| { | { | ||||
| public: | public: | ||||
| using Converter = ARAHostModel::ConversionFunctions<ARA::ARAContentType, ARA::ARAContentReaderHostRef>; | using Converter = ARAHostModel::ConversionFunctions<ARA::ARAContentType, ARA::ARAContentReaderHostRef>; | ||||
| @@ -433,7 +433,7 @@ public: | |||||
| ARA::ARAContentBarSignature barSignature; | ARA::ARAContentBarSignature barSignature; | ||||
| }; | }; | ||||
| class ModelUpdateController : public ARA::Host::ModelUpdateControllerInterface | |||||
| class ModelUpdateController final : public ARA::Host::ModelUpdateControllerInterface | |||||
| { | { | ||||
| public: | public: | ||||
| void notifyAudioSourceAnalysisProgress (ARA::ARAAudioSourceHostRef audioSourceHostRef, | void notifyAudioSourceAnalysisProgress (ARA::ARAAudioSourceHostRef audioSourceHostRef, | ||||
| @@ -465,7 +465,7 @@ public: | |||||
| } | } | ||||
| }; | }; | ||||
| class PlaybackController : public ARA::Host::PlaybackControllerInterface | |||||
| class PlaybackController final : public ARA::Host::PlaybackControllerInterface | |||||
| { | { | ||||
| public: | public: | ||||
| void requestStartPlayback() noexcept override {} | void requestStartPlayback() noexcept override {} | ||||
| @@ -484,7 +484,7 @@ public: | |||||
| void requestEnableCycle (bool enable) noexcept override { ignoreUnused (enable); } | void requestEnableCycle (bool enable) noexcept override { ignoreUnused (enable); } | ||||
| }; | }; | ||||
| struct SimplePlayHead : public juce::AudioPlayHead | |||||
| struct SimplePlayHead final : public juce::AudioPlayHead | |||||
| { | { | ||||
| Optional<PositionInfo> getPosition() const override | Optional<PositionInfo> getPosition() const override | ||||
| { | { | ||||
| @@ -509,9 +509,9 @@ struct HostPlaybackController | |||||
| virtual void clearAudioSource() = 0; | virtual void clearAudioSource() = 0; | ||||
| }; | }; | ||||
| class AudioSourceComponent : public Component, | |||||
| public FileDragAndDropTarget, | |||||
| public ChangeListener | |||||
| class AudioSourceComponent final : public Component, | |||||
| public FileDragAndDropTarget, | |||||
| public ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| explicit AudioSourceComponent (HostPlaybackController& controller, juce::ChangeBroadcaster& bc) | explicit AudioSourceComponent (HostPlaybackController& controller, juce::ChangeBroadcaster& bc) | ||||
| @@ -607,8 +607,8 @@ public: | |||||
| } | } | ||||
| private: | private: | ||||
| class WaveformComponent : public Component, | |||||
| public ChangeListener | |||||
| class WaveformComponent final : public Component, | |||||
| public ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| WaveformComponent (AudioSourceComponent& p) | WaveformComponent (AudioSourceComponent& p) | ||||
| @@ -701,14 +701,14 @@ private: | |||||
| TextButton playButton, goToStartButton; | TextButton playButton, goToStartButton; | ||||
| }; | }; | ||||
| class ARAPluginInstanceWrapper : public AudioPluginInstance | |||||
| class ARAPluginInstanceWrapper final : public AudioPluginInstance | |||||
| { | { | ||||
| public: | public: | ||||
| class ARATestHost : public HostPlaybackController, | |||||
| public juce::ChangeBroadcaster | |||||
| class ARATestHost final : public HostPlaybackController, | |||||
| public juce::ChangeBroadcaster | |||||
| { | { | ||||
| public: | public: | ||||
| class Editor : public AudioProcessorEditor | |||||
| class Editor final : public AudioProcessorEditor | |||||
| { | { | ||||
| public: | public: | ||||
| explicit Editor (ARATestHost& araTestHost) | explicit Editor (ARATestHost& araTestHost) | ||||
| @@ -31,7 +31,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| struct NumberedBoxes : public TableListBox, | |||||
| struct NumberedBoxes final : public TableListBox, | |||||
| private TableListBoxModel, | private TableListBoxModel, | ||||
| private Button::Listener | private Button::Listener | ||||
| { | { | ||||
| @@ -170,9 +170,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class IOConfigurationWindow::InputOutputConfig : public Component, | |||||
| private Button::Listener, | |||||
| private NumberedBoxes::Listener | |||||
| class IOConfigurationWindow::InputOutputConfig final : public Component, | |||||
| private Button::Listener, | |||||
| private NumberedBoxes::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| InputOutputConfig (IOConfigurationWindow& parent, bool direction) | InputOutputConfig (IOConfigurationWindow& parent, bool direction) | ||||
| @@ -30,7 +30,7 @@ class GraphDocumentComponent; | |||||
| //============================================================================== | //============================================================================== | ||||
| class IOConfigurationWindow : public AudioProcessorEditor | |||||
| class IOConfigurationWindow final : public AudioProcessorEditor | |||||
| { | { | ||||
| public: | public: | ||||
| IOConfigurationWindow (AudioProcessor&); | IOConfigurationWindow (AudioProcessor&); | ||||
| @@ -61,7 +61,7 @@ static std::unique_ptr<InputStream> createAssetInputStream (const char* resource | |||||
| #include "../../../../examples/Plugins/SurroundPluginDemo.h" | #include "../../../../examples/Plugins/SurroundPluginDemo.h" | ||||
| //============================================================================== | //============================================================================== | ||||
| class InternalPlugin : public AudioPluginInstance | |||||
| class InternalPlugin final : public AudioPluginInstance | |||||
| { | { | ||||
| public: | public: | ||||
| explicit InternalPlugin (std::unique_ptr<AudioProcessor> innerIn) | explicit InternalPlugin (std::unique_ptr<AudioProcessor> innerIn) | ||||
| @@ -167,7 +167,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class SineWaveSynth : public AudioProcessor | |||||
| class SineWaveSynth final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| SineWaveSynth() | SineWaveSynth() | ||||
| @@ -343,7 +343,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class ReverbPlugin : public AudioProcessor | |||||
| class ReverbPlugin final : public AudioProcessor | |||||
| { | { | ||||
| public: | public: | ||||
| ReverbPlugin() | ReverbPlugin() | ||||
| @@ -32,7 +32,7 @@ | |||||
| /** | /** | ||||
| Manages the internal plugin types. | Manages the internal plugin types. | ||||
| */ | */ | ||||
| class InternalPluginFormat : public AudioPluginFormat | |||||
| class InternalPluginFormat final : public AudioPluginFormat | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -55,9 +55,9 @@ struct PluginDescriptionAndPreference | |||||
| /** | /** | ||||
| A collection of plugins and some connections between them. | A collection of plugins and some connections between them. | ||||
| */ | */ | ||||
| class PluginGraph : public FileBasedDocument, | |||||
| public AudioProcessorListener, | |||||
| private ChangeListener | |||||
| class PluginGraph final : public FileBasedDocument, | |||||
| public AudioProcessorListener, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -92,8 +92,8 @@ | |||||
| #endif | #endif | ||||
| //============================================================================== | //============================================================================== | ||||
| struct GraphEditorPanel::PinComponent : public Component, | |||||
| public SettableTooltipClient | |||||
| struct GraphEditorPanel::PinComponent final : public Component, | |||||
| public SettableTooltipClient | |||||
| { | { | ||||
| PinComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeAndChannel pinToUse, bool isIn) | PinComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeAndChannel pinToUse, bool isIn) | ||||
| : panel (p), graph (p.graph), pin (pinToUse), isInput (isIn) | : panel (p), graph (p.graph), pin (pinToUse), isInput (isIn) | ||||
| @@ -170,10 +170,10 @@ struct GraphEditorPanel::PinComponent : public Component, | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct GraphEditorPanel::PluginComponent : public Component, | |||||
| public Timer, | |||||
| private AudioProcessorParameter::Listener, | |||||
| private AsyncUpdater | |||||
| struct GraphEditorPanel::PluginComponent final : public Component, | |||||
| public Timer, | |||||
| private AudioProcessorParameter::Listener, | |||||
| private AsyncUpdater | |||||
| { | { | ||||
| PluginComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeID id) : panel (p), graph (p.graph), pluginID (id) | PluginComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeID id) : panel (p), graph (p.graph), pluginID (id) | ||||
| { | { | ||||
| @@ -554,8 +554,8 @@ struct GraphEditorPanel::PluginComponent : public Component, | |||||
| //============================================================================== | //============================================================================== | ||||
| struct GraphEditorPanel::ConnectorComponent : public Component, | |||||
| public SettableTooltipClient | |||||
| struct GraphEditorPanel::ConnectorComponent final : public Component, | |||||
| public SettableTooltipClient | |||||
| { | { | ||||
| explicit ConnectorComponent (GraphEditorPanel& p) | explicit ConnectorComponent (GraphEditorPanel& p) | ||||
| : panel (p), graph (p.graph) | : panel (p), graph (p.graph) | ||||
| @@ -1001,8 +1001,8 @@ void GraphEditorPanel::timerCallback() | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| struct GraphDocumentComponent::TooltipBar : public Component, | |||||
| private Timer | |||||
| struct GraphDocumentComponent::TooltipBar final : public Component, | |||||
| private Timer | |||||
| { | { | ||||
| TooltipBar() | TooltipBar() | ||||
| { | { | ||||
| @@ -1038,8 +1038,8 @@ struct GraphDocumentComponent::TooltipBar : public Component, | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class GraphDocumentComponent::TitleBarComponent : public Component, | |||||
| private Button::Listener | |||||
| class GraphDocumentComponent::TitleBarComponent final : public Component, | |||||
| private Button::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| explicit TitleBarComponent (GraphDocumentComponent& graphDocumentComponent) | explicit TitleBarComponent (GraphDocumentComponent& graphDocumentComponent) | ||||
| @@ -1134,9 +1134,9 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct GraphDocumentComponent::PluginListBoxModel : public ListBoxModel, | |||||
| public ChangeListener, | |||||
| public MouseListener | |||||
| struct GraphDocumentComponent::PluginListBoxModel final : public ListBoxModel, | |||||
| public ChangeListener, | |||||
| public MouseListener | |||||
| { | { | ||||
| PluginListBoxModel (ListBox& lb, KnownPluginList& kpl) | PluginListBoxModel (ListBox& lb, KnownPluginList& kpl) | ||||
| : owner (lb), | : owner (lb), | ||||
| @@ -33,9 +33,9 @@ class MainHostWindow; | |||||
| /** | /** | ||||
| A panel that displays and edits a PluginGraph. | A panel that displays and edits a PluginGraph. | ||||
| */ | */ | ||||
| class GraphEditorPanel : public Component, | |||||
| public ChangeListener, | |||||
| private Timer | |||||
| class GraphEditorPanel final : public Component, | |||||
| public ChangeListener, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -98,10 +98,10 @@ private: | |||||
| It also manages the graph itself, and plays it. | It also manages the graph itself, and plays it. | ||||
| */ | */ | ||||
| class GraphDocumentComponent : public Component, | |||||
| public DragAndDropTarget, | |||||
| public DragAndDropContainer, | |||||
| private ChangeListener | |||||
| class GraphDocumentComponent final : public Component, | |||||
| public DragAndDropTarget, | |||||
| public DragAndDropContainer, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| GraphDocumentComponent (AudioPluginFormatManager& formatManager, | GraphDocumentComponent (AudioPluginFormatManager& formatManager, | ||||
| @@ -30,7 +30,7 @@ | |||||
| constexpr const char* scanModeKey = "pluginScanMode"; | constexpr const char* scanModeKey = "pluginScanMode"; | ||||
| //============================================================================== | //============================================================================== | ||||
| class Superprocess : private ChildProcessCoordinator | |||||
| class Superprocess final : private ChildProcessCoordinator | |||||
| { | { | ||||
| public: | public: | ||||
| Superprocess() | Superprocess() | ||||
| @@ -94,8 +94,8 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class CustomPluginScanner : public KnownPluginList::CustomScanner, | |||||
| private ChangeListener | |||||
| class CustomPluginScanner final : public KnownPluginList::CustomScanner, | |||||
| private ChangeListener | |||||
| { | { | ||||
| public: | public: | ||||
| CustomPluginScanner() | CustomPluginScanner() | ||||
| @@ -202,7 +202,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class CustomPluginListComponent : public PluginListComponent | |||||
| class CustomPluginListComponent final : public PluginListComponent | |||||
| { | { | ||||
| public: | public: | ||||
| CustomPluginListComponent (AudioPluginFormatManager& manager, | CustomPluginListComponent (AudioPluginFormatManager& manager, | ||||
| @@ -256,7 +256,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MainHostWindow::PluginListWindow : public DocumentWindow | |||||
| class MainHostWindow::PluginListWindow final : public DocumentWindow | |||||
| { | { | ||||
| public: | public: | ||||
| PluginListWindow (MainHostWindow& mw, AudioPluginFormatManager& pluginFormatManager) | PluginListWindow (MainHostWindow& mw, AudioPluginFormatManager& pluginFormatManager) | ||||
| @@ -74,11 +74,11 @@ void addPluginAutoScaleOptionsSubMenu (AudioPluginInstance*, PopupMenu&); | |||||
| constexpr const char* processUID = "juceaudiopluginhost"; | constexpr const char* processUID = "juceaudiopluginhost"; | ||||
| //============================================================================== | //============================================================================== | ||||
| class MainHostWindow : public DocumentWindow, | |||||
| public MenuBarModel, | |||||
| public ApplicationCommandTarget, | |||||
| public ChangeListener, | |||||
| public FileDragAndDropTarget | |||||
| class MainHostWindow final : public DocumentWindow, | |||||
| public MenuBarModel, | |||||
| public ApplicationCommandTarget, | |||||
| public ChangeListener, | |||||
| public FileDragAndDropTarget | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -46,10 +46,10 @@ class PluginGraph; | |||||
| /** | /** | ||||
| A window that shows a log of parameter change messages sent by the plugin. | A window that shows a log of parameter change messages sent by the plugin. | ||||
| */ | */ | ||||
| class PluginDebugWindow : public AudioProcessorEditor, | |||||
| public AudioProcessorParameter::Listener, | |||||
| public ListBoxModel, | |||||
| public AsyncUpdater | |||||
| class PluginDebugWindow final : public AudioProcessorEditor, | |||||
| public AudioProcessorParameter::Listener, | |||||
| public ListBoxModel, | |||||
| public AsyncUpdater | |||||
| { | { | ||||
| public: | public: | ||||
| PluginDebugWindow (AudioProcessor& proc) | PluginDebugWindow (AudioProcessor& proc) | ||||
| @@ -146,7 +146,7 @@ private: | |||||
| /** | /** | ||||
| A desktop window containing a plugin's GUI. | A desktop window containing a plugin's GUI. | ||||
| */ | */ | ||||
| class PluginWindow : public DocumentWindow | |||||
| class PluginWindow final : public DocumentWindow | |||||
| { | { | ||||
| public: | public: | ||||
| enum class Type | enum class Type | ||||
| @@ -235,7 +235,7 @@ public: | |||||
| } | } | ||||
| private: | private: | ||||
| class DecoratorConstrainer : public BorderedComponentBoundsConstrainer | |||||
| class DecoratorConstrainer final : public BorderedComponentBoundsConstrainer | |||||
| { | { | ||||
| public: | public: | ||||
| explicit DecoratorConstrainer (DocumentWindow& windowIn) | explicit DecoratorConstrainer (DocumentWindow& windowIn) | ||||
| @@ -327,7 +327,7 @@ private: | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| struct ProgramAudioProcessorEditor : public AudioProcessorEditor | |||||
| struct ProgramAudioProcessorEditor final : public AudioProcessorEditor | |||||
| { | { | ||||
| explicit ProgramAudioProcessorEditor (AudioProcessor& p) | explicit ProgramAudioProcessorEditor (AudioProcessor& p) | ||||
| : AudioProcessorEditor (p) | : AudioProcessorEditor (p) | ||||
| @@ -104,7 +104,7 @@ int writeBinaryData (juce::ArgumentList&& args) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| struct IconParseResults final | |||||
| struct IconParseResults | |||||
| { | { | ||||
| juce::build_tools::Icons icons; | juce::build_tools::Icons icons; | ||||
| juce::File output; | juce::File output; | ||||
| @@ -191,7 +191,7 @@ bool getBoolValue (const std::unordered_map<juce::String, juce::String>& dict, j | |||||
| || str.equalsIgnoreCase ("on"); | || str.equalsIgnoreCase ("on"); | ||||
| } | } | ||||
| struct UpdateField final | |||||
| struct UpdateField | |||||
| { | { | ||||
| const std::unordered_map<juce::String, juce::String>& dict; | const std::unordered_map<juce::String, juce::String>& dict; | ||||
| @@ -29,12 +29,12 @@ | |||||
| particular client covers, and updates itself when messages arrive from the master | particular client covers, and updates itself when messages arrive from the master | ||||
| containing new canvas states. | containing new canvas states. | ||||
| */ | */ | ||||
| class ClientCanvasComponent : public Component, | |||||
| private OSCSender, | |||||
| private OSCReceiver, | |||||
| private OSCReceiver::Listener<OSCReceiver::RealtimeCallback>, | |||||
| private AsyncUpdater, | |||||
| private Timer | |||||
| class ClientCanvasComponent final : public Component, | |||||
| private OSCSender, | |||||
| private OSCReceiver, | |||||
| private OSCReceiver::Listener<OSCReceiver::RealtimeCallback>, | |||||
| private AsyncUpdater, | |||||
| private Timer | |||||
| { | { | ||||
| public: | public: | ||||
| ClientCanvasComponent (PropertiesFile& p, int windowIndex) : properties (p) | ClientCanvasComponent (PropertiesFile& p, int windowIndex) : properties (p) | ||||
| @@ -24,7 +24,7 @@ | |||||
| */ | */ | ||||
| struct BlankCanvas : public AnimatedContent | |||||
| struct BlankCanvas final : public AnimatedContent | |||||
| { | { | ||||
| String getName() const override { return "Blank Canvas"; } | String getName() const override { return "Blank Canvas"; } | ||||
| void reset() override {} | void reset() override {} | ||||
| @@ -33,7 +33,7 @@ struct BlankCanvas : public AnimatedContent | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct GridLines : public AnimatedContent | |||||
| struct GridLines final : public AnimatedContent | |||||
| { | { | ||||
| String getName() const override { return "Grid Lines"; } | String getName() const override { return "Grid Lines"; } | ||||
| void reset() override {} | void reset() override {} | ||||
| @@ -64,7 +64,7 @@ struct GridLines : public AnimatedContent | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct BackgroundLogo : public AnimatedContent | |||||
| struct BackgroundLogo : public AnimatedContent | |||||
| { | { | ||||
| BackgroundLogo() | BackgroundLogo() | ||||
| { | { | ||||
| @@ -99,7 +99,7 @@ struct BackgroundLogo : public AnimatedContent | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct FlockDemo : public BackgroundLogo | |||||
| struct FlockDemo : public BackgroundLogo | |||||
| { | { | ||||
| String getName() const override { return "Flock"; } | String getName() const override { return "Flock"; } | ||||
| @@ -358,7 +358,7 @@ struct FlockDemo : public BackgroundLogo | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct FlockWithText : public FlockDemo | |||||
| struct FlockWithText final : public FlockDemo | |||||
| { | { | ||||
| FlockWithText() | FlockWithText() | ||||
| { | { | ||||
| @@ -445,7 +445,7 @@ struct FlockWithText : public FlockDemo | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct SmallFlock : public FlockDemo | |||||
| struct SmallFlock final : public FlockDemo | |||||
| { | { | ||||
| String getName() const override { return "Small Flock"; } | String getName() const override { return "Small Flock"; } | ||||
| @@ -456,7 +456,7 @@ struct SmallFlock : public FlockDemo | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| struct BigFlock : public FlockDemo | |||||
| struct BigFlock final : public FlockDemo | |||||
| { | { | ||||
| String getName() const override { return "Big Flock"; } | String getName() const override { return "Big Flock"; } | ||||
| @@ -468,7 +468,7 @@ struct BigFlock : public FlockDemo | |||||
| //============================================================================== | //============================================================================== | ||||
| template <int numHorizontalLogos> | template <int numHorizontalLogos> | ||||
| struct MultiLogo : public BackgroundLogo | |||||
| struct MultiLogo final : public BackgroundLogo | |||||
| { | { | ||||
| String getName() const override { return "Multi-Logo " + String ((int) numHorizontalLogos); } | String getName() const override { return "Multi-Logo " + String ((int) numHorizontalLogos); } | ||||
| @@ -47,7 +47,7 @@ namespace | |||||
| //============================================================================== | //============================================================================== | ||||
| class NetworkGraphicsDemoApplication : public JUCEApplication | |||||
| class NetworkGraphicsDemoApplication final : public JUCEApplication | |||||
| { | { | ||||
| public: | public: | ||||
| NetworkGraphicsDemoApplication() : properties (getPropertyFileOptions()) | NetworkGraphicsDemoApplication() : properties (getPropertyFileOptions()) | ||||
| @@ -89,7 +89,7 @@ public: | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| struct MainWindow : public DocumentWindow | |||||
| struct MainWindow final : public DocumentWindow | |||||
| { | { | ||||
| explicit MainWindow (PropertiesFile& props) | explicit MainWindow (PropertiesFile& props) | ||||
| : DocumentWindow ("JUCE Networked Graphics Demo - Master", Colours::white, DocumentWindow::allButtons) | : DocumentWindow ("JUCE Networked Graphics Demo - Master", Colours::white, DocumentWindow::allButtons) | ||||