| @@ -24,8 +24,8 @@ | |||
| /* This component scrolls a continuous waveform showing the audio that's | |||
| coming into whatever audio inputs this object is connected to. | |||
| */ | |||
| class LiveScrollingAudioDisplay : public AudioVisualiserComponent, | |||
| public AudioIODeviceCallback | |||
| class LiveScrollingAudioDisplay final : public AudioVisualiserComponent, | |||
| public AudioIODeviceCallback | |||
| { | |||
| public: | |||
| 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, | |||
| 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) | |||
| : 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: | |||
| AudioThumbnailComponent (AudioDeviceManager& adm, AudioFormatManager& afm) | |||
| @@ -217,7 +217,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class DemoParametersComponent : public Component | |||
| class DemoParametersComponent final : public Component | |||
| { | |||
| public: | |||
| DemoParametersComponent (const std::vector<DSPDemoParameterBase*>& demoParams) | |||
| @@ -270,9 +270,9 @@ private: | |||
| //============================================================================== | |||
| 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) | |||
| : inputSource (&input) | |||
| @@ -327,10 +327,10 @@ struct DSPDemo : public AudioSource, | |||
| //============================================================================== | |||
| 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: | |||
| //============================================================================== | |||
| @@ -496,9 +496,9 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| class AudioPlayerHeader : public Component, | |||
| private ChangeListener, | |||
| private Value::Listener | |||
| class AudioPlayerHeader final : public Component, | |||
| private ChangeListener, | |||
| private Value::Listener | |||
| { | |||
| public: | |||
| AudioPlayerHeader (AudioDeviceManager& adm, | |||
| @@ -218,11 +218,7 @@ inline Path getJUCELogoPath() | |||
| // 0.0 and 1.0 at a random speed | |||
| struct BouncingNumber | |||
| { | |||
| BouncingNumber() | |||
| : speed (0.0004 + 0.0007 * Random::getSystemRandom().nextDouble()), | |||
| phase (Random::getSystemRandom().nextDouble()) | |||
| { | |||
| } | |||
| virtual ~BouncingNumber() = default; | |||
| float getValue() const | |||
| { | |||
| @@ -231,10 +227,11 @@ struct BouncingNumber | |||
| } | |||
| 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() | |||
| { | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| class AudioAppDemo : public AudioAppComponent | |||
| class AudioAppDemo final : public AudioAppComponent | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -52,8 +52,8 @@ | |||
| #include "../Assets/AudioLiveScrollingDisplay.h" | |||
| //============================================================================== | |||
| class LatencyTester : public AudioIODeviceCallback, | |||
| private Timer | |||
| class LatencyTester final : public AudioIODeviceCallback, | |||
| private Timer | |||
| { | |||
| public: | |||
| LatencyTester (TextEditor& editorBox) | |||
| @@ -304,7 +304,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class AudioLatencyDemo : public Component | |||
| class AudioLatencyDemo final : public Component | |||
| { | |||
| public: | |||
| AudioLatencyDemo() | |||
| @@ -48,12 +48,12 @@ | |||
| #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: | |||
| 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: | |||
| AudioPlaybackDemo() | |||
| @@ -55,7 +55,7 @@ | |||
| /** A simple class that acts as an AudioIODeviceCallback and writes the | |||
| incoming audio data to a WAV file. | |||
| */ | |||
| class AudioRecorder : public AudioIODeviceCallback | |||
| class AudioRecorder final : public AudioIODeviceCallback | |||
| { | |||
| public: | |||
| AudioRecorder (AudioThumbnail& thumbnailToUpdate) | |||
| @@ -170,8 +170,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class RecordingThumbnail : public Component, | |||
| private ChangeListener | |||
| class RecordingThumbnail final : public Component, | |||
| private ChangeListener | |||
| { | |||
| public: | |||
| RecordingThumbnail() | |||
| @@ -230,7 +230,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class AudioRecordingDemo : public Component | |||
| class AudioRecordingDemo final : public Component | |||
| { | |||
| public: | |||
| AudioRecordingDemo() | |||
| @@ -51,8 +51,8 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class AudioSettingsDemo : public Component, | |||
| public ChangeListener | |||
| class AudioSettingsDemo final : public Component, | |||
| public ChangeListener | |||
| { | |||
| public: | |||
| AudioSettingsDemo() | |||
| @@ -53,7 +53,7 @@ | |||
| //============================================================================== | |||
| /** 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 appliesToChannel (int /*midiChannel*/) override { return true; } | |||
| @@ -61,7 +61,7 @@ struct SineWaveSound : public SynthesiserSound | |||
| //============================================================================== | |||
| /** Our demo synth voice just plays a sine wave.. */ | |||
| struct SineWaveVoice : public SynthesiserVoice | |||
| struct SineWaveVoice final : public SynthesiserVoice | |||
| { | |||
| bool canPlaySound (SynthesiserSound* sound) override | |||
| { | |||
| @@ -153,7 +153,7 @@ private: | |||
| //============================================================================== | |||
| // 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) | |||
| { | |||
| @@ -238,7 +238,7 @@ struct SynthAudioSource : public AudioSource | |||
| }; | |||
| //============================================================================== | |||
| class Callback : public AudioIODeviceCallback | |||
| class Callback final : public AudioIODeviceCallback | |||
| { | |||
| public: | |||
| Callback (AudioSourcePlayer& playerIn, LiveScrollingAudioDisplay& displayIn) | |||
| @@ -283,7 +283,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class AudioSynthesiserDemo : public Component | |||
| class AudioSynthesiserDemo final : public Component | |||
| { | |||
| public: | |||
| AudioSynthesiserDemo() | |||
| @@ -95,7 +95,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class MPESetupComponent : public Component | |||
| class MPESetupComponent final : public Component | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -349,8 +349,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class ZoneLayoutComponent : public Component, | |||
| private MPEInstrument::Listener | |||
| class ZoneLayoutComponent final : public Component, | |||
| private MPEInstrument::Listener | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -466,7 +466,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class MPEDemoSynthVoice : public MPESynthesiserVoice | |||
| class MPEDemoSynthVoice final : public MPESynthesiserVoice | |||
| { | |||
| 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: | |||
| //============================================================================== | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| struct MidiDeviceListEntry : ReferenceCountedObject | |||
| struct MidiDeviceListEntry final : ReferenceCountedObject | |||
| { | |||
| 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: | |||
| //============================================================================== | |||
| @@ -172,8 +172,8 @@ private: | |||
| This component represents a horizontal vibrating musical string of fixed height | |||
| 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: | |||
| StringComponent (int lengthInPixels, Colour stringColour) | |||
| @@ -249,7 +249,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class PluckedStringsDemo : public AudioAppComponent | |||
| class PluckedStringsDemo final : public AudioAppComponent | |||
| { | |||
| public: | |||
| PluckedStringsDemo() | |||
| @@ -50,8 +50,8 @@ | |||
| //============================================================================== | |||
| class SimpleFFTDemo : public AudioAppComponent, | |||
| private Timer | |||
| class SimpleFFTDemo final : public AudioAppComponent, | |||
| private Timer | |||
| { | |||
| public: | |||
| SimpleFFTDemo() : | |||
| @@ -3,7 +3,7 @@ | |||
| #include "PluginProcessor.h" | |||
| //============================================================================== | |||
| class AudioPluginAudioProcessorEditor : public juce::AudioProcessorEditor | |||
| class AudioPluginAudioProcessorEditor final : public juce::AudioProcessorEditor | |||
| { | |||
| public: | |||
| explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&); | |||
| @@ -3,7 +3,7 @@ | |||
| #include <juce_audio_processors/juce_audio_processors.h> | |||
| //============================================================================== | |||
| class AudioPluginAudioProcessor : public juce::AudioProcessor | |||
| class AudioPluginAudioProcessor final : public juce::AudioProcessor | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -11,7 +11,7 @@ | |||
| This component lives inside our window, and this is where you should put all | |||
| your controls and content. | |||
| */ | |||
| class MainComponent : public juce::Component | |||
| class MainComponent final : public juce::Component | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -186,7 +186,7 @@ struct ConvolutionDemoDSP | |||
| std::vector<DSPDemoParameterBase*> parameters { &cabinetParam }; | |||
| }; | |||
| struct ConvolutionDemo : public Component | |||
| struct ConvolutionDemo final : public Component | |||
| { | |||
| ConvolutionDemo() | |||
| { | |||
| @@ -98,7 +98,7 @@ struct FIRFilterDemoDSP | |||
| std::vector<DSPDemoParameterBase*> parameters { &cutoffParam, &typeParam }; | |||
| }; | |||
| struct FIRFilterDemo : public Component | |||
| struct FIRFilterDemo final : public Component | |||
| { | |||
| FIRFilterDemo() | |||
| { | |||
| @@ -83,7 +83,7 @@ struct GainDemoDSP | |||
| std::vector<DSPDemoParameterBase*> parameters { &gainParam }; | |||
| }; | |||
| struct GainDemo : public Component | |||
| struct GainDemo final : public Component | |||
| { | |||
| GainDemo() | |||
| { | |||
| @@ -102,7 +102,7 @@ struct IIRFilterDemoDSP | |||
| double sampleRate = 0.0; | |||
| }; | |||
| struct IIRFilterDemo : public Component | |||
| struct IIRFilterDemo final : public Component | |||
| { | |||
| IIRFilterDemo() | |||
| { | |||
| @@ -134,7 +134,7 @@ struct OscillatorDemoDSP | |||
| std::vector<DSPDemoParameterBase*> parameters { &typeParam, &accuracy, &freqParam, &gainParam, &mixParam }; | |||
| }; | |||
| struct OscillatorDemo : public Component | |||
| struct OscillatorDemo final : public Component | |||
| { | |||
| OscillatorDemo() | |||
| { | |||
| @@ -113,7 +113,7 @@ struct OverdriveDemoDSP | |||
| double sampleRate = 0.0; | |||
| }; | |||
| struct OverdriveDemo : public Component | |||
| struct OverdriveDemo final : public Component | |||
| { | |||
| OverdriveDemo() | |||
| { | |||
| @@ -156,7 +156,7 @@ struct SIMDRegisterDemoDSP | |||
| double sampleRate = 0.0; | |||
| }; | |||
| struct SIMDRegisterDemo : public Component | |||
| struct SIMDRegisterDemo final : public Component | |||
| { | |||
| SIMDRegisterDemo() | |||
| { | |||
| @@ -100,7 +100,7 @@ struct StateVariableFilterDemoDSP | |||
| double sampleRate = 0.0; | |||
| }; | |||
| struct StateVariableFilterDemo : public Component | |||
| struct StateVariableFilterDemo final : public Component | |||
| { | |||
| StateVariableFilterDemo() | |||
| { | |||
| @@ -82,7 +82,7 @@ struct WaveShaperTanhDemoDSP | |||
| std::vector<DSPDemoParameterBase*> parameters { &accuracy }; // no params for this demo | |||
| }; | |||
| struct WaveShaperTanhDemo : public Component | |||
| struct WaveShaperTanhDemo final : public Component | |||
| { | |||
| WaveShaperTanhDemo() | |||
| { | |||
| @@ -31,8 +31,8 @@ | |||
| //============================================================================== | |||
| #if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD | |||
| // 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() | |||
| { | |||
| @@ -76,7 +76,7 @@ | |||
| std::unique_ptr<AudioDeviceManager> sharedAudioDeviceManager; | |||
| //============================================================================== | |||
| class DemoRunnerApplication : public JUCEApplication | |||
| class DemoRunnerApplication final : public JUCEApplication | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -117,7 +117,7 @@ public: | |||
| ApplicationCommandManager& getGlobalCommandManager() { return commandManager; } | |||
| private: | |||
| class MainAppWindow : public DocumentWindow | |||
| class MainAppWindow final : public DocumentWindow | |||
| { | |||
| public: | |||
| MainAppWindow (const String& name) | |||
| @@ -57,7 +57,7 @@ | |||
| This component sets its accessibility title and help text properties and | |||
| also acts as a focus container for its children. | |||
| */ | |||
| class ContentComponent : public Component | |||
| class ContentComponent final : public Component | |||
| { | |||
| public: | |||
| ContentComponent (const String& title, const String& info, Component& contentToDisplay) | |||
| @@ -96,8 +96,8 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| struct InfoIcon : public Component, | |||
| public SettableTooltipClient | |||
| struct InfoIcon final : public Component, | |||
| public SettableTooltipClient | |||
| { | |||
| InfoIcon() | |||
| { | |||
| @@ -151,7 +151,7 @@ private: | |||
| visible and controllable by accessibility clients. There are a few examples | |||
| of some widgets in this demo such as Sliders, Buttons and a TreeView. | |||
| */ | |||
| class JUCEWidgetsComponent : public Component | |||
| class JUCEWidgetsComponent final : public Component | |||
| { | |||
| public: | |||
| JUCEWidgetsComponent() | |||
| @@ -184,7 +184,7 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| class ButtonsComponent : public Component | |||
| class ButtonsComponent final : public Component | |||
| { | |||
| public: | |||
| ButtonsComponent() | |||
| @@ -217,7 +217,7 @@ private: | |||
| private: | |||
| //============================================================================== | |||
| struct RadioButtonsGroupComponent : public Component | |||
| struct RadioButtonsGroupComponent final : public Component | |||
| { | |||
| RadioButtonsGroupComponent() | |||
| { | |||
| @@ -263,7 +263,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class SlidersComponent : public Component | |||
| class SlidersComponent final : public Component | |||
| { | |||
| public: | |||
| SlidersComponent() | |||
| @@ -317,7 +317,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class TreeViewComponent : public Component | |||
| class TreeViewComponent final : public Component | |||
| { | |||
| public: | |||
| TreeViewComponent() | |||
| @@ -335,7 +335,7 @@ private: | |||
| private: | |||
| //============================================================================== | |||
| struct RootItem : public TreeViewItem | |||
| struct RootItem final : public TreeViewItem | |||
| { | |||
| RootItem() | |||
| { | |||
| @@ -447,7 +447,7 @@ constexpr NameAndRole accessibilityRoles[] | |||
| Component::createAccessibilityHandler() method to return a custom AccessibilityHandler. | |||
| The properties of this handler are set by the various controls in the demo. | |||
| */ | |||
| class CustomWidgetComponent : public Component | |||
| class CustomWidgetComponent final : public Component | |||
| { | |||
| public: | |||
| CustomWidgetComponent() | |||
| @@ -488,7 +488,7 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| class AccessibleComponent : public Component | |||
| class AccessibleComponent final : public Component | |||
| { | |||
| public: | |||
| explicit AccessibleComponent (CustomWidgetComponent& owner) | |||
| @@ -543,7 +543,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class InfoComponent : public Component | |||
| class InfoComponent final : public Component | |||
| { | |||
| public: | |||
| explicit InfoComponent (CustomWidgetComponent& owner) | |||
| @@ -636,7 +636,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class ActionsComponent : public Component | |||
| class ActionsComponent final : public Component | |||
| { | |||
| public: | |||
| explicit ActionsComponent (CustomWidgetComponent& owner) | |||
| @@ -675,8 +675,8 @@ private: | |||
| private: | |||
| //============================================================================== | |||
| class AccessibilityActionComponent : public Component, | |||
| private Timer | |||
| class AccessibilityActionComponent final : public Component, | |||
| private Timer | |||
| { | |||
| public: | |||
| AccessibilityActionComponent (CustomWidgetComponent& owner, | |||
| @@ -769,7 +769,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class ValueInterfaceComponent : public Component | |||
| class ValueInterfaceComponent final : public Component | |||
| { | |||
| public: | |||
| explicit ValueInterfaceComponent (CustomWidgetComponent& owner) | |||
| @@ -883,7 +883,7 @@ private: | |||
| private: | |||
| //============================================================================== | |||
| struct RangedValueComponent : public Component | |||
| struct RangedValueComponent final : public Component | |||
| { | |||
| RangedValueComponent() | |||
| { | |||
| @@ -986,7 +986,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class StateComponent : public Component | |||
| class StateComponent final : public Component | |||
| { | |||
| public: | |||
| StateComponent() | |||
| @@ -1096,7 +1096,7 @@ private: | |||
| /** | |||
| The top-level component containing an example of custom child component navigation. | |||
| */ | |||
| class CustomNavigationComponent : public Component | |||
| class CustomNavigationComponent final : public Component | |||
| { | |||
| public: | |||
| CustomNavigationComponent() | |||
| @@ -1126,7 +1126,7 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| class NavigableComponentsHolder : public Component | |||
| class NavigableComponentsHolder final : public Component | |||
| { | |||
| public: | |||
| NavigableComponentsHolder() | |||
| @@ -1163,7 +1163,7 @@ private: | |||
| std::unique_ptr<ComponentTraverser> createFocusTraverser() override | |||
| { | |||
| struct CustomTraverser : public FocusTraverser | |||
| struct CustomTraverser final : public FocusTraverser | |||
| { | |||
| explicit CustomTraverser (NavigableComponentsHolder& owner) | |||
| : navigableComponentsHolder (owner) {} | |||
| @@ -1221,7 +1221,7 @@ private: | |||
| } | |||
| private: | |||
| struct NavigableComponent : public Component | |||
| struct NavigableComponent final : public Component | |||
| { | |||
| 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 | |||
| it should be read out (whether it should interrupt other announcements, etc.). | |||
| */ | |||
| class AnnouncementsComponent : public Component | |||
| class AnnouncementsComponent final : public Component | |||
| { | |||
| public: | |||
| AnnouncementsComponent() | |||
| @@ -1442,7 +1442,7 @@ private: | |||
| 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: | |||
| AccessibilityDemo() | |||
| @@ -52,7 +52,7 @@ | |||
| This component lives inside our window, and this is where you should put all | |||
| your controls and content. | |||
| */ | |||
| class AnimationAppDemo : public AnimatedAppComponent | |||
| class AnimationAppDemo final : public AnimatedAppComponent | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| /** This will be the source of our balls and can be dragged around. */ | |||
| class BallGeneratorComponent : public Component | |||
| class BallGeneratorComponent final : public Component | |||
| { | |||
| public: | |||
| BallGeneratorComponent() {} | |||
| @@ -93,7 +93,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| struct BallComponent : public Component | |||
| struct BallComponent final : public Component | |||
| { | |||
| BallComponent (Point<float> 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: | |||
| AnimationDemo() | |||
| @@ -50,8 +50,8 @@ | |||
| //============================================================================== | |||
| class BouncingBallWavetableDemo : public AudioAppComponent, | |||
| private Timer | |||
| class BouncingBallWavetableDemo final : public AudioAppComponent, | |||
| private Timer | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -50,7 +50,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class CameraDemo : public Component | |||
| class CameraDemo final : public Component | |||
| { | |||
| public: | |||
| CameraDemo() | |||
| @@ -53,8 +53,8 @@ | |||
| #endif | |||
| //============================================================================== | |||
| class CodeEditorDemo : public Component, | |||
| private FilenameComponentListener | |||
| class CodeEditorDemo final : public Component, | |||
| private FilenameComponentListener | |||
| { | |||
| public: | |||
| CodeEditorDemo() | |||
| @@ -51,7 +51,7 @@ | |||
| /** | |||
| This class represents one of the individual lights in our grid. | |||
| */ | |||
| class ToggleLightComponent : public Component | |||
| class ToggleLightComponent final : public Component | |||
| { | |||
| public: | |||
| ToggleLightComponent() {} | |||
| @@ -84,7 +84,7 @@ private: | |||
| /** | |||
| This is the parent class that holds multiple ToggleLightComponents in a grid. | |||
| */ | |||
| class ToggleLightGridComponent : public Component | |||
| class ToggleLightGridComponent final : public Component | |||
| { | |||
| public: | |||
| ToggleLightGridComponent() | |||
| @@ -134,7 +134,7 @@ private: | |||
| This component lives inside our window, and this is where you should put all | |||
| your controls and content. | |||
| */ | |||
| class ComponentDemo : public Component | |||
| class ComponentDemo final : public Component | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -50,7 +50,7 @@ | |||
| #include "WidgetsDemo.h" | |||
| //============================================================================== | |||
| class ComponentTransformsDemo : public Component | |||
| class ComponentTransformsDemo final : public Component | |||
| { | |||
| public: | |||
| ComponentTransformsDemo() | |||
| @@ -55,7 +55,7 @@ struct MessageBoxOwnerComponent : public Component | |||
| }; | |||
| //============================================================================== | |||
| class DemoBackgroundThread : public ThreadWithProgressWindow | |||
| class DemoBackgroundThread final : public ThreadWithProgressWindow | |||
| { | |||
| public: | |||
| explicit DemoBackgroundThread (MessageBoxOwnerComponent& comp) | |||
| @@ -117,7 +117,7 @@ public: | |||
| //============================================================================== | |||
| class DialogsDemo : public MessageBoxOwnerComponent | |||
| class DialogsDemo final : public MessageBoxOwnerComponent | |||
| { | |||
| public: | |||
| enum DialogType | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| struct DemoFlexPanel : public Component | |||
| struct DemoFlexPanel final : public Component | |||
| { | |||
| DemoFlexPanel (Colour col, FlexItem& item) | |||
| : flexItem (item), colour (col) | |||
| @@ -163,7 +163,7 @@ struct DemoFlexPanel : public Component | |||
| }; | |||
| //============================================================================== | |||
| struct FlexBoxDemo : public juce::Component | |||
| struct FlexBoxDemo final : public juce::Component | |||
| { | |||
| FlexBoxDemo() | |||
| { | |||
| @@ -49,9 +49,9 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class FontsDemo : public Component, | |||
| private ListBoxModel, | |||
| private Slider::Listener | |||
| class FontsDemo final : public Component, | |||
| private ListBoxModel, | |||
| private Slider::Listener | |||
| { | |||
| public: | |||
| FontsDemo() | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| /** Holds the various toggle buttons for the animation modes. */ | |||
| class ControllersComponent : public Component | |||
| class ControllersComponent final : public Component | |||
| { | |||
| public: | |||
| ControllersComponent() | |||
| @@ -113,7 +113,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class GraphicsDemoBase : public Component | |||
| class GraphicsDemoBase : public Component | |||
| { | |||
| public: | |||
| GraphicsDemoBase (ControllersComponent& cc, const String& name) | |||
| @@ -280,7 +280,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class RectangleFillTypesDemo : public GraphicsDemoBase | |||
| class RectangleFillTypesDemo final : public GraphicsDemoBase | |||
| { | |||
| public: | |||
| RectangleFillTypesDemo (ControllersComponent& cc) | |||
| @@ -316,7 +316,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class PathsDemo : public GraphicsDemoBase | |||
| class PathsDemo final : public GraphicsDemoBase | |||
| { | |||
| public: | |||
| PathsDemo (ControllersComponent& cc, bool linear, bool radial) | |||
| @@ -377,7 +377,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class StrokesDemo : public GraphicsDemoBase | |||
| class StrokesDemo final : public GraphicsDemoBase | |||
| { | |||
| public: | |||
| StrokesDemo (ControllersComponent& cc) | |||
| @@ -410,7 +410,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class ImagesRenderingDemo : public GraphicsDemoBase | |||
| class ImagesRenderingDemo final : public GraphicsDemoBase | |||
| { | |||
| public: | |||
| ImagesRenderingDemo (ControllersComponent& cc, bool argb, bool tiled) | |||
| @@ -448,7 +448,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class GlyphsDemo : public GraphicsDemoBase | |||
| class GlyphsDemo final : public GraphicsDemoBase | |||
| { | |||
| public: | |||
| GlyphsDemo (ControllersComponent& cc) | |||
| @@ -468,7 +468,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class SVGDemo : public GraphicsDemoBase | |||
| class SVGDemo final : public GraphicsDemoBase | |||
| { | |||
| public: | |||
| SVGDemo (ControllersComponent& cc) | |||
| @@ -513,7 +513,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class LinesDemo : public GraphicsDemoBase | |||
| class LinesDemo final : public GraphicsDemoBase | |||
| { | |||
| public: | |||
| LinesDemo (ControllersComponent& cc) | |||
| @@ -576,8 +576,8 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class DemoHolderComponent : public Component, | |||
| private Timer | |||
| class DemoHolderComponent final : public Component, | |||
| private Timer | |||
| { | |||
| public: | |||
| DemoHolderComponent() | |||
| @@ -623,8 +623,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class TestListComponent : public Component, | |||
| private ListBoxModel | |||
| class TestListComponent final : public Component, | |||
| private ListBoxModel | |||
| { | |||
| public: | |||
| TestListComponent (DemoHolderComponent& holder, ControllersComponent& controls) | |||
| @@ -695,7 +695,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class GraphicsDemo : public Component | |||
| class GraphicsDemo final : public Component | |||
| { | |||
| public: | |||
| GraphicsDemo() | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| struct GridDemo : public Component | |||
| struct GridDemo final : public Component | |||
| { | |||
| GridDemo() | |||
| { | |||
| @@ -48,7 +48,7 @@ | |||
| //============================================================================== | |||
| class HelloWorldDemo : public Component | |||
| class HelloWorldDemo final : public Component | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -49,8 +49,8 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class ImagesDemo : public Component, | |||
| public FileBrowserListener | |||
| class ImagesDemo final : public Component, | |||
| public FileBrowserListener | |||
| { | |||
| public: | |||
| ImagesDemo() | |||
| @@ -66,8 +66,8 @@ enum KeyPressCommandIDs | |||
| 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. | |||
| */ | |||
| class KeyPressTarget : public Component, | |||
| public ApplicationCommandTarget | |||
| class KeyPressTarget final : public Component, | |||
| public ApplicationCommandTarget | |||
| { | |||
| public: | |||
| KeyPressTarget() | |||
| @@ -213,7 +213,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class KeyMappingsDemo : public Component | |||
| class KeyMappingsDemo final : public Component | |||
| { | |||
| public: | |||
| KeyMappingsDemo() | |||
| @@ -55,7 +55,7 @@ | |||
| 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. | |||
| */ | |||
| struct CustomLookAndFeel : public LookAndFeel_V4 | |||
| struct CustomLookAndFeel : public LookAndFeel_V4 | |||
| { | |||
| 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. | |||
| */ | |||
| struct SquareLookAndFeel : public CustomLookAndFeel | |||
| struct SquareLookAndFeel final : public CustomLookAndFeel | |||
| { | |||
| void drawButtonBackground (Graphics& g, Button& button, const Colour& backgroundColour, | |||
| bool isMouseOverButton, bool isButtonDown) override | |||
| @@ -434,7 +434,7 @@ struct SquareLookAndFeel : public CustomLookAndFeel | |||
| }; | |||
| //============================================================================== | |||
| struct LookAndFeelDemoComponent : public Component | |||
| struct LookAndFeelDemoComponent final : public Component | |||
| { | |||
| LookAndFeelDemoComponent() | |||
| { | |||
| @@ -521,7 +521,7 @@ struct LookAndFeelDemoComponent : public Component | |||
| }; | |||
| //============================================================================== | |||
| class LookAndFeelDemo : public Component | |||
| class LookAndFeelDemo final : public Component | |||
| { | |||
| public: | |||
| LookAndFeelDemo() | |||
| @@ -53,8 +53,8 @@ | |||
| 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. | |||
| */ | |||
| class Note : public Component, | |||
| public FileBasedDocument | |||
| class Note final : public Component, | |||
| public FileBasedDocument | |||
| { | |||
| public: | |||
| 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. | |||
| */ | |||
| class DemoMultiDocumentPanel : public MultiDocumentPanel | |||
| class DemoMultiDocumentPanel final : public MultiDocumentPanel | |||
| { | |||
| public: | |||
| DemoMultiDocumentPanel() = default; | |||
| @@ -165,8 +165,8 @@ private: | |||
| /** 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. | |||
| */ | |||
| class MDIDemo : public Component, | |||
| public FileDragAndDropTarget | |||
| class MDIDemo final : public Component, | |||
| public FileDragAndDropTarget | |||
| { | |||
| public: | |||
| MDIDemo() | |||
| @@ -54,7 +54,7 @@ | |||
| is enabled. It contains an icon that can be used to show the side panel containing | |||
| the menu. | |||
| */ | |||
| struct BurgerMenuHeader : public Component | |||
| struct BurgerMenuHeader final : public Component | |||
| { | |||
| BurgerMenuHeader (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: | |||
| //============================================================================== | |||
| @@ -341,8 +341,8 @@ private: | |||
| Command messages that aren't handled in the main component will be passed | |||
| to this class to respond to. | |||
| */ | |||
| class OuterCommandTarget : public Component, | |||
| public ApplicationCommandTarget | |||
| class OuterCommandTarget final : public Component, | |||
| public ApplicationCommandTarget | |||
| { | |||
| public: | |||
| OuterCommandTarget (ApplicationCommandManager& m) | |||
| @@ -430,8 +430,8 @@ private: | |||
| Command messages that aren't handled in the OuterCommandTarget will be passed | |||
| to this class to respond to. | |||
| */ | |||
| struct InnerCommandTarget : public Component, | |||
| public ApplicationCommandTarget | |||
| struct InnerCommandTarget final : public Component, | |||
| public ApplicationCommandTarget | |||
| { | |||
| InnerCommandTarget (ApplicationCommandManager& m) | |||
| : commandManager (m) | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class MultiTouchDemo : public Component | |||
| class MultiTouchDemo final : public Component | |||
| { | |||
| public: | |||
| MultiTouchDemo() | |||
| @@ -54,7 +54,7 @@ | |||
| This component lives inside our window, and this is where you should put all | |||
| your controls and content. | |||
| */ | |||
| class OpenGLAppDemo : public OpenGLAppComponent | |||
| class OpenGLAppDemo final : public OpenGLAppComponent | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -951,7 +951,7 @@ private: | |||
| Graphics g (*glRenderer); | |||
| g.addTransform (AffineTransform::scale (desktopScale)); | |||
| for (auto s : stars) | |||
| for (const auto& s : stars) | |||
| { | |||
| auto size = 0.25f; | |||
| @@ -49,9 +49,9 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class OpenGLDemo2D : public Component, | |||
| private CodeDocument::Listener, | |||
| private Timer | |||
| class OpenGLDemo2D final : public Component, | |||
| private CodeDocument::Listener, | |||
| private Timer | |||
| { | |||
| public: | |||
| OpenGLDemo2D() | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class DemoButtonPropertyComponent : public ButtonPropertyComponent | |||
| class DemoButtonPropertyComponent final : public ButtonPropertyComponent | |||
| { | |||
| public: | |||
| DemoButtonPropertyComponent (const String& propertyName) | |||
| @@ -80,7 +80,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class DemoSliderPropertyComponent : public SliderPropertyComponent | |||
| class DemoSliderPropertyComponent final : public SliderPropertyComponent | |||
| { | |||
| public: | |||
| 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: | |||
| PropertiesDemo() | |||
| @@ -51,9 +51,9 @@ | |||
| #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.. | |||
| class MovieComponentWithFileBrowser : public Component, | |||
| public DragAndDropTarget, | |||
| private FilenameComponentListener | |||
| class MovieComponentWithFileBrowser final : public Component, | |||
| public DragAndDropTarget, | |||
| private FilenameComponentListener | |||
| { | |||
| public: | |||
| MovieComponentWithFileBrowser() | |||
| @@ -147,9 +147,9 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class VideoDemo : public Component, | |||
| public DragAndDropContainer, | |||
| private FileBrowserListener | |||
| class VideoDemo final : public Component, | |||
| public DragAndDropContainer, | |||
| private FileBrowserListener | |||
| { | |||
| public: | |||
| VideoDemo() | |||
| @@ -269,8 +269,8 @@ private: | |||
| }; | |||
| #elif JUCE_IOS || JUCE_ANDROID | |||
| //============================================================================== | |||
| class VideoDemo : public Component, | |||
| private Timer | |||
| class VideoDemo final : public Component, | |||
| private Timer | |||
| { | |||
| public: | |||
| VideoDemo() | |||
| @@ -55,7 +55,7 @@ | |||
| when the browser changes URL. You don't need to do this, you can just also | |||
| just use the WebBrowserComponent class directly. | |||
| */ | |||
| class DemoBrowserComponent : public WebBrowserComponent | |||
| class DemoBrowserComponent final : public WebBrowserComponent | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -89,7 +89,7 @@ private: | |||
| //============================================================================== | |||
| class WebBrowserDemo : public Component | |||
| class WebBrowserDemo final : public Component | |||
| { | |||
| public: | |||
| 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, | |||
| 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 | |||
| { | |||
| @@ -74,8 +74,8 @@ struct SnappingSlider : public Slider | |||
| }; | |||
| /** 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: | |||
| ColourChangeButton() | |||
| @@ -112,7 +112,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| struct SlidersPage : public Component | |||
| struct SlidersPage final : public Component | |||
| { | |||
| SlidersPage() | |||
| { | |||
| @@ -261,7 +261,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| struct ButtonsPage : public Component | |||
| struct ButtonsPage final : public Component | |||
| { | |||
| ButtonsPage (bool isRunningComponentTransformDemo) | |||
| { | |||
| @@ -461,8 +461,8 @@ private: | |||
| //============================================================================== | |||
| struct MiscPage : public Component, | |||
| private Timer | |||
| struct MiscPage final : public Component, | |||
| private Timer | |||
| { | |||
| MiscPage() | |||
| { | |||
| @@ -540,7 +540,7 @@ struct MiscPage : public Component, | |||
| }; | |||
| //============================================================================== | |||
| struct MenuPage : public Component | |||
| struct MenuPage final : public Component | |||
| { | |||
| 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: | |||
| ToolbarDemoComp() | |||
| @@ -802,7 +802,7 @@ private: | |||
| customiseButton { "Customise..." }; | |||
| //============================================================================== | |||
| class DemoToolbarItemFactory : public ToolbarItemFactory | |||
| class DemoToolbarItemFactory final : public ToolbarItemFactory | |||
| { | |||
| public: | |||
| DemoToolbarItemFactory() {} | |||
| @@ -977,8 +977,8 @@ private: | |||
| /** | |||
| 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: | |||
| TableDemoComponent() | |||
| @@ -1303,8 +1303,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class DragAndDropDemo : public Component, | |||
| public DragAndDropContainer | |||
| class DragAndDropDemo final : public Component, | |||
| public DragAndDropContainer | |||
| { | |||
| public: | |||
| DragAndDropDemo() | |||
| @@ -1509,7 +1509,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| struct DemoTabbedComponent : public TabbedComponent | |||
| struct DemoTabbedComponent final : public TabbedComponent | |||
| { | |||
| DemoTabbedComponent (bool isRunningComponenTransformsDemo) | |||
| : TabbedComponent (TabbedButtonBar::TabsAtTop) | |||
| @@ -1567,7 +1567,7 @@ struct DemoTabbedComponent : public TabbedComponent | |||
| }; | |||
| //============================================================================== | |||
| struct WidgetsDemo : public Component | |||
| struct WidgetsDemo final : public Component | |||
| { | |||
| WidgetsDemo (bool isRunningComponenTransformsDemo = false) | |||
| : tabs (isRunningComponenTransformsDemo) | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| /** Just a simple window that deletes itself when closed. */ | |||
| class BasicWindow : public DocumentWindow | |||
| class BasicWindow final : public DocumentWindow | |||
| { | |||
| public: | |||
| 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. */ | |||
| class ColourSelectorWindow : public DocumentWindow, | |||
| private ChangeListener | |||
| class ColourSelectorWindow final : public DocumentWindow, | |||
| private ChangeListener | |||
| { | |||
| public: | |||
| 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: | |||
| BouncingBallComponent() | |||
| @@ -159,7 +159,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class BouncingBallsContainer : public Component | |||
| class BouncingBallsContainer final : public Component | |||
| { | |||
| public: | |||
| BouncingBallsContainer (int numBalls) | |||
| @@ -207,7 +207,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class WindowsDemo : public Component | |||
| class WindowsDemo final : public Component | |||
| { | |||
| public: | |||
| enum Windows | |||
| @@ -53,7 +53,7 @@ | |||
| #include <ARA_Library/Utilities/ARATimelineConversion.h> | |||
| //============================================================================== | |||
| class ARADemoPluginAudioModification : public ARAAudioModification | |||
| class ARADemoPluginAudioModification final : public ARAAudioModification | |||
| { | |||
| public: | |||
| ARADemoPluginAudioModification (ARAAudioSource* audioSource, | |||
| @@ -79,7 +79,7 @@ struct PreviewState | |||
| std::atomic<ARAPlaybackRegion*> previewedRegion { nullptr }; | |||
| }; | |||
| class SharedTimeSliceThread : public TimeSliceThread | |||
| class SharedTimeSliceThread final : public TimeSliceThread | |||
| { | |||
| public: | |||
| SharedTimeSliceThread() | |||
| @@ -89,7 +89,7 @@ public: | |||
| } | |||
| }; | |||
| class AsyncConfigurationCallback : private AsyncUpdater | |||
| class AsyncConfigurationCallback final : private AsyncUpdater | |||
| { | |||
| public: | |||
| explicit AsyncConfigurationCallback (std::function<void()> callbackIn) | |||
| @@ -303,7 +303,7 @@ struct ProcessingLockInterface | |||
| }; | |||
| //============================================================================== | |||
| class PlaybackRenderer : public ARAPlaybackRenderer | |||
| class PlaybackRenderer final : public ARAPlaybackRenderer | |||
| { | |||
| public: | |||
| PlaybackRenderer (ARA::PlugIn::DocumentController* dc, ProcessingLockInterface& lockInterfaceIn) | |||
| @@ -480,8 +480,8 @@ private: | |||
| std::unique_ptr<AudioBuffer<float>> tempBuffer; | |||
| }; | |||
| class EditorRenderer : public ARAEditorRenderer, | |||
| private ARARegionSequence::Listener | |||
| class EditorRenderer final : public ARAEditorRenderer, | |||
| private ARARegionSequence::Listener | |||
| { | |||
| public: | |||
| EditorRenderer (ARA::PlugIn::DocumentController* documentController, | |||
| @@ -699,8 +699,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class ARADemoPluginDocumentControllerSpecialisation : public ARADocumentControllerSpecialisation, | |||
| private ProcessingLockInterface | |||
| class ARADemoPluginDocumentControllerSpecialisation final : public ARADocumentControllerSpecialisation, | |||
| private ProcessingLockInterface | |||
| { | |||
| public: | |||
| using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation; | |||
| @@ -853,8 +853,8 @@ struct PlayHeadState | |||
| }; | |||
| //============================================================================== | |||
| class ARADemoPluginAudioProcessorImpl : public AudioProcessor, | |||
| public AudioProcessorARAExtension | |||
| class ARADemoPluginAudioProcessorImpl : public AudioProcessor, | |||
| public AudioProcessorARAExtension | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -985,14 +985,14 @@ private: | |||
| 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: | |||
| class CycleMarkerComponent : public Component | |||
| class CycleMarkerComponent final : public Component | |||
| { | |||
| void paint (Graphics& g) override | |||
| { | |||
| @@ -1233,7 +1233,7 @@ private: | |||
| bool isDraggingCycle = false; | |||
| }; | |||
| class RulersHeader : public Component | |||
| class RulersHeader final : public Component | |||
| { | |||
| public: | |||
| RulersHeader() | |||
| @@ -1274,7 +1274,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| struct WaveformCache : private ARAAudioSource::Listener | |||
| struct WaveformCache final : private ARAAudioSource::Listener | |||
| { | |||
| WaveformCache() : thumbnailCache (20) | |||
| { | |||
| @@ -1325,12 +1325,12 @@ private: | |||
| 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: | |||
| PlaybackRegionView (ARAEditorView& editorView, ARAPlaybackRegion& region, WaveformCache& cache) | |||
| @@ -1467,7 +1467,7 @@ public: | |||
| } | |||
| private: | |||
| class PreviewRegionOverlay : public Component | |||
| class PreviewRegionOverlay final : public Component | |||
| { | |||
| static constexpr auto previewLength = 0.5; | |||
| @@ -1522,11 +1522,11 @@ private: | |||
| 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: | |||
| RegionSequenceView (ARAEditorView& editorView, TimeToViewScaling& scaling, ARARegionSequence& rs, WaveformCache& cache) | |||
| @@ -1645,7 +1645,7 @@ private: | |||
| double playbackDuration = 0.0; | |||
| }; | |||
| class ZoomControls : public Component | |||
| class ZoomControls final : public Component | |||
| { | |||
| public: | |||
| ZoomControls() | |||
| @@ -1672,8 +1672,8 @@ private: | |||
| TextButton zoomInButton { "+" }, zoomOutButton { "-" }; | |||
| }; | |||
| class PlayheadPositionLabel : public Label, | |||
| private Timer | |||
| class PlayheadPositionLabel final : public Label, | |||
| private Timer | |||
| { | |||
| public: | |||
| PlayheadPositionLabel (PlayHeadState& playHeadStateIn) | |||
| @@ -1769,9 +1769,9 @@ private: | |||
| 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: | |||
| TrackHeader (ARAEditorView& editorView, ARARegionSequence& regionSequenceIn) | |||
| @@ -1848,7 +1848,7 @@ private: | |||
| constexpr auto trackHeight = 60; | |||
| class VerticalLayoutViewportContent : public Component | |||
| class VerticalLayoutViewportContent final : public Component | |||
| { | |||
| public: | |||
| void resized() override | |||
| @@ -1863,7 +1863,7 @@ public: | |||
| } | |||
| }; | |||
| class VerticalLayoutViewport : public Viewport | |||
| class VerticalLayoutViewport final : public Viewport | |||
| { | |||
| public: | |||
| 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: | |||
| class PlayheadMarkerComponent : public Component | |||
| class PlayheadMarkerComponent final : public Component | |||
| { | |||
| void paint (Graphics& g) override { g.fillAll (Colours::yellow.darker (0.2f)); } | |||
| }; | |||
| @@ -1981,11 +1981,11 @@ private: | |||
| 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: | |||
| DocumentView (ARAEditorView& editorView, PlayHeadState& playHeadState) | |||
| @@ -2287,8 +2287,8 @@ private: | |||
| }; | |||
| class ARADemoPluginProcessorEditor : public AudioProcessorEditor, | |||
| public AudioProcessorEditorARAExtension | |||
| class ARADemoPluginProcessorEditor final : public AudioProcessorEditor, | |||
| public AudioProcessorEditorARAExtension | |||
| { | |||
| public: | |||
| explicit ARADemoPluginProcessorEditor (ARADemoPluginAudioProcessorImpl& p) | |||
| @@ -2334,7 +2334,7 @@ private: | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARADemoPluginProcessorEditor) | |||
| }; | |||
| class ARADemoPluginAudioProcessor : public ARADemoPluginAudioProcessorImpl | |||
| class ARADemoPluginAudioProcessor final : public ARADemoPluginAudioProcessorImpl | |||
| { | |||
| public: | |||
| bool hasEditor() const override { return true; } | |||
| @@ -54,7 +54,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class MaterialLookAndFeel : public LookAndFeel_V4 | |||
| class MaterialLookAndFeel final : public LookAndFeel_V4 | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -178,8 +178,8 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class AUv3SynthEditor : public AudioProcessorEditor, | |||
| private Timer | |||
| class AUv3SynthEditor final : public AudioProcessorEditor, | |||
| private Timer | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -309,7 +309,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class AUv3SynthProcessor : public AudioProcessor | |||
| class AUv3SynthProcessor final : public AudioProcessor | |||
| { | |||
| public: | |||
| AUv3SynthProcessor () | |||
| @@ -52,7 +52,7 @@ | |||
| //============================================================================== | |||
| class Arpeggiator : public AudioProcessor | |||
| class Arpeggiator final : public AudioProcessor | |||
| { | |||
| public: | |||
| @@ -55,7 +55,7 @@ | |||
| //============================================================================== | |||
| /** A demo synth sound that's just a basic sine wave.. */ | |||
| class SineWaveSound : public SynthesiserSound | |||
| class SineWaveSound final : public SynthesiserSound | |||
| { | |||
| public: | |||
| SineWaveSound() {} | |||
| @@ -66,7 +66,7 @@ public: | |||
| //============================================================================== | |||
| /** A simple demo synth voice that just plays a sine wave.. */ | |||
| class SineWaveVoice : public SynthesiserVoice | |||
| class SineWaveVoice final : public SynthesiserVoice | |||
| { | |||
| public: | |||
| SineWaveVoice() {} | |||
| @@ -175,7 +175,7 @@ private: | |||
| //============================================================================== | |||
| /** As the name suggest, this class does the actual audio processing. */ | |||
| class JuceDemoPluginAudioProcessor : public AudioProcessor | |||
| class JuceDemoPluginAudioProcessor final : public AudioProcessor | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -362,9 +362,9 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| /** 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: | |||
| 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: | |||
| DspModulePluginDemo() | |||
| : DspModulePluginDemo (AudioProcessorValueTreeState::ParameterLayout{}) {} | |||
| //============================================================================== | |||
| void prepareToPlay (double sampleRate, int samplesPerBlock) override | |||
| void prepareToPlay (double sampleRate, int samplesPerBlock) final | |||
| { | |||
| const auto channels = jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()); | |||
| @@ -163,15 +163,15 @@ public: | |||
| reset(); | |||
| } | |||
| void reset() override | |||
| void reset() final | |||
| { | |||
| chain.reset(); | |||
| 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) | |||
| return; | |||
| @@ -195,43 +195,43 @@ public: | |||
| chain.process (dsp::ProcessContextReplacing<float> (inoutBlock)); | |||
| } | |||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) override {} | |||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) final {} | |||
| //============================================================================== | |||
| AudioProcessorEditor* createEditor() override { return nullptr; } | |||
| 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() }, | |||
| { AudioChannelSet::stereo() } }; | |||
| } | |||
| //============================================================================== | |||
| void getStateInformation (MemoryBlock& destData) override | |||
| void getStateInformation (MemoryBlock& destData) final | |||
| { | |||
| 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))); | |||
| } | |||
| @@ -811,7 +811,7 @@ private: | |||
| } | |||
| //============================================================================== | |||
| void valueTreePropertyChanged (ValueTree&, const Identifier&) override | |||
| void valueTreePropertyChanged (ValueTree&, const Identifier&) final | |||
| { | |||
| requiresUpdate.store (true); | |||
| } | |||
| @@ -1498,7 +1498,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class DspModulePluginDemoEditor : public AudioProcessorEditor | |||
| class DspModulePluginDemoEditor final : public AudioProcessorEditor | |||
| { | |||
| public: | |||
| explicit DspModulePluginDemoEditor (DspModulePluginDemo& p) | |||
| @@ -1637,7 +1637,7 @@ private: | |||
| RangedAudioParameter& param; | |||
| }; | |||
| class AttachedSlider : public ComponentWithParamMenu | |||
| class AttachedSlider final : public ComponentWithParamMenu | |||
| { | |||
| public: | |||
| AttachedSlider (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | |||
| @@ -1663,7 +1663,7 @@ private: | |||
| SliderParameterAttachment attachment; | |||
| }; | |||
| class AttachedToggle : public ComponentWithParamMenu | |||
| class AttachedToggle final : public ComponentWithParamMenu | |||
| { | |||
| public: | |||
| AttachedToggle (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | |||
| @@ -1682,7 +1682,7 @@ private: | |||
| ButtonParameterAttachment attachment; | |||
| }; | |||
| class AttachedCombo : public ComponentWithParamMenu | |||
| class AttachedCombo final : public ComponentWithParamMenu | |||
| { | |||
| public: | |||
| AttachedCombo (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) | |||
| @@ -1795,7 +1795,7 @@ private: | |||
| grid.performLayout (bounds); | |||
| } | |||
| struct BasicControls : public Component | |||
| struct BasicControls final : public Component | |||
| { | |||
| explicit BasicControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::MainGroup& state) | |||
| @@ -1814,7 +1814,7 @@ private: | |||
| AttachedSlider pan, input, output; | |||
| }; | |||
| struct DistortionControls : public Component | |||
| struct DistortionControls final : public Component | |||
| { | |||
| explicit DistortionControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::DistortionGroup& state) | |||
| @@ -1840,7 +1840,7 @@ private: | |||
| AttachedCombo type, oversampling; | |||
| }; | |||
| struct ConvolutionControls : public Component | |||
| struct ConvolutionControls final : public Component | |||
| { | |||
| explicit ConvolutionControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::ConvolutionGroup& state) | |||
| @@ -1860,7 +1860,7 @@ private: | |||
| AttachedSlider mix; | |||
| }; | |||
| struct MultiBandControls : public Component | |||
| struct MultiBandControls final : public Component | |||
| { | |||
| explicit MultiBandControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::MultiBandGroup& state) | |||
| @@ -1881,7 +1881,7 @@ private: | |||
| AttachedSlider low, high, lRFreq; | |||
| }; | |||
| struct CompressorControls : public Component | |||
| struct CompressorControls final : public Component | |||
| { | |||
| explicit CompressorControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::CompressorGroup& state) | |||
| @@ -1903,7 +1903,7 @@ private: | |||
| AttachedSlider threshold, ratio, attack, release; | |||
| }; | |||
| struct NoiseGateControls : public Component | |||
| struct NoiseGateControls final : public Component | |||
| { | |||
| explicit NoiseGateControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::NoiseGateGroup& state) | |||
| @@ -1925,7 +1925,7 @@ private: | |||
| AttachedSlider threshold, ratio, attack, release; | |||
| }; | |||
| struct LimiterControls : public Component | |||
| struct LimiterControls final : public Component | |||
| { | |||
| explicit LimiterControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::LimiterGroup& state) | |||
| @@ -1945,7 +1945,7 @@ private: | |||
| AttachedSlider threshold, release; | |||
| }; | |||
| struct DirectDelayControls : public Component | |||
| struct DirectDelayControls final : public Component | |||
| { | |||
| explicit DirectDelayControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::DirectDelayGroup& state) | |||
| @@ -1968,7 +1968,7 @@ private: | |||
| AttachedSlider delay, smooth, mix; | |||
| }; | |||
| struct DelayEffectControls : public Component | |||
| struct DelayEffectControls final : public Component | |||
| { | |||
| explicit DelayEffectControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::DelayEffectGroup& state) | |||
| @@ -1993,7 +1993,7 @@ private: | |||
| AttachedSlider value, smooth, lowpass, feedback, mix; | |||
| }; | |||
| struct PhaserControls : public Component | |||
| struct PhaserControls final : public Component | |||
| { | |||
| explicit PhaserControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::PhaserGroup& state) | |||
| @@ -2016,7 +2016,7 @@ private: | |||
| AttachedSlider rate, depth, centre, feedback, mix; | |||
| }; | |||
| struct ChorusControls : public Component | |||
| struct ChorusControls final : public Component | |||
| { | |||
| explicit ChorusControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::ChorusGroup& state) | |||
| @@ -2039,7 +2039,7 @@ private: | |||
| AttachedSlider rate, depth, centre, feedback, mix; | |||
| }; | |||
| struct LadderControls : public Component | |||
| struct LadderControls final : public Component | |||
| { | |||
| explicit LadderControls (AudioProcessorEditor& editor, | |||
| const DspModulePluginDemo::ParameterReferences::LadderGroup& state) | |||
| @@ -2088,7 +2088,7 @@ private: | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DspModulePluginDemoEditor) | |||
| }; | |||
| struct DspModulePluginDemoAudioProcessor : public DspModulePluginDemo | |||
| struct DspModulePluginDemoAudioProcessor final : public DspModulePluginDemo | |||
| { | |||
| AudioProcessorEditor* createEditor() override | |||
| { | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| class GainProcessor : public AudioProcessor | |||
| class GainProcessor final : public AudioProcessor | |||
| { | |||
| public: | |||
| @@ -88,7 +88,7 @@ public: | |||
| pluginList.addChangeListener (this); | |||
| } | |||
| bool isBusesLayoutSupported (const BusesLayout& layouts) const override | |||
| bool isBusesLayoutSupported (const BusesLayout& layouts) const final | |||
| { | |||
| const auto& mainOutput = layouts.getMainOutputChannelSet(); | |||
| const auto& mainInput = layouts.getMainInputChannelSet(); | |||
| @@ -102,7 +102,7 @@ public: | |||
| return true; | |||
| } | |||
| void prepareToPlay (double sr, int bs) override | |||
| void prepareToPlay (double sr, int bs) final | |||
| { | |||
| const ScopedLock sl (innerMutex); | |||
| @@ -115,7 +115,7 @@ public: | |||
| } | |||
| } | |||
| void releaseResources() override | |||
| void releaseResources() final | |||
| { | |||
| const ScopedLock sl (innerMutex); | |||
| @@ -125,7 +125,7 @@ public: | |||
| inner->releaseResources(); | |||
| } | |||
| void reset() override | |||
| void reset() final | |||
| { | |||
| const ScopedLock sl (innerMutex); | |||
| @@ -136,12 +136,12 @@ public: | |||
| // 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 | |||
| // 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()); | |||
| } | |||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) override | |||
| void processBlock (AudioBuffer<double>&, MidiBuffer&) final | |||
| { | |||
| jassert (isUsingDoublePrecision()); | |||
| } | |||
| @@ -149,18 +149,18 @@ public: | |||
| bool hasEditor() const override { return false; } | |||
| 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); | |||
| @@ -185,7 +185,7 @@ public: | |||
| 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); | |||
| @@ -285,7 +285,7 @@ private: | |||
| static constexpr const char* innerStateTag = "inner_state"; | |||
| static constexpr const char* editorStyleTag = "editor_style"; | |||
| void changeListenerCallback (ChangeBroadcaster* source) override | |||
| void changeListenerCallback (ChangeBroadcaster* source) final | |||
| { | |||
| if (source != &pluginList) | |||
| return; | |||
| @@ -312,7 +312,7 @@ static void doLayout (Component* main, Component& bottom, int bottomHeight, Rect | |||
| grid.performLayout (bounds); | |||
| } | |||
| class PluginLoaderComponent : public Component | |||
| class PluginLoaderComponent final : public Component | |||
| { | |||
| public: | |||
| template <typename Callback> | |||
| @@ -348,7 +348,7 @@ public: | |||
| } | |||
| private: | |||
| struct Buttons : public Component | |||
| struct Buttons final : public Component | |||
| { | |||
| Buttons() | |||
| { | |||
| @@ -390,7 +390,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class PluginEditorComponent : public Component | |||
| class PluginEditorComponent final : public Component | |||
| { | |||
| public: | |||
| template <typename Callback> | |||
| @@ -435,7 +435,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class ScaledDocumentWindow : public DocumentWindow | |||
| class ScaledDocumentWindow final : public DocumentWindow | |||
| { | |||
| public: | |||
| ScaledDocumentWindow (Colour bg, float scale) | |||
| @@ -448,7 +448,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class HostAudioProcessorEditor : public AudioProcessorEditor | |||
| class HostAudioProcessorEditor final : public AudioProcessorEditor | |||
| { | |||
| public: | |||
| explicit HostAudioProcessorEditor (HostAudioProcessorImpl& owner) | |||
| @@ -576,7 +576,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class HostAudioProcessor : public HostAudioProcessorImpl | |||
| class HostAudioProcessor final : public HostAudioProcessorImpl | |||
| { | |||
| public: | |||
| 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: | |||
| MidiTable (MidiListModel& m) | |||
| @@ -220,8 +220,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class MidiLoggerPluginDemoProcessor : public AudioProcessor, | |||
| private Timer | |||
| class MidiLoggerPluginDemoProcessor final : public AudioProcessor, | |||
| private Timer | |||
| { | |||
| public: | |||
| MidiLoggerPluginDemoProcessor() | |||
| @@ -268,8 +268,8 @@ public: | |||
| } | |||
| private: | |||
| class Editor : public AudioProcessorEditor, | |||
| private Value::Listener | |||
| class Editor final : public AudioProcessorEditor, | |||
| private Value::Listener | |||
| { | |||
| public: | |||
| explicit Editor (MidiLoggerPluginDemoProcessor& ownerIn) | |||
| @@ -53,7 +53,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class MultiOutSynth : public AudioProcessor | |||
| class MultiOutSynth final : public AudioProcessor | |||
| { | |||
| public: | |||
| enum | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| class NoiseGate : public AudioProcessor | |||
| class NoiseGate final : public AudioProcessor | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -111,7 +111,7 @@ struct EmbeddedViewListener | |||
| JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor") | |||
| //============================================================================== | |||
| class EmbeddedUI : public reaper::IReaperUIEmbedInterface | |||
| class EmbeddedUI final : public reaper::IReaperUIEmbedInterface | |||
| { | |||
| public: | |||
| explicit EmbeddedUI (EmbeddedViewListener& demo) : listener (demo) {} | |||
| @@ -146,7 +146,7 @@ private: | |||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||
| class VST2Extensions : public VST2ClientExtensions | |||
| class VST2Extensions final : public VST2ClientExtensions | |||
| { | |||
| public: | |||
| explicit VST2Extensions (EmbeddedViewListener& l) | |||
| @@ -187,7 +187,7 @@ private: | |||
| EmbeddedViewListener& listener; | |||
| }; | |||
| class VST3Extensions : public VST3ClientExtensions | |||
| class VST3Extensions final : public VST3ClientExtensions | |||
| { | |||
| public: | |||
| explicit VST3Extensions (EmbeddedViewListener& l) | |||
| @@ -222,7 +222,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class Editor : public AudioProcessorEditor | |||
| class Editor final : public AudioProcessorEditor | |||
| { | |||
| public: | |||
| 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: | |||
| ReaperEmbeddedViewDemo() | |||
| @@ -111,8 +111,8 @@ struct Command | |||
| }; | |||
| template <typename Proc, typename Func> | |||
| class TemplateCommand : public Command<Proc>, | |||
| private Func | |||
| class TemplateCommand final : public Command<Proc>, | |||
| private Func | |||
| { | |||
| public: | |||
| template <typename FuncPrime> | |||
| @@ -257,7 +257,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class MPESamplerVoice : public MPESynthesiserVoice | |||
| class MPESamplerVoice final : public MPESynthesiserVoice | |||
| { | |||
| public: | |||
| explicit MPESamplerVoice (std::shared_ptr<const MPESamplerSound> sound) | |||
| @@ -501,7 +501,7 @@ private: | |||
| }; | |||
| template <typename Contents> | |||
| class ReferenceCountingAdapter : public ReferenceCountedObject | |||
| class ReferenceCountingAdapter final : public ReferenceCountedObject | |||
| { | |||
| public: | |||
| template <typename... Args> | |||
| @@ -564,7 +564,7 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| class MemoryAudioFormatReaderFactory : public AudioFormatReaderFactory | |||
| class MemoryAudioFormatReaderFactory final : public AudioFormatReaderFactory | |||
| { | |||
| public: | |||
| MemoryAudioFormatReaderFactory (const void* sampleDataIn, size_t dataSizeIn) | |||
| @@ -588,7 +588,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class FileAudioFormatReaderFactory : public AudioFormatReaderFactory | |||
| class FileAudioFormatReaderFactory final : public AudioFormatReaderFactory | |||
| { | |||
| public: | |||
| explicit FileAudioFormatReaderFactory (File fileIn) | |||
| @@ -643,20 +643,20 @@ struct GenericVariantConverter | |||
| }; | |||
| template <typename Numeric> | |||
| struct VariantConverter<Range<Numeric>> : GenericVariantConverter<Range<Numeric>> {}; | |||
| struct VariantConverter<Range<Numeric>> final : GenericVariantConverter<Range<Numeric>> {}; | |||
| template<> | |||
| struct VariantConverter<MPEZoneLayout> : GenericVariantConverter<MPEZoneLayout> {}; | |||
| struct VariantConverter<MPEZoneLayout> final : GenericVariantConverter<MPEZoneLayout> {}; | |||
| template<> | |||
| struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>> | |||
| struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>> final | |||
| : GenericVariantConverter<std::shared_ptr<AudioFormatReaderFactory>> | |||
| {}; | |||
| } // namespace juce | |||
| //============================================================================== | |||
| class VisibleRangeDataModel : private ValueTree::Listener | |||
| class VisibleRangeDataModel final : private ValueTree::Listener | |||
| { | |||
| public: | |||
| class Listener | |||
| @@ -757,7 +757,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class MPESettingsDataModel : private ValueTree::Listener | |||
| class MPESettingsDataModel final : private ValueTree::Listener | |||
| { | |||
| public: | |||
| class Listener | |||
| @@ -947,7 +947,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class DataModel : private ValueTree::Listener | |||
| class DataModel final : private ValueTree::Listener | |||
| { | |||
| public: | |||
| class Listener | |||
| @@ -1132,8 +1132,8 @@ constexpr int controlSeparation = 6; | |||
| } // namespace | |||
| //============================================================================== | |||
| class MPELegacySettingsComponent final : public Component, | |||
| private MPESettingsDataModel::Listener | |||
| class MPELegacySettingsComponent final : public Component, | |||
| private MPESettingsDataModel::Listener | |||
| { | |||
| public: | |||
| 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: | |||
| 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: | |||
| MPESettingsComponent (const MPESettingsDataModel& model, | |||
| @@ -1446,7 +1446,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class LoopPointMarker : public Component | |||
| class LoopPointMarker final : public Component | |||
| { | |||
| public: | |||
| 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: | |||
| 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: | |||
| 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: | |||
| 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: | |||
| 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: | |||
| 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: | |||
| MainSamplerView (const DataModel& model, | |||
| @@ -2103,7 +2103,7 @@ struct ProcessorState | |||
| }; | |||
| //============================================================================== | |||
| class SamplerAudioProcessor : public AudioProcessor | |||
| class SamplerAudioProcessor final : public AudioProcessor | |||
| { | |||
| public: | |||
| SamplerAudioProcessor() | |||
| @@ -2366,10 +2366,10 @@ public: | |||
| 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: | |||
| SamplerAudioProcessorEditor (SamplerAudioProcessor& p, ProcessorState state) | |||
| @@ -105,7 +105,7 @@ public: | |||
| samplesPlayed = samplesToPlay; | |||
| } | |||
| bool applyBusLayouts (const BusesLayout& layouts) override | |||
| bool applyBusLayouts (const BusesLayout& layouts) final | |||
| { | |||
| // Some very badly-behaved hosts will call this during processing! | |||
| const SpinLock::ScopedLockType lock (levelMutex); | |||
| @@ -225,8 +225,8 @@ inline void configureLabel (Label& label, const AudioProcessor::Bus* layout) | |||
| label.setColour (Label::textColourId, textColour); | |||
| } | |||
| class InputBusViewer : public Component, | |||
| private Timer | |||
| class InputBusViewer final : public Component, | |||
| private Timer | |||
| { | |||
| public: | |||
| InputBusViewer (ProcessorWithLevels& proc, int busNumber) | |||
| @@ -306,7 +306,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class OutputBusViewer : public Component | |||
| class OutputBusViewer final : public Component | |||
| { | |||
| public: | |||
| OutputBusViewer (ProcessorWithLevels& proc, int busNumber) | |||
| @@ -332,7 +332,7 @@ public: | |||
| channelButtons.emplace_back (channelName, channelName); | |||
| 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); | |||
| } | |||
| @@ -376,7 +376,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class SurroundEditor : public AudioProcessorEditor | |||
| class SurroundEditor final : public AudioProcessorEditor | |||
| { | |||
| public: | |||
| 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); } | |||
| bool hasEditor() const override { return true; } | |||
| @@ -58,7 +58,7 @@ enum DemoAnalyticsEventTypes | |||
| }; | |||
| //============================================================================== | |||
| class GoogleAnalyticsDestination : public ThreadedAnalyticsDestination | |||
| class GoogleAnalyticsDestination final : public ThreadedAnalyticsDestination | |||
| { | |||
| public: | |||
| GoogleAnalyticsDestination() | |||
| @@ -298,7 +298,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class AnalyticsCollectionDemo : public Component | |||
| class AnalyticsCollectionDemo final : public Component | |||
| { | |||
| 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 | |||
| selected row changes. | |||
| */ | |||
| class Box2DTestList : public ListBoxModel, | |||
| public ChangeBroadcaster | |||
| class Box2DTestList final : public ListBoxModel, | |||
| public ChangeBroadcaster | |||
| { | |||
| public: | |||
| Box2DTestList (const StringArray& testList) | |||
| @@ -134,7 +134,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| struct Box2DRenderComponent : public Component | |||
| struct Box2DRenderComponent final : public Component | |||
| { | |||
| 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: | |||
| 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: | |||
| ChildProcessDemo() | |||
| @@ -174,9 +174,9 @@ public: | |||
| //============================================================================== | |||
| // This class is used by the main process, acting as the coordinator and receiving messages | |||
| // from the worker process. | |||
| class DemoCoordinatorProcess : public ChildProcessCoordinator, | |||
| private DeletedAtShutdown, | |||
| private AsyncUpdater | |||
| class DemoCoordinatorProcess final : public ChildProcessCoordinator, | |||
| private DeletedAtShutdown, | |||
| private AsyncUpdater | |||
| { | |||
| public: | |||
| DemoCoordinatorProcess (ChildProcessDemo& d) : demo (d) {} | |||
| @@ -257,8 +257,8 @@ private: | |||
| /* This class gets instantiated in the child process, and receives messages from | |||
| the coordinator process. | |||
| */ | |||
| class DemoWorkerProcess : public ChildProcessWorker, | |||
| private DeletedAtShutdown | |||
| class DemoWorkerProcess final : public ChildProcessWorker, | |||
| private DeletedAtShutdown | |||
| { | |||
| public: | |||
| 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. | |||
| // Instead, we don't do anything in Main.cpp and create a JUCEApplication subclass here with | |||
| // the necessary modifications. | |||
| class Application : public JUCEApplication | |||
| class Application final : public JUCEApplication | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class RSAComponent : public Component | |||
| class RSAComponent final : public Component | |||
| { | |||
| public: | |||
| RSAComponent() | |||
| @@ -141,7 +141,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class HashesComponent : public Component | |||
| class HashesComponent final : public Component | |||
| { | |||
| public: | |||
| HashesComponent() | |||
| @@ -238,7 +238,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class CryptographyDemo : public Component | |||
| class CryptographyDemo final : public Component | |||
| { | |||
| public: | |||
| CryptographyDemo() | |||
| @@ -67,7 +67,7 @@ | |||
| */ | |||
| //============================================================================== | |||
| class VoicePurchases : private InAppPurchases::Listener | |||
| class VoicePurchases final : private InAppPurchases::Listener | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -278,7 +278,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class PhraseModel : public ListBoxModel | |||
| class PhraseModel final : public ListBoxModel | |||
| { | |||
| public: | |||
| PhraseModel() {} | |||
| @@ -308,12 +308,12 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class VoiceModel : public ListBoxModel | |||
| class VoiceModel final : public ListBoxModel | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| class VoiceRow : public Component, | |||
| private Timer | |||
| class VoiceRow final : public Component, | |||
| private Timer | |||
| { | |||
| public: | |||
| VoiceRow (VoicePurchases& voicePurchases) : purchases (voicePurchases) | |||
| @@ -491,8 +491,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class InAppPurchasesDemo : public Component, | |||
| private AsyncUpdater | |||
| class InAppPurchasesDemo final : public Component, | |||
| private AsyncUpdater | |||
| { | |||
| public: | |||
| InAppPurchasesDemo() | |||
| @@ -49,9 +49,9 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class JavaScriptDemo : public Component, | |||
| private CodeDocument::Listener, | |||
| private Timer | |||
| class JavaScriptDemo final : public Component, | |||
| private CodeDocument::Listener, | |||
| private Timer | |||
| { | |||
| public: | |||
| JavaScriptDemo() | |||
| @@ -125,7 +125,7 @@ public: | |||
| //============================================================================== | |||
| // 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) | |||
| { | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| struct LiveConstantDemoComponent : public Component | |||
| struct LiveConstantDemoComponent final : public Component | |||
| { | |||
| LiveConstantDemoComponent() {} | |||
| @@ -78,7 +78,7 @@ struct LiveConstantDemoComponent : public Component | |||
| }; | |||
| //============================================================================== | |||
| class LiveConstantDemo : public Component | |||
| class LiveConstantDemo final : public Component | |||
| { | |||
| public: | |||
| LiveConstantDemo() | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class BouncingBall : private ComponentListener | |||
| class BouncingBall : private ComponentListener | |||
| { | |||
| public: | |||
| BouncingBall (Component& comp) | |||
| @@ -145,8 +145,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class DemoThread : public BouncingBall, | |||
| public Thread | |||
| class DemoThread final : public BouncingBall, | |||
| public Thread | |||
| { | |||
| public: | |||
| DemoThread (Component& containerComp) | |||
| @@ -194,8 +194,8 @@ private: | |||
| //============================================================================== | |||
| class DemoThreadPoolJob : public BouncingBall, | |||
| public ThreadPoolJob | |||
| class DemoThreadPoolJob final : public BouncingBall, | |||
| public ThreadPoolJob | |||
| { | |||
| public: | |||
| DemoThreadPoolJob (Component& containerComp) | |||
| @@ -232,8 +232,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class MultithreadingDemo : public Component, | |||
| private Timer | |||
| class MultithreadingDemo final : public Component, | |||
| private Timer | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -49,8 +49,8 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class NetworkingDemo : public Component, | |||
| private Thread | |||
| class NetworkingDemo final : public Component, | |||
| private Thread | |||
| { | |||
| public: | |||
| NetworkingDemo() | |||
| @@ -48,9 +48,9 @@ | |||
| //============================================================================== | |||
| class OSCLogListBox : public ListBox, | |||
| private ListBoxModel, | |||
| private AsyncUpdater | |||
| class OSCLogListBox final : public ListBox, | |||
| private ListBoxModel, | |||
| private AsyncUpdater | |||
| { | |||
| public: | |||
| OSCLogListBox() | |||
| @@ -189,7 +189,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class OSCSenderDemo : public Component | |||
| class OSCSenderDemo final : public Component | |||
| { | |||
| public: | |||
| 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: | |||
| //============================================================================== | |||
| @@ -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: | |||
| //============================================================================== | |||
| @@ -465,7 +465,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class OSCDemo : public Component | |||
| class OSCDemo final : public Component | |||
| { | |||
| public: | |||
| 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: | |||
| //============================================================================== | |||
| @@ -781,7 +781,7 @@ private: | |||
| } | |||
| #endif | |||
| struct RowComponent : public Component | |||
| struct RowComponent final : public Component | |||
| { | |||
| RowComponent (Label& l, Component& c, int u = 1) | |||
| : label (l), | |||
| @@ -1123,7 +1123,7 @@ private: | |||
| OwnedArray<RowComponent> rowComponents; | |||
| }; | |||
| struct AuxActionsView : public Component | |||
| struct AuxActionsView final : public Component | |||
| { | |||
| AuxActionsView() | |||
| { | |||
| @@ -1177,7 +1177,7 @@ private: | |||
| TextButton removeAllPendingNotifsButton { "Remove All Pending Notifs" }; | |||
| }; | |||
| struct RemoteView : public Component | |||
| struct RemoteView final : public Component | |||
| { | |||
| RemoteView() | |||
| { | |||
| @@ -1209,7 +1209,7 @@ private: | |||
| TextButton unsubscribeFromSportsButton { "UnsubscribeFromSports" }; | |||
| }; | |||
| struct DemoTabbedComponent : public TabbedComponent | |||
| struct DemoTabbedComponent final : public TabbedComponent | |||
| { | |||
| DemoTabbedComponent (PushNotificationsDemo& demoIn, TabbedButtonBar::Orientation orientation) | |||
| : TabbedComponent (orientation), demo (demoIn) | |||
| @@ -219,7 +219,7 @@ static String getAllSystemInfo() | |||
| return systemInfo; | |||
| } | |||
| class SystemInfoDemo : public Component | |||
| class SystemInfoDemo final : public Component | |||
| { | |||
| public: | |||
| SystemInfoDemo() | |||
| @@ -50,7 +50,7 @@ | |||
| //============================================================================== | |||
| /** Simple message that holds a Colour. */ | |||
| struct ColourMessage : public Message | |||
| struct ColourMessage final : public Message | |||
| { | |||
| 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 | |||
| 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: | |||
| FlashingComponent() {} | |||
| @@ -144,8 +144,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class TimersAndEventsDemo : public Component, | |||
| private ChangeListener | |||
| class TimersAndEventsDemo final : public Component, | |||
| private ChangeListener | |||
| { | |||
| public: | |||
| TimersAndEventsDemo() | |||
| @@ -53,7 +53,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class UnitTestsDemo : public Component | |||
| class UnitTestsDemo final : public Component | |||
| { | |||
| public: | |||
| UnitTestsDemo() | |||
| @@ -146,8 +146,8 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| class TestRunnerThread : public Thread, | |||
| private Timer | |||
| class TestRunnerThread final : public Thread, | |||
| private Timer | |||
| { | |||
| public: | |||
| TestRunnerThread (UnitTestsDemo& utd, const String& ctg) | |||
| @@ -190,7 +190,7 @@ private: | |||
| //============================================================================== | |||
| // 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.. | |||
| class CustomTestRunner : public UnitTestRunner | |||
| class CustomTestRunner final : public UnitTestRunner | |||
| { | |||
| public: | |||
| CustomTestRunner (TestRunnerThread& trt) : owner (trt) {} | |||
| @@ -49,8 +49,8 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class ValueTreeItem : public TreeViewItem, | |||
| private ValueTree::Listener | |||
| class ValueTreeItem final : public TreeViewItem, | |||
| private ValueTree::Listener | |||
| { | |||
| public: | |||
| 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: | |||
| ValueTreesDemo() | |||
| @@ -49,7 +49,7 @@ | |||
| #include "../Assets/DemoUtilities.h" | |||
| //============================================================================== | |||
| class XmlTreeItem : public TreeViewItem | |||
| class XmlTreeItem final : public TreeViewItem | |||
| { | |||
| public: | |||
| XmlTreeItem (XmlElement& x) : xml (x) {} | |||
| @@ -115,7 +115,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class JsonTreeItem : public TreeViewItem | |||
| class JsonTreeItem final : public TreeViewItem | |||
| { | |||
| public: | |||
| 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: | |||
| /** The type of database to parse. */ | |||
| @@ -29,8 +29,8 @@ | |||
| #include <mutex> | |||
| //============================================================================== | |||
| class MainContentComponent : public AudioAppComponent, | |||
| private Timer | |||
| class MainContentComponent final : public AudioAppComponent, | |||
| private Timer | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -31,8 +31,8 @@ | |||
| #error "If you're building the audio plugin host, you probably want to enable VST and/or AU support" | |||
| #endif | |||
| class PluginScannerSubprocess : private ChildProcessWorker, | |||
| private AsyncUpdater | |||
| class PluginScannerSubprocess final : private ChildProcessWorker, | |||
| private AsyncUpdater | |||
| { | |||
| public: | |||
| PluginScannerSubprocess() | |||
| @@ -139,8 +139,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class PluginHostApp : public JUCEApplication, | |||
| private AsyncUpdater | |||
| class PluginHostApp final : public JUCEApplication, | |||
| private AsyncUpdater | |||
| { | |||
| public: | |||
| PluginHostApp() = default; | |||
| @@ -213,7 +213,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class AudioAccessController : public ARA::Host::AudioAccessControllerInterface | |||
| class AudioAccessController final : public ARA::Host::AudioAccessControllerInterface | |||
| { | |||
| public: | |||
| ARA::ARAAudioReaderHostRef createAudioReaderForSource (ARA::ARAAudioSourceHostRef audioSourceHostRef, | |||
| @@ -264,7 +264,7 @@ private: | |||
| std::map<AudioReader*, std::unique_ptr<AudioReader>> audioReaders; | |||
| }; | |||
| class ArchivingController : public ARA::Host::ArchivingControllerInterface | |||
| class ArchivingController final : public ARA::Host::ArchivingControllerInterface | |||
| { | |||
| public: | |||
| 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: | |||
| using Converter = ARAHostModel::ConversionFunctions<ARA::ARAContentType, ARA::ARAContentReaderHostRef>; | |||
| @@ -433,7 +433,7 @@ public: | |||
| ARA::ARAContentBarSignature barSignature; | |||
| }; | |||
| class ModelUpdateController : public ARA::Host::ModelUpdateControllerInterface | |||
| class ModelUpdateController final : public ARA::Host::ModelUpdateControllerInterface | |||
| { | |||
| public: | |||
| void notifyAudioSourceAnalysisProgress (ARA::ARAAudioSourceHostRef audioSourceHostRef, | |||
| @@ -465,7 +465,7 @@ public: | |||
| } | |||
| }; | |||
| class PlaybackController : public ARA::Host::PlaybackControllerInterface | |||
| class PlaybackController final : public ARA::Host::PlaybackControllerInterface | |||
| { | |||
| public: | |||
| void requestStartPlayback() noexcept override {} | |||
| @@ -484,7 +484,7 @@ public: | |||
| void requestEnableCycle (bool enable) noexcept override { ignoreUnused (enable); } | |||
| }; | |||
| struct SimplePlayHead : public juce::AudioPlayHead | |||
| struct SimplePlayHead final : public juce::AudioPlayHead | |||
| { | |||
| Optional<PositionInfo> getPosition() const override | |||
| { | |||
| @@ -509,9 +509,9 @@ struct HostPlaybackController | |||
| virtual void clearAudioSource() = 0; | |||
| }; | |||
| class AudioSourceComponent : public Component, | |||
| public FileDragAndDropTarget, | |||
| public ChangeListener | |||
| class AudioSourceComponent final : public Component, | |||
| public FileDragAndDropTarget, | |||
| public ChangeListener | |||
| { | |||
| public: | |||
| explicit AudioSourceComponent (HostPlaybackController& controller, juce::ChangeBroadcaster& bc) | |||
| @@ -607,8 +607,8 @@ public: | |||
| } | |||
| private: | |||
| class WaveformComponent : public Component, | |||
| public ChangeListener | |||
| class WaveformComponent final : public Component, | |||
| public ChangeListener | |||
| { | |||
| public: | |||
| WaveformComponent (AudioSourceComponent& p) | |||
| @@ -701,14 +701,14 @@ private: | |||
| TextButton playButton, goToStartButton; | |||
| }; | |||
| class ARAPluginInstanceWrapper : public AudioPluginInstance | |||
| class ARAPluginInstanceWrapper final : public AudioPluginInstance | |||
| { | |||
| public: | |||
| class ARATestHost : public HostPlaybackController, | |||
| public juce::ChangeBroadcaster | |||
| class ARATestHost final : public HostPlaybackController, | |||
| public juce::ChangeBroadcaster | |||
| { | |||
| public: | |||
| class Editor : public AudioProcessorEditor | |||
| class Editor final : public AudioProcessorEditor | |||
| { | |||
| public: | |||
| explicit Editor (ARATestHost& araTestHost) | |||
| @@ -31,7 +31,7 @@ | |||
| //============================================================================== | |||
| struct NumberedBoxes : public TableListBox, | |||
| struct NumberedBoxes final : public TableListBox, | |||
| private TableListBoxModel, | |||
| 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: | |||
| InputOutputConfig (IOConfigurationWindow& parent, bool direction) | |||
| @@ -30,7 +30,7 @@ class GraphDocumentComponent; | |||
| //============================================================================== | |||
| class IOConfigurationWindow : public AudioProcessorEditor | |||
| class IOConfigurationWindow final : public AudioProcessorEditor | |||
| { | |||
| public: | |||
| IOConfigurationWindow (AudioProcessor&); | |||
| @@ -61,7 +61,7 @@ static std::unique_ptr<InputStream> createAssetInputStream (const char* resource | |||
| #include "../../../../examples/Plugins/SurroundPluginDemo.h" | |||
| //============================================================================== | |||
| class InternalPlugin : public AudioPluginInstance | |||
| class InternalPlugin final : public AudioPluginInstance | |||
| { | |||
| public: | |||
| explicit InternalPlugin (std::unique_ptr<AudioProcessor> innerIn) | |||
| @@ -167,7 +167,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class SineWaveSynth : public AudioProcessor | |||
| class SineWaveSynth final : public AudioProcessor | |||
| { | |||
| public: | |||
| SineWaveSynth() | |||
| @@ -343,7 +343,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class ReverbPlugin : public AudioProcessor | |||
| class ReverbPlugin final : public AudioProcessor | |||
| { | |||
| public: | |||
| ReverbPlugin() | |||
| @@ -32,7 +32,7 @@ | |||
| /** | |||
| Manages the internal plugin types. | |||
| */ | |||
| class InternalPluginFormat : public AudioPluginFormat | |||
| class InternalPluginFormat final : public AudioPluginFormat | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -55,9 +55,9 @@ struct PluginDescriptionAndPreference | |||
| /** | |||
| 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: | |||
| //============================================================================== | |||
| @@ -92,8 +92,8 @@ | |||
| #endif | |||
| //============================================================================== | |||
| struct GraphEditorPanel::PinComponent : public Component, | |||
| public SettableTooltipClient | |||
| struct GraphEditorPanel::PinComponent final : public Component, | |||
| public SettableTooltipClient | |||
| { | |||
| PinComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeAndChannel pinToUse, bool 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) | |||
| { | |||
| @@ -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) | |||
| : 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() | |||
| { | |||
| @@ -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: | |||
| 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) | |||
| : owner (lb), | |||
| @@ -33,9 +33,9 @@ class MainHostWindow; | |||
| /** | |||
| 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: | |||
| //============================================================================== | |||
| @@ -98,10 +98,10 @@ private: | |||
| 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: | |||
| GraphDocumentComponent (AudioPluginFormatManager& formatManager, | |||
| @@ -30,7 +30,7 @@ | |||
| constexpr const char* scanModeKey = "pluginScanMode"; | |||
| //============================================================================== | |||
| class Superprocess : private ChildProcessCoordinator | |||
| class Superprocess final : private ChildProcessCoordinator | |||
| { | |||
| public: | |||
| Superprocess() | |||
| @@ -94,8 +94,8 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class CustomPluginScanner : public KnownPluginList::CustomScanner, | |||
| private ChangeListener | |||
| class CustomPluginScanner final : public KnownPluginList::CustomScanner, | |||
| private ChangeListener | |||
| { | |||
| public: | |||
| CustomPluginScanner() | |||
| @@ -202,7 +202,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class CustomPluginListComponent : public PluginListComponent | |||
| class CustomPluginListComponent final : public PluginListComponent | |||
| { | |||
| public: | |||
| CustomPluginListComponent (AudioPluginFormatManager& manager, | |||
| @@ -256,7 +256,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| class MainHostWindow::PluginListWindow : public DocumentWindow | |||
| class MainHostWindow::PluginListWindow final : public DocumentWindow | |||
| { | |||
| public: | |||
| PluginListWindow (MainHostWindow& mw, AudioPluginFormatManager& pluginFormatManager) | |||
| @@ -74,11 +74,11 @@ void addPluginAutoScaleOptionsSubMenu (AudioPluginInstance*, PopupMenu&); | |||
| 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: | |||
| //============================================================================== | |||
| @@ -46,10 +46,10 @@ class PluginGraph; | |||
| /** | |||
| 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: | |||
| PluginDebugWindow (AudioProcessor& proc) | |||
| @@ -146,7 +146,7 @@ private: | |||
| /** | |||
| A desktop window containing a plugin's GUI. | |||
| */ | |||
| class PluginWindow : public DocumentWindow | |||
| class PluginWindow final : public DocumentWindow | |||
| { | |||
| public: | |||
| enum class Type | |||
| @@ -235,7 +235,7 @@ public: | |||
| } | |||
| private: | |||
| class DecoratorConstrainer : public BorderedComponentBoundsConstrainer | |||
| class DecoratorConstrainer final : public BorderedComponentBoundsConstrainer | |||
| { | |||
| public: | |||
| explicit DecoratorConstrainer (DocumentWindow& windowIn) | |||
| @@ -327,7 +327,7 @@ private: | |||
| } | |||
| //============================================================================== | |||
| struct ProgramAudioProcessorEditor : public AudioProcessorEditor | |||
| struct ProgramAudioProcessorEditor final : public AudioProcessorEditor | |||
| { | |||
| explicit ProgramAudioProcessorEditor (AudioProcessor& p) | |||
| : AudioProcessorEditor (p) | |||
| @@ -104,7 +104,7 @@ int writeBinaryData (juce::ArgumentList&& args) | |||
| return 0; | |||
| } | |||
| struct IconParseResults final | |||
| struct IconParseResults | |||
| { | |||
| juce::build_tools::Icons icons; | |||
| juce::File output; | |||
| @@ -191,7 +191,7 @@ bool getBoolValue (const std::unordered_map<juce::String, juce::String>& dict, j | |||
| || str.equalsIgnoreCase ("on"); | |||
| } | |||
| struct UpdateField final | |||
| struct UpdateField | |||
| { | |||
| 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 | |||
| 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: | |||
| 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"; } | |||
| 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"; } | |||
| void reset() override {} | |||
| @@ -64,7 +64,7 @@ struct GridLines : public AnimatedContent | |||
| }; | |||
| //============================================================================== | |||
| struct BackgroundLogo : public AnimatedContent | |||
| struct BackgroundLogo : public AnimatedContent | |||
| { | |||
| BackgroundLogo() | |||
| { | |||
| @@ -99,7 +99,7 @@ struct BackgroundLogo : public AnimatedContent | |||
| }; | |||
| //============================================================================== | |||
| struct FlockDemo : public BackgroundLogo | |||
| struct FlockDemo : public BackgroundLogo | |||
| { | |||
| String getName() const override { return "Flock"; } | |||
| @@ -358,7 +358,7 @@ struct FlockDemo : public BackgroundLogo | |||
| }; | |||
| //============================================================================== | |||
| struct FlockWithText : public FlockDemo | |||
| struct FlockWithText final : public FlockDemo | |||
| { | |||
| 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"; } | |||
| @@ -456,7 +456,7 @@ struct SmallFlock : public FlockDemo | |||
| }; | |||
| //============================================================================== | |||
| struct BigFlock : public FlockDemo | |||
| struct BigFlock final : public FlockDemo | |||
| { | |||
| String getName() const override { return "Big Flock"; } | |||
| @@ -468,7 +468,7 @@ struct BigFlock : public FlockDemo | |||
| //============================================================================== | |||
| template <int numHorizontalLogos> | |||
| struct MultiLogo : public BackgroundLogo | |||
| struct MultiLogo final : public BackgroundLogo | |||
| { | |||
| 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: | |||
| NetworkGraphicsDemoApplication() : properties (getPropertyFileOptions()) | |||
| @@ -89,7 +89,7 @@ public: | |||
| } | |||
| //============================================================================== | |||
| struct MainWindow : public DocumentWindow | |||
| struct MainWindow final : public DocumentWindow | |||
| { | |||
| explicit MainWindow (PropertiesFile& props) | |||
| : DocumentWindow ("JUCE Networked Graphics Demo - Master", Colours::white, DocumentWindow::allButtons) | |||