From bb406540aa6c9c83ddfc046b1100c6b3e4d52a6c Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 22 May 2022 14:39:41 +0100 Subject: [PATCH] Update juce Signed-off-by: falkTX --- .../audio_io/juce_AudioDeviceManager.cpp | 5 +- .../format/juce_AudioPluginFormat.cpp | 15 +- .../format/juce_AudioPluginFormat.h | 27 +- .../format/juce_AudioPluginFormatManager.cpp | 31 +- .../format/juce_AudioPluginFormatManager.h | 31 +- .../LV2_SDK/generate_lv2_bundle_sources.py | 12 +- .../format_types/LV2_SDK/juce_lv2_config.h | 15 +- .../format_types/LV2_SDK/lilv_config.h | 15 +- .../format_types/LV2_SDK/serd_config.h | 15 +- .../format_types/LV2_SDK/sord_config.h | 15 +- .../format_types/juce_ARACommon.cpp | 76 ++ .../format_types/juce_ARACommon.h | 85 ++ .../format_types/juce_ARAHosting.cpp | 458 +++++++ .../format_types/juce_ARAHosting.h | 740 +++++++++++ .../format_types/juce_AU_Shared.h | 15 +- .../format_types/juce_AudioUnitPluginFormat.h | 16 +- .../juce_AudioUnitPluginFormat.mm | 532 ++++---- .../format_types/juce_LADSPAPluginFormat.cpp | 15 +- .../format_types/juce_LADSPAPluginFormat.h | 15 +- .../format_types/juce_LV2Common.h | 92 +- .../format_types/juce_LV2PluginFormat.cpp | 152 ++- .../format_types/juce_LV2PluginFormat.h | 15 +- .../juce_LV2PluginFormat_test.cpp | 15 +- .../format_types/juce_LV2Resources.h | 15 +- .../format_types/juce_LV2SupportLibs.cpp | 15 +- .../juce_LegacyAudioParameter.cpp | 15 +- .../format_types/juce_VST3Common.h | 143 +- .../format_types/juce_VST3Headers.h | 25 +- .../format_types/juce_VST3PluginFormat.cpp | 198 ++- .../format_types/juce_VST3PluginFormat.h | 16 +- .../juce_VST3PluginFormat_test.cpp | 15 +- .../format_types/juce_VSTCommon.h | 15 +- .../format_types/juce_VSTMidiEventList.h | 15 +- .../format_types/juce_VSTPluginFormat.cpp | 144 +-- .../format_types/juce_VSTPluginFormat.h | 15 +- .../pslextensions/ipslcontextinfo.h | 190 +++ .../pslextensions/ipsleditcontroller.h | 108 ++ .../pslextensions/ipslgainreduction.h | 53 + .../pslextensions/ipslhostcommands.h | 121 ++ .../pslextensions/ipslviewembedding.h | 53 + .../pslextensions/ipslviewscaling.h | 67 + .../pslextensions/pslauextensions.h | 57 + .../pslextensions/pslvst2extensions.h | 111 ++ .../juce_audio_processors.cpp | 54 +- .../juce_audio_processors.h | 56 +- .../juce_audio_processors_ara.cpp | 40 + .../juce_audio_processors_lv2_libs.cpp | 15 +- .../processors/juce_AudioPluginInstance.cpp | 15 +- .../processors/juce_AudioPluginInstance.h | 15 +- .../processors/juce_AudioProcessor.cpp | 20 +- .../processors/juce_AudioProcessor.h | 47 +- .../processors/juce_AudioProcessorEditor.cpp | 15 +- .../processors/juce_AudioProcessorEditor.h | 15 +- .../juce_AudioProcessorEditorHostContext.h | 15 +- .../processors/juce_AudioProcessorGraph.cpp | 17 +- .../processors/juce_AudioProcessorGraph.h | 19 +- .../processors/juce_AudioProcessorListener.h | 15 +- .../processors/juce_AudioProcessorParameter.h | 15 +- .../juce_AudioProcessorParameterGroup.cpp | 15 +- .../juce_AudioProcessorParameterGroup.h | 15 +- .../juce_GenericAudioProcessorEditor.cpp | 15 +- .../juce_GenericAudioProcessorEditor.h | 15 +- .../juce_HostedAudioProcessorParameter.h | 15 +- .../processors/juce_PluginDescription.cpp | 17 +- .../processors/juce_PluginDescription.h | 18 +- .../scanning/juce_KnownPluginList.cpp | 15 +- .../scanning/juce_KnownPluginList.h | 15 +- .../scanning/juce_PluginDirectoryScanner.cpp | 15 +- .../scanning/juce_PluginDirectoryScanner.h | 15 +- .../scanning/juce_PluginListComponent.cpp | 15 +- .../scanning/juce_PluginListComponent.h | 15 +- .../ARA/juce_ARADocumentController.cpp | 971 ++++++++++++++ .../ARA/juce_ARADocumentController.h | 520 ++++++++ .../ARA/juce_ARADocumentControllerCommon.cpp | 71 + .../utilities/ARA/juce_ARAModelObjects.cpp | 199 +++ .../utilities/ARA/juce_ARAModelObjects.h | 1145 +++++++++++++++++ .../ARA/juce_ARAPlugInInstanceRoles.cpp | 92 ++ .../ARA/juce_ARAPlugInInstanceRoles.h | 271 ++++ .../utilities/ARA/juce_ARA_utils.cpp | 32 + .../utilities/ARA/juce_ARA_utils.h | 85 ++ .../ARA/juce_AudioProcessor_ARAExtensions.cpp | 156 +++ .../ARA/juce_AudioProcessor_ARAExtensions.h | 204 +++ .../utilities/juce_AudioParameterBool.cpp | 15 +- .../utilities/juce_AudioParameterBool.h | 15 +- .../utilities/juce_AudioParameterChoice.cpp | 15 +- .../utilities/juce_AudioParameterChoice.h | 15 +- .../utilities/juce_AudioParameterFloat.cpp | 15 +- .../utilities/juce_AudioParameterFloat.h | 15 +- .../utilities/juce_AudioParameterInt.cpp | 15 +- .../utilities/juce_AudioParameterInt.h | 15 +- .../juce_AudioProcessorParameterWithID.cpp | 15 +- .../juce_AudioProcessorParameterWithID.h | 15 +- .../juce_AudioProcessorValueTreeState.cpp | 17 +- .../juce_AudioProcessorValueTreeState.h | 17 +- .../utilities/juce_ExtensionsVisitor.h | 27 +- .../utilities/juce_FlagCache.h | 15 +- .../juce_NativeScaleFactorNotifier.cpp | 15 +- .../juce_NativeScaleFactorNotifier.h | 15 +- .../utilities/juce_ParameterAttachments.cpp | 15 +- .../utilities/juce_ParameterAttachments.h | 15 +- .../utilities/juce_PluginHostType.cpp | 17 +- .../utilities/juce_PluginHostType.h | 17 +- .../utilities/juce_RangedAudioParameter.cpp | 15 +- .../utilities/juce_RangedAudioParameter.h | 15 +- .../utilities/juce_VST3ClientExtensions.h | 15 +- .../utilities/juce_VSTCallbackHandler.h | 15 +- .../modules/juce_core/containers/juce_Array.h | 7 +- .../containers/juce_ListenerList.cpp | 321 +++++ .../juce_core/containers/juce_ListenerList.h | 101 +- source/modules/juce_core/files/juce_File.h | 12 +- source/modules/juce_core/juce_core.cpp | 1 + .../juce_core/threads/juce_ReadWriteLock.h | 4 +- .../juce_core/threads/juce_ScopedReadLock.h | 86 ++ .../juce_core/threads/juce_ScopedWriteLock.h | 86 ++ .../juce_ApplicationProperties.cpp | 15 +- .../juce_ApplicationProperties.h | 15 +- .../app_properties/juce_PropertiesFile.cpp | 15 +- .../app_properties/juce_PropertiesFile.h | 15 +- .../juce_data_structures.cpp | 15 +- .../juce_data_structures.h | 15 +- .../undomanager/juce_UndoManager.cpp | 15 +- .../undomanager/juce_UndoManager.h | 15 +- .../undomanager/juce_UndoableAction.h | 15 +- .../values/juce_CachedValue.cpp | 15 +- .../values/juce_CachedValue.h | 15 +- .../values/juce_Value.cpp | 15 +- .../juce_data_structures/values/juce_Value.h | 18 +- .../values/juce_ValueTree.cpp | 15 +- .../values/juce_ValueTree.h | 15 +- .../juce_ValueTreePropertyWithDefault.h | 15 +- ...juce_ValueTreePropertyWithDefault_test.cpp | 15 +- .../values/juce_ValueTreeSynchroniser.cpp | 15 +- .../values/juce_ValueTreeSynchroniser.h | 15 +- .../juce_graphics/colour/juce_Colour.cpp | 15 +- .../juce_graphics/colour/juce_Colour.h | 15 +- .../colour/juce_ColourGradient.cpp | 15 +- .../colour/juce_ColourGradient.h | 15 +- .../juce_graphics/colour/juce_Colours.cpp | 15 +- .../juce_graphics/colour/juce_Colours.h | 15 +- .../juce_graphics/colour/juce_FillType.cpp | 15 +- .../juce_graphics/colour/juce_FillType.h | 15 +- .../juce_graphics/colour/juce_PixelFormats.h | 15 +- .../contexts/juce_GraphicsContext.cpp | 15 +- .../contexts/juce_GraphicsContext.h | 15 +- .../contexts/juce_LowLevelGraphicsContext.h | 15 +- ...uce_LowLevelGraphicsPostScriptRenderer.cpp | 15 +- .../juce_LowLevelGraphicsPostScriptRenderer.h | 15 +- .../juce_LowLevelGraphicsSoftwareRenderer.cpp | 15 +- .../juce_LowLevelGraphicsSoftwareRenderer.h | 15 +- .../effects/juce_DropShadowEffect.cpp | 15 +- .../effects/juce_DropShadowEffect.h | 15 +- .../juce_graphics/effects/juce_GlowEffect.cpp | 15 +- .../juce_graphics/effects/juce_GlowEffect.h | 15 +- .../effects/juce_ImageEffectFilter.h | 15 +- .../fonts/juce_AttributedString.cpp | 15 +- .../fonts/juce_AttributedString.h | 15 +- .../fonts/juce_CustomTypeface.cpp | 15 +- .../juce_graphics/fonts/juce_CustomTypeface.h | 15 +- .../modules/juce_graphics/fonts/juce_Font.cpp | 15 +- .../modules/juce_graphics/fonts/juce_Font.h | 15 +- .../fonts/juce_GlyphArrangement.cpp | 15 +- .../fonts/juce_GlyphArrangement.h | 15 +- .../juce_graphics/fonts/juce_TextLayout.cpp | 15 +- .../juce_graphics/fonts/juce_TextLayout.h | 15 +- .../juce_graphics/fonts/juce_Typeface.cpp | 15 +- .../juce_graphics/fonts/juce_Typeface.h | 15 +- .../geometry/juce_AffineTransform.cpp | 15 +- .../geometry/juce_AffineTransform.h | 15 +- .../juce_graphics/geometry/juce_BorderSize.h | 25 +- .../juce_graphics/geometry/juce_EdgeTable.cpp | 15 +- .../juce_graphics/geometry/juce_EdgeTable.h | 15 +- .../juce_graphics/geometry/juce_Line.h | 15 +- .../geometry/juce_Parallelogram.h | 15 +- .../juce_graphics/geometry/juce_Path.cpp | 15 +- .../juce_graphics/geometry/juce_Path.h | 15 +- .../geometry/juce_PathIterator.cpp | 15 +- .../geometry/juce_PathIterator.h | 15 +- .../geometry/juce_PathStrokeType.cpp | 15 +- .../geometry/juce_PathStrokeType.h | 15 +- .../juce_graphics/geometry/juce_Point.h | 15 +- .../juce_graphics/geometry/juce_Rectangle.h | 15 +- .../geometry/juce_RectangleList.h | 15 +- .../geometry/juce_Rectangle_test.cpp | 15 +- .../image_formats/juce_GIFLoader.cpp | 15 +- .../image_formats/juce_JPEGLoader.cpp | 15 +- .../image_formats/juce_PNGLoader.cpp | 15 +- .../juce_graphics/images/juce_Image.cpp | 15 +- .../modules/juce_graphics/images/juce_Image.h | 15 +- .../juce_graphics/images/juce_ImageCache.cpp | 15 +- .../juce_graphics/images/juce_ImageCache.h | 15 +- .../images/juce_ImageConvolutionKernel.cpp | 15 +- .../images/juce_ImageConvolutionKernel.h | 15 +- .../images/juce_ImageFileFormat.cpp | 15 +- .../images/juce_ImageFileFormat.h | 15 +- .../juce_graphics/images/juce_ScaledImage.h | 15 +- .../modules/juce_graphics/juce_graphics.cpp | 15 +- source/modules/juce_graphics/juce_graphics.h | 15 +- .../native/juce_RenderingHelpers.h | 15 +- .../native/juce_android_Fonts.cpp | 15 +- .../native/juce_android_GraphicsContext.cpp | 15 +- .../native/juce_android_IconHelpers.cpp | 15 +- .../native/juce_freetype_Fonts.cpp | 15 +- .../juce_graphics/native/juce_linux_Fonts.cpp | 24 +- .../native/juce_linux_IconHelpers.cpp | 15 +- .../native/juce_mac_CoreGraphicsContext.h | 15 +- .../native/juce_mac_CoreGraphicsContext.mm | 15 +- .../native/juce_mac_CoreGraphicsHelpers.h | 15 +- .../juce_graphics/native/juce_mac_Fonts.mm | 15 +- .../native/juce_mac_IconHelpers.cpp | 15 +- .../juce_win32_Direct2DGraphicsContext.cpp | 15 +- .../juce_win32_Direct2DGraphicsContext.h | 15 +- .../juce_win32_DirectWriteTypeLayout.cpp | 15 +- .../native/juce_win32_DirectWriteTypeface.cpp | 15 +- .../juce_graphics/native/juce_win32_Fonts.cpp | 15 +- .../native/juce_win32_IconHelpers.cpp | 15 +- .../placement/juce_Justification.h | 15 +- .../placement/juce_RectanglePlacement.cpp | 15 +- .../placement/juce_RectanglePlacement.h | 15 +- .../enums/juce_AccessibilityActions.h | 15 +- .../enums/juce_AccessibilityEvent.h | 15 +- .../enums/juce_AccessibilityRole.h | 15 +- .../juce_AccessibilityCellInterface.h | 15 +- .../juce_AccessibilityTableInterface.h | 15 +- .../juce_AccessibilityTextInterface.h | 15 +- .../juce_AccessibilityValueInterface.h | 15 +- .../juce_AccessibilityHandler.cpp | 15 +- .../accessibility/juce_AccessibilityHandler.h | 15 +- .../accessibility/juce_AccessibilityState.h | 15 +- .../application/juce_Application.cpp | 15 +- .../application/juce_Application.h | 15 +- .../buttons/juce_ArrowButton.cpp | 15 +- .../buttons/juce_ArrowButton.h | 15 +- .../juce_gui_basics/buttons/juce_Button.cpp | 15 +- .../juce_gui_basics/buttons/juce_Button.h | 15 +- .../buttons/juce_DrawableButton.cpp | 15 +- .../buttons/juce_DrawableButton.h | 15 +- .../buttons/juce_HyperlinkButton.cpp | 15 +- .../buttons/juce_HyperlinkButton.h | 15 +- .../buttons/juce_ImageButton.cpp | 15 +- .../buttons/juce_ImageButton.h | 15 +- .../buttons/juce_ShapeButton.cpp | 15 +- .../buttons/juce_ShapeButton.h | 15 +- .../buttons/juce_TextButton.cpp | 15 +- .../juce_gui_basics/buttons/juce_TextButton.h | 15 +- .../buttons/juce_ToggleButton.cpp | 15 +- .../buttons/juce_ToggleButton.h | 15 +- .../buttons/juce_ToolbarButton.cpp | 15 +- .../buttons/juce_ToolbarButton.h | 15 +- .../commands/juce_ApplicationCommandID.h | 15 +- .../commands/juce_ApplicationCommandInfo.cpp | 15 +- .../commands/juce_ApplicationCommandInfo.h | 15 +- .../juce_ApplicationCommandManager.cpp | 15 +- .../commands/juce_ApplicationCommandManager.h | 15 +- .../juce_ApplicationCommandTarget.cpp | 15 +- .../commands/juce_ApplicationCommandTarget.h | 15 +- .../commands/juce_KeyPressMappingSet.cpp | 15 +- .../commands/juce_KeyPressMappingSet.h | 15 +- .../components/juce_CachedComponentImage.h | 15 +- .../components/juce_Component.cpp | 25 +- .../components/juce_Component.h | 15 +- .../components/juce_ComponentListener.cpp | 15 +- .../components/juce_ComponentListener.h | 15 +- .../components/juce_ComponentTraverser.h | 15 +- .../components/juce_FocusTraverser.cpp | 15 +- .../components/juce_FocusTraverser.h | 15 +- .../components/juce_ModalComponentManager.cpp | 15 +- .../components/juce_ModalComponentManager.h | 15 +- .../juce_gui_basics/desktop/juce_Desktop.cpp | 15 +- .../juce_gui_basics/desktop/juce_Desktop.h | 15 +- .../juce_gui_basics/desktop/juce_Displays.cpp | 15 +- .../juce_gui_basics/desktop/juce_Displays.h | 15 +- .../drawables/juce_Drawable.cpp | 15 +- .../juce_gui_basics/drawables/juce_Drawable.h | 15 +- .../drawables/juce_DrawableComposite.cpp | 15 +- .../drawables/juce_DrawableComposite.h | 15 +- .../drawables/juce_DrawableImage.cpp | 15 +- .../drawables/juce_DrawableImage.h | 15 +- .../drawables/juce_DrawablePath.cpp | 15 +- .../drawables/juce_DrawablePath.h | 15 +- .../drawables/juce_DrawableRectangle.cpp | 15 +- .../drawables/juce_DrawableRectangle.h | 15 +- .../drawables/juce_DrawableShape.cpp | 15 +- .../drawables/juce_DrawableShape.h | 15 +- .../drawables/juce_DrawableText.cpp | 15 +- .../drawables/juce_DrawableText.h | 15 +- .../drawables/juce_SVGParser.cpp | 15 +- .../filebrowser/juce_ContentSharer.cpp | 15 +- .../filebrowser/juce_ContentSharer.h | 15 +- ...juce_DirectoryContentsDisplayComponent.cpp | 15 +- .../juce_DirectoryContentsDisplayComponent.h | 15 +- .../juce_DirectoryContentsList.cpp | 15 +- .../filebrowser/juce_DirectoryContentsList.h | 15 +- .../filebrowser/juce_FileBrowserComponent.cpp | 15 +- .../filebrowser/juce_FileBrowserComponent.h | 15 +- .../filebrowser/juce_FileBrowserListener.h | 15 +- .../filebrowser/juce_FileChooser.cpp | 15 +- .../filebrowser/juce_FileChooser.h | 15 +- .../filebrowser/juce_FileChooserDialogBox.cpp | 15 +- .../filebrowser/juce_FileChooserDialogBox.h | 15 +- .../filebrowser/juce_FileListComponent.cpp | 15 +- .../filebrowser/juce_FileListComponent.h | 15 +- .../filebrowser/juce_FilePreviewComponent.h | 15 +- .../juce_FileSearchPathListComponent.cpp | 15 +- .../juce_FileSearchPathListComponent.h | 15 +- .../filebrowser/juce_FileTreeComponent.cpp | 15 +- .../filebrowser/juce_FileTreeComponent.h | 15 +- .../filebrowser/juce_FilenameComponent.cpp | 15 +- .../filebrowser/juce_FilenameComponent.h | 15 +- .../juce_ImagePreviewComponent.cpp | 15 +- .../filebrowser/juce_ImagePreviewComponent.h | 15 +- .../juce_gui_basics/juce_gui_basics.cpp | 21 +- .../modules/juce_gui_basics/juce_gui_basics.h | 18 +- .../keyboard/juce_CaretComponent.cpp | 15 +- .../keyboard/juce_CaretComponent.h | 15 +- .../keyboard/juce_KeyListener.cpp | 15 +- .../keyboard/juce_KeyListener.h | 15 +- .../keyboard/juce_KeyPress.cpp | 15 +- .../juce_gui_basics/keyboard/juce_KeyPress.h | 15 +- .../keyboard/juce_KeyboardFocusTraverser.cpp | 15 +- .../keyboard/juce_KeyboardFocusTraverser.h | 15 +- .../keyboard/juce_ModifierKeys.cpp | 15 +- .../keyboard/juce_ModifierKeys.h | 15 +- .../keyboard/juce_SystemClipboard.h | 15 +- .../keyboard/juce_TextEditorKeyMapper.h | 15 +- .../keyboard/juce_TextInputTarget.h | 15 +- .../layout/juce_AnimatedPosition.h | 15 +- .../layout/juce_AnimatedPositionBehaviours.h | 15 +- .../layout/juce_ComponentAnimator.cpp | 15 +- .../layout/juce_ComponentAnimator.h | 15 +- .../juce_ComponentBoundsConstrainer.cpp | 15 +- .../layout/juce_ComponentBoundsConstrainer.h | 15 +- .../layout/juce_ComponentBuilder.cpp | 15 +- .../layout/juce_ComponentBuilder.h | 15 +- .../layout/juce_ComponentMovementWatcher.cpp | 15 +- .../layout/juce_ComponentMovementWatcher.h | 15 +- .../layout/juce_ConcertinaPanel.cpp | 15 +- .../layout/juce_ConcertinaPanel.h | 15 +- .../juce_gui_basics/layout/juce_FlexBox.cpp | 15 +- .../juce_gui_basics/layout/juce_FlexBox.h | 15 +- .../juce_gui_basics/layout/juce_FlexItem.h | 15 +- .../juce_gui_basics/layout/juce_Grid.cpp | 15 +- .../juce_gui_basics/layout/juce_Grid.h | 15 +- .../juce_gui_basics/layout/juce_GridItem.cpp | 15 +- .../juce_gui_basics/layout/juce_GridItem.h | 15 +- .../layout/juce_GroupComponent.cpp | 15 +- .../layout/juce_GroupComponent.h | 15 +- .../layout/juce_MultiDocumentPanel.cpp | 15 +- .../layout/juce_MultiDocumentPanel.h | 15 +- .../layout/juce_ResizableBorderComponent.cpp | 15 +- .../layout/juce_ResizableBorderComponent.h | 15 +- .../layout/juce_ResizableCornerComponent.cpp | 15 +- .../layout/juce_ResizableCornerComponent.h | 15 +- .../layout/juce_ResizableEdgeComponent.cpp | 15 +- .../layout/juce_ResizableEdgeComponent.h | 15 +- .../juce_gui_basics/layout/juce_ScrollBar.cpp | 15 +- .../juce_gui_basics/layout/juce_ScrollBar.h | 15 +- .../juce_gui_basics/layout/juce_SidePanel.cpp | 15 +- .../juce_gui_basics/layout/juce_SidePanel.h | 15 +- .../layout/juce_StretchableLayoutManager.cpp | 15 +- .../layout/juce_StretchableLayoutManager.h | 15 +- .../juce_StretchableLayoutResizerBar.cpp | 15 +- .../layout/juce_StretchableLayoutResizerBar.h | 15 +- .../layout/juce_StretchableObjectResizer.cpp | 15 +- .../layout/juce_StretchableObjectResizer.h | 15 +- .../layout/juce_TabbedButtonBar.cpp | 15 +- .../layout/juce_TabbedButtonBar.h | 15 +- .../layout/juce_TabbedComponent.cpp | 15 +- .../layout/juce_TabbedComponent.h | 15 +- .../juce_gui_basics/layout/juce_Viewport.cpp | 17 +- .../juce_gui_basics/layout/juce_Viewport.h | 15 +- .../lookandfeel/juce_LookAndFeel.cpp | 15 +- .../lookandfeel/juce_LookAndFeel.h | 15 +- .../lookandfeel/juce_LookAndFeel_V1.cpp | 15 +- .../lookandfeel/juce_LookAndFeel_V1.h | 15 +- .../lookandfeel/juce_LookAndFeel_V2.cpp | 15 +- .../lookandfeel/juce_LookAndFeel_V2.h | 15 +- .../lookandfeel/juce_LookAndFeel_V3.cpp | 15 +- .../lookandfeel/juce_LookAndFeel_V3.h | 15 +- .../lookandfeel/juce_LookAndFeel_V4.cpp | 15 +- .../lookandfeel/juce_LookAndFeel_V4.h | 15 +- .../menus/juce_BurgerMenuComponent.cpp | 15 +- .../menus/juce_BurgerMenuComponent.h | 15 +- .../menus/juce_MenuBarComponent.cpp | 15 +- .../menus/juce_MenuBarComponent.h | 15 +- .../menus/juce_MenuBarModel.cpp | 15 +- .../juce_gui_basics/menus/juce_MenuBarModel.h | 15 +- .../juce_gui_basics/menus/juce_PopupMenu.cpp | 25 +- .../juce_gui_basics/menus/juce_PopupMenu.h | 15 +- .../misc/juce_BubbleComponent.cpp | 15 +- .../misc/juce_BubbleComponent.h | 15 +- .../misc/juce_DropShadower.cpp | 30 +- .../juce_gui_basics/misc/juce_DropShadower.h | 15 +- .../misc/juce_FocusOutline.cpp | 15 +- .../juce_gui_basics/misc/juce_FocusOutline.h | 15 +- .../misc/juce_JUCESplashScreen.cpp | 19 +- .../misc/juce_JUCESplashScreen.h | 19 +- .../mouse/juce_ComponentDragger.cpp | 15 +- .../mouse/juce_ComponentDragger.h | 15 +- .../mouse/juce_DragAndDropContainer.cpp | 15 +- .../mouse/juce_DragAndDropContainer.h | 15 +- .../mouse/juce_DragAndDropTarget.h | 15 +- .../mouse/juce_FileDragAndDropTarget.h | 15 +- .../mouse/juce_LassoComponent.h | 15 +- .../mouse/juce_MouseCursor.cpp | 15 +- .../juce_gui_basics/mouse/juce_MouseCursor.h | 15 +- .../juce_gui_basics/mouse/juce_MouseEvent.cpp | 15 +- .../juce_gui_basics/mouse/juce_MouseEvent.h | 15 +- .../mouse/juce_MouseInactivityDetector.cpp | 15 +- .../mouse/juce_MouseInactivityDetector.h | 15 +- .../mouse/juce_MouseInputSource.cpp | 15 +- .../mouse/juce_MouseInputSource.h | 15 +- .../mouse/juce_MouseListener.cpp | 15 +- .../mouse/juce_MouseListener.h | 15 +- .../juce_gui_basics/mouse/juce_PointerState.h | 15 +- .../mouse/juce_SelectedItemSet.h | 15 +- .../mouse/juce_TextDragAndDropTarget.h | 15 +- .../mouse/juce_TooltipClient.h | 15 +- .../juce_AccessibilityTextHelpers.h | 15 +- .../juce_android_Accessibility.cpp | 15 +- .../accessibility/juce_ios_Accessibility.mm | 15 +- .../accessibility/juce_mac_Accessibility.mm | 15 +- .../juce_mac_AccessibilitySharedCode.mm | 15 +- .../juce_win32_Accessibility.cpp | 15 +- .../juce_win32_AccessibilityElement.cpp | 15 +- .../juce_win32_AccessibilityElement.h | 15 +- .../accessibility/juce_win32_ComInterfaces.h | 15 +- .../juce_win32_UIAExpandCollapseProvider.h | 15 +- .../juce_win32_UIAGridItemProvider.h | 15 +- .../juce_win32_UIAGridProvider.h | 15 +- .../accessibility/juce_win32_UIAHelpers.h | 15 +- .../juce_win32_UIAInvokeProvider.h | 15 +- .../juce_win32_UIAProviderBase.h | 15 +- .../accessibility/juce_win32_UIAProviders.h | 15 +- .../juce_win32_UIARangeValueProvider.h | 15 +- .../juce_win32_UIASelectionProvider.h | 15 +- .../juce_win32_UIATextProvider.h | 15 +- .../juce_win32_UIAToggleProvider.h | 15 +- .../juce_win32_UIATransformProvider.h | 15 +- .../juce_win32_UIAValueProvider.h | 15 +- .../juce_win32_UIAWindowProvider.h | 15 +- .../juce_win32_WindowsUIAWrapper.h | 15 +- .../native/juce_MultiTouchMapper.h | 15 +- .../native/juce_ScopedDPIAwarenessDisabler.h | 15 +- .../native/juce_android_ContentSharer.cpp | 15 +- .../native/juce_android_FileChooser.cpp | 15 +- .../native/juce_android_Windowing.cpp | 17 +- .../native/juce_common_MimeTypes.cpp | 15 +- .../native/juce_ios_ContentSharer.cpp | 15 +- .../native/juce_ios_FileChooser.mm | 15 +- .../native/juce_ios_UIViewComponentPeer.mm | 15 +- .../native/juce_ios_Windowing.mm | 15 +- .../native/juce_linux_FileChooser.cpp | 15 +- .../native/juce_linux_Windowing.cpp | 61 +- .../native/juce_mac_CGMetalLayerRenderer.h | 15 +- .../native/juce_mac_FileChooser.mm | 15 +- .../native/juce_mac_MainMenu.mm | 15 +- .../native/juce_mac_MouseCursor.mm | 15 +- .../native/juce_mac_NSViewComponentPeer.mm | 47 +- .../native/juce_mac_Windowing.mm | 15 +- .../native/juce_win32_DragAndDrop.cpp | 15 +- .../native/juce_win32_FileChooser.cpp | 15 +- ...uce_win32_ScopedThreadDPIAwarenessSetter.h | 15 +- .../native/juce_win32_Windowing.cpp | 310 ++++- .../native/x11/juce_linux_X11_DragAndDrop.cpp | 15 +- .../native/x11/juce_linux_X11_Symbols.cpp | 15 +- .../native/x11/juce_linux_X11_Symbols.h | 15 +- .../native/x11/juce_linux_XWindowSystem.cpp | 15 +- .../native/x11/juce_linux_XWindowSystem.h | 15 +- .../positioning/juce_MarkerList.cpp | 15 +- .../positioning/juce_MarkerList.h | 15 +- .../positioning/juce_RelativeCoordinate.cpp | 15 +- .../positioning/juce_RelativeCoordinate.h | 15 +- .../juce_RelativeCoordinatePositioner.cpp | 15 +- .../juce_RelativeCoordinatePositioner.h | 15 +- .../juce_RelativeParallelogram.cpp | 15 +- .../positioning/juce_RelativeParallelogram.h | 15 +- .../positioning/juce_RelativePoint.cpp | 15 +- .../positioning/juce_RelativePoint.h | 15 +- .../positioning/juce_RelativePointPath.cpp | 15 +- .../positioning/juce_RelativePointPath.h | 15 +- .../positioning/juce_RelativeRectangle.cpp | 15 +- .../positioning/juce_RelativeRectangle.h | 15 +- .../juce_BooleanPropertyComponent.cpp | 15 +- .../juce_BooleanPropertyComponent.h | 15 +- .../juce_ButtonPropertyComponent.cpp | 15 +- .../properties/juce_ButtonPropertyComponent.h | 15 +- .../juce_ChoicePropertyComponent.cpp | 15 +- .../properties/juce_ChoicePropertyComponent.h | 15 +- .../juce_MultiChoicePropertyComponent.cpp | 15 +- .../juce_MultiChoicePropertyComponent.h | 15 +- .../properties/juce_PropertyComponent.cpp | 15 +- .../properties/juce_PropertyComponent.h | 15 +- .../properties/juce_PropertyPanel.cpp | 15 +- .../properties/juce_PropertyPanel.h | 15 +- .../juce_SliderPropertyComponent.cpp | 15 +- .../properties/juce_SliderPropertyComponent.h | 15 +- .../properties/juce_TextPropertyComponent.cpp | 15 +- .../properties/juce_TextPropertyComponent.h | 15 +- .../juce_gui_basics/widgets/juce_ComboBox.cpp | 15 +- .../juce_gui_basics/widgets/juce_ComboBox.h | 15 +- .../widgets/juce_ImageComponent.cpp | 15 +- .../widgets/juce_ImageComponent.h | 15 +- .../juce_gui_basics/widgets/juce_Label.cpp | 15 +- .../juce_gui_basics/widgets/juce_Label.h | 15 +- .../juce_gui_basics/widgets/juce_ListBox.cpp | 31 +- .../juce_gui_basics/widgets/juce_ListBox.h | 16 +- .../widgets/juce_ProgressBar.cpp | 15 +- .../widgets/juce_ProgressBar.h | 15 +- .../juce_gui_basics/widgets/juce_Slider.cpp | 15 +- .../juce_gui_basics/widgets/juce_Slider.h | 15 +- .../widgets/juce_TableHeaderComponent.cpp | 19 +- .../widgets/juce_TableHeaderComponent.h | 15 +- .../widgets/juce_TableListBox.cpp | 17 +- .../widgets/juce_TableListBox.h | 15 +- .../widgets/juce_TextEditor.cpp | 19 +- .../juce_gui_basics/widgets/juce_TextEditor.h | 15 +- .../juce_gui_basics/widgets/juce_Toolbar.cpp | 15 +- .../juce_gui_basics/widgets/juce_Toolbar.h | 15 +- .../widgets/juce_ToolbarItemComponent.cpp | 15 +- .../widgets/juce_ToolbarItemComponent.h | 15 +- .../widgets/juce_ToolbarItemFactory.h | 15 +- .../widgets/juce_ToolbarItemPalette.cpp | 15 +- .../widgets/juce_ToolbarItemPalette.h | 15 +- .../juce_gui_basics/widgets/juce_TreeView.cpp | 15 +- .../juce_gui_basics/widgets/juce_TreeView.h | 15 +- .../windows/juce_AlertWindow.cpp | 15 +- .../windows/juce_AlertWindow.h | 15 +- .../windows/juce_CallOutBox.cpp | 15 +- .../juce_gui_basics/windows/juce_CallOutBox.h | 15 +- .../windows/juce_ComponentPeer.cpp | 22 +- .../windows/juce_ComponentPeer.h | 26 +- .../windows/juce_DialogWindow.cpp | 15 +- .../windows/juce_DialogWindow.h | 15 +- .../windows/juce_DocumentWindow.cpp | 15 +- .../windows/juce_DocumentWindow.h | 15 +- .../windows/juce_MessageBoxOptions.h | 15 +- .../windows/juce_NativeMessageBox.h | 15 +- .../windows/juce_ResizableWindow.cpp | 15 +- .../windows/juce_ResizableWindow.h | 15 +- .../windows/juce_ThreadWithProgressWindow.cpp | 15 +- .../windows/juce_ThreadWithProgressWindow.h | 15 +- .../windows/juce_TooltipWindow.cpp | 15 +- .../windows/juce_TooltipWindow.h | 15 +- .../windows/juce_TopLevelWindow.cpp | 15 +- .../windows/juce_TopLevelWindow.h | 15 +- .../juce_CPlusPlusCodeTokeniser.cpp | 15 +- .../code_editor/juce_CPlusPlusCodeTokeniser.h | 15 +- .../juce_CPlusPlusCodeTokeniserFunctions.h | 15 +- .../code_editor/juce_CodeDocument.cpp | 15 +- .../code_editor/juce_CodeDocument.h | 15 +- .../code_editor/juce_CodeEditorComponent.cpp | 15 +- .../code_editor/juce_CodeEditorComponent.h | 15 +- .../code_editor/juce_CodeTokeniser.h | 15 +- .../code_editor/juce_LuaCodeTokeniser.cpp | 15 +- .../code_editor/juce_LuaCodeTokeniser.h | 15 +- .../code_editor/juce_XMLCodeTokeniser.cpp | 15 +- .../code_editor/juce_XMLCodeTokeniser.h | 15 +- .../documents/juce_FileBasedDocument.cpp | 15 +- .../documents/juce_FileBasedDocument.h | 15 +- .../embedding/juce_ActiveXControlComponent.h | 15 +- .../embedding/juce_AndroidViewComponent.h | 15 +- .../embedding/juce_HWNDComponent.h | 15 +- .../embedding/juce_NSViewComponent.h | 15 +- .../embedding/juce_UIViewComponent.h | 15 +- .../embedding/juce_XEmbedComponent.h | 15 +- .../modules/juce_gui_extra/juce_gui_extra.cpp | 15 +- .../modules/juce_gui_extra/juce_gui_extra.h | 15 +- .../misc/juce_AnimatedAppComponent.cpp | 15 +- .../misc/juce_AnimatedAppComponent.h | 15 +- .../juce_gui_extra/misc/juce_AppleRemote.h | 15 +- .../misc/juce_BubbleMessageComponent.cpp | 15 +- .../misc/juce_BubbleMessageComponent.h | 15 +- .../misc/juce_ColourSelector.cpp | 15 +- .../juce_gui_extra/misc/juce_ColourSelector.h | 15 +- .../misc/juce_KeyMappingEditorComponent.cpp | 15 +- .../misc/juce_KeyMappingEditorComponent.h | 15 +- .../misc/juce_LiveConstantEditor.cpp | 15 +- .../misc/juce_LiveConstantEditor.h | 15 +- .../misc/juce_PreferencesPanel.cpp | 15 +- .../misc/juce_PreferencesPanel.h | 15 +- .../misc/juce_PushNotifications.cpp | 15 +- .../misc/juce_PushNotifications.h | 15 +- .../misc/juce_RecentlyOpenedFilesList.cpp | 15 +- .../misc/juce_RecentlyOpenedFilesList.h | 15 +- .../juce_gui_extra/misc/juce_SplashScreen.cpp | 15 +- .../juce_gui_extra/misc/juce_SplashScreen.h | 15 +- .../misc/juce_SystemTrayIconComponent.cpp | 15 +- .../misc/juce_SystemTrayIconComponent.h | 15 +- .../misc/juce_WebBrowserComponent.h | 15 +- .../native/juce_AndroidViewComponent.cpp | 15 +- .../native/juce_android_PushNotifications.cpp | 15 +- .../juce_android_WebBrowserComponent.cpp | 15 +- .../native/juce_ios_PushNotifications.cpp | 15 +- .../native/juce_ios_UIViewComponent.mm | 15 +- .../native/juce_linux_X11_SystemTrayIcon.cpp | 15 +- .../juce_linux_X11_WebBrowserComponent.cpp | 15 +- .../native/juce_linux_XEmbedComponent.cpp | 15 +- .../native/juce_mac_AppleRemote.mm | 15 +- .../juce_mac_CarbonViewWrapperComponent.h | 339 ----- .../native/juce_mac_NSViewComponent.mm | 15 +- .../native/juce_mac_NSViewFrameWatcher.h | 15 +- .../native/juce_mac_PushNotifications.cpp | 15 +- .../native/juce_mac_SystemTrayIcon.cpp | 15 +- .../native/juce_mac_WebBrowserComponent.mm | 15 +- .../native/juce_win32_ActiveXComponent.cpp | 15 +- .../native/juce_win32_HWNDComponent.cpp | 15 +- .../native/juce_win32_SystemTrayIcon.cpp | 15 +- .../native/juce_win32_WebBrowserComponent.cpp | 15 +- 608 files changed, 14023 insertions(+), 3322 deletions(-) create mode 100644 source/modules/juce_audio_processors/format_types/juce_ARACommon.cpp create mode 100644 source/modules/juce_audio_processors/format_types/juce_ARACommon.h create mode 100644 source/modules/juce_audio_processors/format_types/juce_ARAHosting.cpp create mode 100644 source/modules/juce_audio_processors/format_types/juce_ARAHosting.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/ipslcontextinfo.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/ipsleditcontroller.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/ipslgainreduction.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/ipslhostcommands.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/ipslviewembedding.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/ipslviewscaling.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/pslauextensions.h create mode 100644 source/modules/juce_audio_processors/format_types/pslextensions/pslvst2extensions.h create mode 100644 source/modules/juce_audio_processors/juce_audio_processors_ara.cpp create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.cpp create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.h create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentControllerCommon.cpp create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.cpp create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.h create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.cpp create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.cpp create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.h create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp create mode 100644 source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h create mode 100644 source/modules/juce_core/containers/juce_ListenerList.cpp delete mode 100644 source/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h diff --git a/source/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp b/source/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp index 40c2c7ee0..9bc1d72e9 100644 --- a/source/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp +++ b/source/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp @@ -1088,6 +1088,7 @@ void AudioDeviceManager::setDefaultMidiOutputDevice (const String& identifier) { if (defaultMidiOutputDeviceInfo.identifier != identifier) { + std::unique_ptr oldMidiPort; Array oldCallbacks; { @@ -1099,7 +1100,7 @@ void AudioDeviceManager::setDefaultMidiOutputDevice (const String& identifier) for (int i = oldCallbacks.size(); --i >= 0;) oldCallbacks.getUnchecked (i)->audioDeviceStopped(); - defaultMidiOutput.reset(); + std::swap (oldMidiPort, defaultMidiOutput); if (identifier.isNotEmpty()) defaultMidiOutput = MidiOutput::openDevice (identifier); @@ -1119,7 +1120,7 @@ void AudioDeviceManager::setDefaultMidiOutputDevice (const String& identifier) } updateXml(); - sendChangeMessage(); + sendSynchronousChangeMessage(); } } diff --git a/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp b/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp index b12b81cbb..75fce26a7 100644 --- a/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp +++ b/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.h b/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.h index 87c13937e..0782294f3 100644 --- a/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.h +++ b/source/modules/juce_audio_processors/format/juce_AudioPluginFormat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -133,6 +140,18 @@ public: /** Returns true if instantiation of this plugin type must be done from a non-message thread. */ virtual bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const = 0; + /** A callback lambda that is passed to getARAFactory() */ + using ARAFactoryCreationCallback = std::function; + + /** Tries to create an ::ARAFactoryWrapper for this description. + + The result of the operation will be wrapped into an ARAFactoryResult, + which will be passed to a callback object supplied by the caller. + + @see AudioPluginFormatManager::createARAFactoryAsync + */ + virtual void createARAFactoryAsync (const PluginDescription&, ARAFactoryCreationCallback callback) { callback ({}); } + protected: //============================================================================== friend class AudioPluginFormatManager; diff --git a/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp b/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp index c10b07609..9ba57bea4 100644 --- a/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp +++ b/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -129,6 +136,22 @@ std::unique_ptr AudioPluginFormatManager::createPluginInsta return {}; } +void AudioPluginFormatManager::createARAFactoryAsync (const PluginDescription& description, + AudioPluginFormat::ARAFactoryCreationCallback callback) const +{ + String errorMessage; + + if (auto* format = findFormatForDescription (description, errorMessage)) + { + format->createARAFactoryAsync (description, callback); + } + else + { + errorMessage = NEEDS_TRANS ("Couldn't find format for the provided description"); + callback ({ {}, std::move (errorMessage) }); + } +} + void AudioPluginFormatManager::createPluginInstanceAsync (const PluginDescription& description, double initialSampleRate, int initialBufferSize, AudioPluginFormat::PluginCreationCallback callback) diff --git a/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h b/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h index af85379a1..5be95d140 100644 --- a/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h +++ b/source/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -102,6 +109,22 @@ public: double initialSampleRate, int initialBufferSize, AudioPluginFormat::PluginCreationCallback callback); + /** Tries to create an ::ARAFactoryWrapper for this description. + + The result of the operation will be wrapped into an ARAFactoryResult, + which will be passed to a callback object supplied by the caller. + + The operation may fail, in which case the callback will be called with + with a result object where ARAFactoryResult::araFactory.get() will return + a nullptr. + + In case of success the returned ::ARAFactoryWrapper will ensure that + modules required for the correct functioning of the ARAFactory will remain + loaded for the lifetime of the object. + */ + void createARAFactoryAsync (const PluginDescription& description, + AudioPluginFormat::ARAFactoryCreationCallback callback) const; + /** Checks that the file or component for this plugin actually still exists. (This won't try to load the plugin) */ diff --git a/source/modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py b/source/modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py index e70a661a3..5b74f0a83 100644 --- a/source/modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py +++ b/source/modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py @@ -6,10 +6,10 @@ # JUCE is an open source library subject to commercial or open-source # licensing. # -# By using JUCE, you agree to the terms of both the JUCE 6 End-User License -# Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). +# By using JUCE, you agree to the terms of both the JUCE 7 End-User License +# Agreement and JUCE Privacy Policy. # -# End User License Agreement: www.juce.com/juce-6-licence +# End User License Agreement: www.juce.com/juce-7-licence # Privacy Policy: www.juce.com/juce-privacy-policy # # Or: You may also use this code under the terms of the GPL v3 (see @@ -57,10 +57,10 @@ FUNCTION_TEMPLATE = """/* JUCE is an open source library subject to commercial or open-source licensing. - By using JUCE, you agree to the terms of both the JUCE 6 End-User License - Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. - End User License Agreement: www.juce.com/juce-6-licence + End User License Agreement: www.juce.com/juce-7-licence Privacy Policy: www.juce.com/juce-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see diff --git a/source/modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h b/source/modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h index 004b74add..8f2260d06 100644 --- a/source/modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h +++ b/source/modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h b/source/modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h index 153f8ce76..1a3e28655 100644 --- a/source/modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h +++ b/source/modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h b/source/modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h index 153f8ce76..1a3e28655 100644 --- a/source/modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h +++ b/source/modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h b/source/modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h index 153f8ce76..1a3e28655 100644 --- a/source/modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h +++ b/source/modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_ARACommon.cpp b/source/modules/juce_audio_processors/format_types/juce_ARACommon.cpp new file mode 100644 index 000000000..d118366fa --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/juce_ARACommon.cpp @@ -0,0 +1,76 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if (JUCE_PLUGINHOST_ARA && (JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_AU) && (JUCE_MAC || JUCE_WINDOWS)) + +#include + +namespace juce +{ + +static void dummyARAInterfaceAssert (ARA::ARAAssertCategory, const void*, const char*) +{} + +static ARA::ARAInterfaceConfiguration createInterfaceConfig (const ARA::ARAFactory* araFactory) +{ + static auto* assertFunction = &dummyARAInterfaceAssert; + + #if ARA_VALIDATE_API_CALLS + assertFunction = &::ARA::ARAInterfaceAssert; + static std::once_flag flag; + std::call_once (flag, [] { ARA::ARASetExternalAssertReference (&assertFunction); }); + #endif + + return makeARASizedStruct (&ARA::ARAInterfaceConfiguration::assertFunctionAddress, + jmin (araFactory->highestSupportedApiGeneration, (ARA::ARAAPIGeneration) ARA::kARAAPIGeneration_2_X_Draft), + &assertFunction); +} + +static std::shared_ptr getOrCreateARAFactory (const ARA::ARAFactory* ptr, + std::function onDelete) +{ + JUCE_ASSERT_MESSAGE_THREAD + + static std::unordered_map> cache; + + auto& cachePtr = cache[ptr]; + + if (const auto obj = cachePtr.lock()) + return obj; + + const auto interfaceConfig = createInterfaceConfig (ptr); + ptr->initializeARAWithConfiguration (&interfaceConfig); + const auto obj = std::shared_ptr (ptr, [deleter = std::move (onDelete)] (const ARA::ARAFactory* factory) + { + factory->uninitializeARA(); + deleter (factory); + }); + cachePtr = obj; + return obj; +} + +} + +#endif diff --git a/source/modules/juce_audio_processors/format_types/juce_ARACommon.h b/source/modules/juce_audio_processors/format_types/juce_ARACommon.h new file mode 100644 index 000000000..4811733bf --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/juce_ARACommon.h @@ -0,0 +1,85 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +namespace ARA +{ + struct ARAFactory; +} + +namespace juce +{ + +/** Encapsulates an ARAFactory pointer and makes sure that it remains in a valid state + for the lifetime of the ARAFactoryWrapper object. + + @tags{ARA} +*/ +class ARAFactoryWrapper +{ +public: + ARAFactoryWrapper() = default; + + /** @internal + + Used by the framework to encapsulate ARAFactory pointers loaded from plugins. + */ + explicit ARAFactoryWrapper (std::shared_ptr factoryIn) : factory (std::move (factoryIn)) {} + + /** Returns the contained ARAFactory pointer, which can be a nullptr. + + The validity of the returned pointer is only guaranteed for the lifetime of this wrapper. + */ + const ARA::ARAFactory* get() const noexcept { return factory.get(); } + +private: + std::shared_ptr factory; +}; + +/** Represents the result of AudioPluginFormatManager::createARAFactoryAsync(). + + If the operation fails then #araFactory will contain `nullptr`, and #errorMessage may + contain a reason for the failure. + + The araFactory member ensures that the module necessary for the correct functioning + of the factory will remain loaded. + + @tags{ARA} +*/ +struct ARAFactoryResult +{ + ARAFactoryWrapper araFactory; + String errorMessage; +}; + +template +constexpr Obj makeARASizedStruct (Member Obj::* member, Ts&&... ts) +{ + return { reinterpret_cast (&(static_cast (nullptr)->*member)) + sizeof (Member), + std::forward (ts)... }; +} + +} // namespace juce diff --git a/source/modules/juce_audio_processors/format_types/juce_ARAHosting.cpp b/source/modules/juce_audio_processors/format_types/juce_ARAHosting.cpp new file mode 100644 index 000000000..d406ffd24 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/juce_ARAHosting.cpp @@ -0,0 +1,458 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if (JUCE_PLUGINHOST_ARA && (JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_AU) && (JUCE_MAC || JUCE_WINDOWS)) + +#include "juce_ARAHosting.h" +#include + +#include + +namespace juce +{ +struct ARAEditGuardState +{ +public: + /* Returns true if this controller wasn't previously present. */ + bool add (ARA::Host::DocumentController& dc) + { + const std::lock_guard lock (mutex); + return ++counts[&dc] == 1; + } + + /* Returns true if this controller is no longer present. */ + bool remove (ARA::Host::DocumentController& dc) + { + const std::lock_guard lock (mutex); + return --counts[&dc] == 0; + } + +private: + std::map counts; + std::mutex mutex; +}; + +static ARAEditGuardState editGuardState; + +ARAEditGuard::ARAEditGuard (ARA::Host::DocumentController& dcIn) : dc (dcIn) +{ + if (editGuardState.add (dc)) + dc.beginEditing(); +} + +ARAEditGuard::~ARAEditGuard() +{ + if (editGuardState.remove (dc)) + dc.endEditing(); +} + +//============================================================================== +namespace ARAHostModel +{ + +//============================================================================== +AudioSource::AudioSource (ARA::ARAAudioSourceHostRef hostRef, + ARA::Host::DocumentController& dc, + const ARA::ARAAudioSourceProperties& props) + : ManagedARAHandle (dc, [&] + { + const ARAEditGuard guard (dc); + return dc.createAudioSource (hostRef, &props); + }()) +{ +} + +void AudioSource::update (const ARA::ARAAudioSourceProperties& props) +{ + const ARAEditGuard guard (getDocumentController()); + getDocumentController().updateAudioSourceProperties (getPluginRef(), &props); +} + +void AudioSource::enableAudioSourceSamplesAccess (bool x) +{ + const ARAEditGuard guard (getDocumentController()); + getDocumentController().enableAudioSourceSamplesAccess (getPluginRef(), x); +} + +void AudioSource::destroy (ARA::Host::DocumentController& dc, Ptr ptr) +{ + dc.destroyAudioSource (ptr); +} + +//============================================================================== +AudioModification::AudioModification (ARA::ARAAudioModificationHostRef hostRef, + ARA::Host::DocumentController& dc, + AudioSource& s, + const ARA::ARAAudioModificationProperties& props) + : ManagedARAHandle (dc, [&] + { + const ARAEditGuard guard (dc); + return dc.createAudioModification (s.getPluginRef(), hostRef, &props); + }()), + source (s) +{ +} + +void AudioModification::update (const ARA::ARAAudioModificationProperties& props) +{ + const ARAEditGuard guard (getDocumentController()); + getDocumentController().updateAudioModificationProperties (getPluginRef(), &props); +} + +void AudioModification::destroy (ARA::Host::DocumentController& dc, Ptr ptr) +{ + dc.destroyAudioModification (ptr); +} + +//============================================================================== +class PlaybackRegion::Impl : public ManagedARAHandle, + public DeletionListener +{ +public: + Impl (ARA::ARAPlaybackRegionHostRef hostRef, + ARA::Host::DocumentController& dc, + AudioModification& m, + const ARA::ARAPlaybackRegionProperties& props); + + ~Impl() override + { + for (const auto& l : listeners) + l->removeListener (*this); + } + + /* Updates the state of the corresponding %ARA model object. + + Places the DocumentController in editable state. + + You can use getEmptyProperties() to acquire a properties struct where the `structSize` + field has already been correctly set. + */ + void update (const ARA::ARAPlaybackRegionProperties& props); + + auto& getAudioModification() const { return modification; } + + static void destroy (ARA::Host::DocumentController&, Ptr); + + void addListener (DeletionListener& l) { listeners.insert (&l); } + void removeListener (DeletionListener& l) noexcept override { listeners.erase (&l); } + +private: + AudioModification* modification = nullptr; + std::unordered_set listeners; +}; + +PlaybackRegion::Impl::Impl (ARA::ARAPlaybackRegionHostRef hostRef, + ARA::Host::DocumentController& dc, + AudioModification& m, + const ARA::ARAPlaybackRegionProperties& props) + : ManagedARAHandle (dc, [&] + { + const ARAEditGuard guard (dc); + return dc.createPlaybackRegion (m.getPluginRef(), hostRef, &props); + }()), + modification (&m) +{ +} + +PlaybackRegion::~PlaybackRegion() = default; + +void PlaybackRegion::Impl::update (const ARA::ARAPlaybackRegionProperties& props) +{ + const ARAEditGuard guard (getDocumentController()); + getDocumentController().updatePlaybackRegionProperties (getPluginRef(), &props); +} + +void PlaybackRegion::Impl::destroy (ARA::Host::DocumentController& dc, Ptr ptr) +{ + dc.destroyPlaybackRegion (ptr); +} + +PlaybackRegion::PlaybackRegion (ARA::ARAPlaybackRegionHostRef hostRef, + ARA::Host::DocumentController& dc, + AudioModification& m, + const ARA::ARAPlaybackRegionProperties& props) + : impl (std::make_unique (hostRef, dc, m, props)) +{ +} + +void PlaybackRegion::update (const ARA::ARAPlaybackRegionProperties& props) { impl->update (props); } + +void PlaybackRegion::addListener (DeletionListener& x) { impl->addListener (x); } + +auto& PlaybackRegion::getAudioModification() const { return impl->getAudioModification(); } + +ARA::ARAPlaybackRegionRef PlaybackRegion::getPluginRef() const noexcept { return impl->getPluginRef(); } + +DeletionListener& PlaybackRegion::getDeletionListener() const noexcept { return *impl.get(); } + +//============================================================================== +MusicalContext::MusicalContext (ARA::ARAMusicalContextHostRef hostRef, + ARA::Host::DocumentController& dc, + const ARA::ARAMusicalContextProperties& props) + : ManagedARAHandle (dc, [&] + { + const ARAEditGuard guard (dc); + return dc.createMusicalContext (hostRef, &props); + }()) +{ +} + +void MusicalContext::update (const ARA::ARAMusicalContextProperties& props) +{ + const ARAEditGuard guard (getDocumentController()); + return getDocumentController().updateMusicalContextProperties (getPluginRef(), &props); +} + +void MusicalContext::destroy (ARA::Host::DocumentController& dc, Ptr ptr) +{ + dc.destroyMusicalContext (ptr); +} + +//============================================================================== +RegionSequence::RegionSequence (ARA::ARARegionSequenceHostRef hostRef, + ARA::Host::DocumentController& dc, + const ARA::ARARegionSequenceProperties& props) + : ManagedARAHandle (dc, [&] + { + const ARAEditGuard guard (dc); + return dc.createRegionSequence (hostRef, &props); + }()) +{ +} + +void RegionSequence::update (const ARA::ARARegionSequenceProperties& props) +{ + const ARAEditGuard guard (getDocumentController()); + return getDocumentController().updateRegionSequenceProperties (getPluginRef(), &props); +} + +void RegionSequence::destroy (ARA::Host::DocumentController& dc, Ptr ptr) +{ + dc.destroyRegionSequence (ptr); +} + +//============================================================================== +PlaybackRendererInterface PlugInExtensionInstance::getPlaybackRendererInterface() const +{ + if (instance != nullptr) + return PlaybackRendererInterface (instance->playbackRendererRef, instance->playbackRendererInterface); + + return {}; +} + +EditorRendererInterface PlugInExtensionInstance::getEditorRendererInterface() const +{ + if (instance != nullptr) + return EditorRendererInterface (instance->editorRendererRef, instance->editorRendererInterface); + + return {}; +} + +} // namespace ARAHostModel + +//============================================================================== +class ARAHostDocumentController::Impl +{ +public: + Impl (ARAFactoryWrapper araFactoryIn, + std::unique_ptr&& dcHostInstanceIn, + const ARA::ARADocumentControllerInstance* documentControllerInstance) + : araFactory (std::move (araFactoryIn)), + dcHostInstance (std::move (dcHostInstanceIn)), + documentController (documentControllerInstance) + { + } + + ~Impl() + { + documentController.destroyDocumentController(); + } + + static std::unique_ptr + createImpl (ARAFactoryWrapper araFactory, + const String& documentName, + std::unique_ptr&& audioAccessController, + std::unique_ptr&& archivingController, + std::unique_ptr&& contentAccessController, + std::unique_ptr&& modelUpdateController, + std::unique_ptr&& playbackController) + { + std::unique_ptr dcHostInstance = + std::make_unique (audioAccessController.release(), + archivingController.release(), + contentAccessController.release(), + modelUpdateController.release(), + playbackController.release()); + + const auto documentProperties = makeARASizedStruct (&ARA::ARADocumentProperties::name, documentName.toRawUTF8()); + + if (auto* dci = araFactory.get()->createDocumentControllerWithDocument (dcHostInstance.get(), &documentProperties)) + return std::make_unique (std::move (araFactory), std::move (dcHostInstance), dci); + + return {}; + } + + ARAHostModel::PlugInExtensionInstance bindDocumentToPluginInstance (AudioPluginInstance& instance, + ARA::ARAPlugInInstanceRoleFlags knownRoles, + ARA::ARAPlugInInstanceRoleFlags assignedRoles) + { + + const auto makeVisitor = [] (auto vst3Fn, auto auFn) + { + using Vst3Fn = decltype (vst3Fn); + using AuFn = decltype (auFn); + + struct Visitor : ExtensionsVisitor, Vst3Fn, AuFn + { + explicit Visitor (Vst3Fn vst3Fn, AuFn auFn) : Vst3Fn (std::move (vst3Fn)), AuFn (std::move (auFn)) {} + void visitVST3Client (const VST3Client& x) override { Vst3Fn::operator() (x); } + void visitAudioUnitClient (const AudioUnitClient& x) override { AuFn::operator() (x); } + }; + + return Visitor { std::move (vst3Fn), std::move (auFn) }; + }; + + const ARA::ARAPlugInExtensionInstance* pei = nullptr; + auto visitor = makeVisitor ([this, &pei, knownRoles, assignedRoles] (const ExtensionsVisitor::VST3Client& vst3Client) + { + auto* iComponentPtr = vst3Client.getIComponentPtr(); + VSTComSmartPtr araEntryPoint; + + if (araEntryPoint.loadFrom (iComponentPtr)) + pei = araEntryPoint->bindToDocumentControllerWithRoles (documentController.getRef(), knownRoles, assignedRoles); + }, + #if JUCE_PLUGINHOST_AU && JUCE_MAC + [this, &pei, knownRoles, assignedRoles] (const ExtensionsVisitor::AudioUnitClient& auClient) + { + auto audioUnit = auClient.getAudioUnitHandle(); + auto propertySize = (UInt32) sizeof (ARA::ARAAudioUnitPlugInExtensionBinding); + const auto expectedPropertySize = propertySize; + ARA::ARAAudioUnitPlugInExtensionBinding audioUnitBinding { ARA::kARAAudioUnitMagic, + documentController.getRef(), + nullptr, + knownRoles, + assignedRoles }; + + auto status = AudioUnitGetProperty (audioUnit, + ARA::kAudioUnitProperty_ARAPlugInExtensionBindingWithRoles, + kAudioUnitScope_Global, + 0, + &audioUnitBinding, + &propertySize); + + if (status == noErr + && propertySize == expectedPropertySize + && audioUnitBinding.inOutMagicNumber == ARA::kARAAudioUnitMagic + && audioUnitBinding.inDocumentControllerRef == documentController.getRef() + && audioUnitBinding.outPlugInExtension != nullptr) + { + pei = audioUnitBinding.outPlugInExtension; + } + else + jassertfalse; + } + #else + [] (const auto&) {} + #endif + ); + + instance.getExtensions (visitor); + return ARAHostModel::PlugInExtensionInstance { pei }; + } + + auto& getDocumentController() { return documentController; } + +private: + ARAFactoryWrapper araFactory; + std::unique_ptr dcHostInstance; + ARA::Host::DocumentController documentController; +}; + +ARAHostDocumentController::ARAHostDocumentController (std::unique_ptr&& implIn) + : impl { std::move (implIn) } +{} + +std::unique_ptr ARAHostDocumentController::create (ARAFactoryWrapper factory, + const String& documentName, + std::unique_ptr audioAccessController, + std::unique_ptr archivingController, + std::unique_ptr contentAccessController, + std::unique_ptr modelUpdateController, + std::unique_ptr playbackController) +{ + if (auto impl = Impl::createImpl (std::move (factory), + documentName, + std::move (audioAccessController), + std::move (archivingController), + std::move (contentAccessController), + std::move (modelUpdateController), + std::move (playbackController))) + { + return rawToUniquePtr (new ARAHostDocumentController (std::move (impl))); + } + + return {}; +} + +ARAHostDocumentController::~ARAHostDocumentController() = default; + +ARA::Host::DocumentController& ARAHostDocumentController::getDocumentController() const +{ + return impl->getDocumentController(); +} + +ARAHostModel::PlugInExtensionInstance ARAHostDocumentController::bindDocumentToPluginInstance (AudioPluginInstance& instance, + ARA::ARAPlugInInstanceRoleFlags knownRoles, + ARA::ARAPlugInInstanceRoleFlags assignedRoles) +{ + return impl->bindDocumentToPluginInstance (instance, knownRoles, assignedRoles); +} + +void createARAFactoryAsync (AudioPluginInstance& instance, std::function cb) +{ + if (! instance.getPluginDescription().hasARAExtension) + cb (ARAFactoryWrapper{}); + + struct Extensions : public ExtensionsVisitor + { + Extensions (std::function callbackIn) + : callback (std::move (callbackIn)) + {} + + void visitARAClient (const ARAClient& araClient) override + { + araClient.createARAFactoryAsync (std::move (callback)); + } + + std::function callback; + }; + + Extensions extensions { std::move(cb) }; + instance.getExtensions (extensions); +} + +} // namespace juce + +#endif diff --git a/source/modules/juce_audio_processors/format_types/juce_ARAHosting.h b/source/modules/juce_audio_processors/format_types/juce_ARAHosting.h new file mode 100644 index 000000000..40203d561 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/juce_ARAHosting.h @@ -0,0 +1,740 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +#if (JUCE_PLUGINHOST_ARA && (JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_AU) && (JUCE_MAC || JUCE_WINDOWS)) || DOXYGEN + +// Include ARA SDK headers +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wgnu-zero-variadic-macro-arguments") + +#include +#include + +JUCE_END_IGNORE_WARNINGS_GCC_LIKE + +//============================================================================== +namespace juce +{ +/** Reference counting helper class to ensure that the DocumentController is in editable state. + + When adding, removing or modifying %ARA model objects the enclosing DocumentController must be + in editable state. + + You can achieve this by using the %ARA Library calls + ARA::Host::DocumentController::beginEditing() and ARA::Host::DocumentController::endEditing(). + + However, putting the DocumentController in and out of editable state is a potentially costly + operation, thus it makes sense to group multiple modifications together and change the editable + state only once. + + ARAEditGuard keeps track of all scopes that want to edit a particular DocumentController and + will trigger beginEditing() and endEditing() only for the outermost scope. This allows you to + merge multiple editing operations into one by putting ARAEditGuard in their enclosing scope. + + @tags{ARA} +*/ +class ARAEditGuard +{ +public: + explicit ARAEditGuard (ARA::Host::DocumentController& dcIn); + ~ARAEditGuard(); + +private: + ARA::Host::DocumentController& dc; +}; + +namespace ARAHostModel +{ + +//============================================================================== +/** Allows converting, without warnings, between pointers of two unrelated types. + + This is a bit like ARA_MAP_HOST_REF, but not macro-based. + + To use it, add a line like this to a type that needs to deal in host references: + @code + using Converter = ConversionFunctions; + @endcode + + Now, you can convert back and forth with host references by calling + Converter::toHostRef() and Converter::fromHostRef(). + + @tags{ARA} +*/ +template +struct ConversionFunctions +{ + static_assert (sizeof (A) <= sizeof (B), + "It is only possible to convert between types of the same size"); + + static B toHostRef (A value) + { + return readUnaligned (&value); + } + + static A fromHostRef (B value) + { + return readUnaligned (&value); + } +}; + +//============================================================================== +template +class ManagedARAHandle +{ +public: + using Ptr = PtrIn; + + ManagedARAHandle (ARA::Host::DocumentController& dc, Ptr ptr) noexcept + : handle (ptr, Deleter { dc }) {} + + auto& getDocumentController() const { return handle.get_deleter().documentController; } + + Ptr getPluginRef() const { return handle.get(); } + +private: + struct Deleter + { + void operator() (Ptr ptr) const noexcept + { + const ARAEditGuard guard (documentController); + Base::destroy (documentController, ptr); + } + + ARA::Host::DocumentController& documentController; + }; + + std::unique_ptr, Deleter> handle; +}; + +//============================================================================== +/** Helper class for the host side implementation of the %ARA %AudioSource model object. + + Its intended use is to add a member variable of this type to your host side %AudioSource + implementation. Then it provides a RAII approach to managing the lifetime of the corresponding + objects created inside the DocumentController. When the host side object is instantiated an ARA + model object is also created in the DocumentController. When the host side object is deleted it + will be removed from the DocumentController as well. + + The class will automatically put the DocumentController into editable state for operations that + mandate this e.g. creation, deletion or updating. + + You can encapsulate multiple such operations into a scope with an ARAEditGuard in order to invoke + the editable state of the DocumentController only once. + + @tags{ARA} +*/ +class AudioSource : public ManagedARAHandle +{ +public: + /** Returns an %ARA versioned struct with the `structSize` correctly set for the currently + used SDK version. + + You should leave `structSize` unchanged, and fill out the rest of the fields appropriately + for the host implementation of the %ARA model object. + */ + static constexpr auto getEmptyProperties() { return makeARASizedStruct (&ARA::ARAAudioSourceProperties::merits64BitSamples); } + + /** Creates an AudioSource object. During construction it registers an %ARA %AudioSource model + object with the DocumentController that refers to the provided hostRef. When this object + is deleted the corresponding DocumentController model object will also be deregistered. + + You can acquire a correctly versioned `ARA::ARAAudioSourceProperties` struct by calling + getEmptyProperties(). + + Places the DocumentController in editable state. + + @see ARAEditGuard + */ + AudioSource (ARA::ARAAudioSourceHostRef hostRef, + ARA::Host::DocumentController& dc, + const ARA::ARAAudioSourceProperties& props); + + /** Destructor. Temporarily places the DocumentController in an editable state. */ + ~AudioSource() = default; + + /** Updates the state of the corresponding %ARA model object. + + Places the DocumentController in editable state. + + You can use getEmptyProperties() to acquire a properties struct where the `structSize` + field has already been correctly set. + */ + void update (const ARA::ARAAudioSourceProperties& props); + + /** Changes the plugin's access to the %AudioSource samples through the DocumentController. + + Places the DocumentController in editable state. + */ + void enableAudioSourceSamplesAccess (bool); + + /** Called by ManagedARAHandle to deregister the model object during the destruction of + AudioSource. + + You shouldn't call this function manually. + */ + static void destroy (ARA::Host::DocumentController&, Ptr); +}; + +/** Helper class for the host side implementation of the %ARA %AudioModification model object. + + Its intended use is to add a member variable of this type to your host side %AudioModification + implementation. Then it provides a RAII approach to managing the lifetime of the corresponding + objects created inside the DocumentController. When the host side object is instantiated an ARA + model object is also created in the DocumentController. When the host side object is deleted it + will be removed from the DocumentController as well. + + The class will automatically put the DocumentController into editable state for operations that + mandate this e.g. creation, deletion or updating. + + You can encapsulate multiple such operations into a scope with an ARAEditGuard in order to invoke + the editable state of the DocumentController only once. + + @tags{ARA} +*/ +class AudioModification : public ManagedARAHandle +{ +public: + /** Returns an %ARA versioned struct with the `structSize` correctly set for the currently + used SDK version. + + You should leave `structSize` unchanged, and fill out the rest of the fields appropriately + for the host implementation of the %ARA model object. + */ + static constexpr auto getEmptyProperties() + { + return makeARASizedStruct (&ARA::ARAAudioModificationProperties::persistentID); + } + + /** Creates an AudioModification object. During construction it registers an %ARA %AudioModification model + object with the DocumentController that refers to the provided hostRef. When this object + is deleted the corresponding DocumentController model object will also be deregistered. + + You can acquire a correctly versioned `ARA::ARAAudioModificationProperties` struct by calling + getEmptyProperties(). + + Places the DocumentController in editable state. + + @see ARAEditGuard + */ + AudioModification (ARA::ARAAudioModificationHostRef hostRef, + ARA::Host::DocumentController& dc, + AudioSource& s, + const ARA::ARAAudioModificationProperties& props); + + /** Updates the state of the corresponding %ARA model object. + + Places the DocumentController in editable state. + + You can use getEmptyProperties() to acquire a properties struct where the `structSize` + field has already been correctly set. + */ + void update (const ARA::ARAAudioModificationProperties& props); + + /** Returns the AudioSource containing this AudioModification. */ + auto& getAudioSource() const { return source; } + + /** Called by ManagedARAHandle to deregister the model object during the destruction of + AudioModification. + + You shouldn't call this function manually. + */ + static void destroy (ARA::Host::DocumentController&, Ptr); + +private: + AudioSource& source; +}; + +struct DeletionListener +{ + virtual ~DeletionListener() = default; + virtual void removeListener (DeletionListener& other) noexcept = 0; +}; + +struct PlaybackRegion +{ +public: + /** Returns an %ARA versioned struct with the `structSize` correctly set for the currently + used SDK version. + + You should leave `structSize` unchanged, and fill out the rest of the fields appropriately + for the host implementation of the %ARA model object. + */ + static constexpr auto getEmptyProperties() + { + return makeARASizedStruct (&ARA::ARAPlaybackRegionProperties::color); + } + + PlaybackRegion (ARA::ARAPlaybackRegionHostRef hostRef, + ARA::Host::DocumentController& dc, + AudioModification& m, + const ARA::ARAPlaybackRegionProperties& props); + + ~PlaybackRegion(); + + /** Updates the state of the corresponding %ARA model object. + + Places the DocumentController in editable state. + + You can use getEmptyProperties() to acquire a properties struct where the `structSize` + field has already been correctly set. + */ + void update (const ARA::ARAPlaybackRegionProperties& props); + + /** Adds a DeletionListener object that will be notified when the PlaybackRegion object + is deleted. + + Used by the PlaybackRegionRegistry. + + @see PlaybackRendererInterface, EditorRendererInterface + */ + void addListener (DeletionListener& x); + + /** Returns the AudioModification containing this PlaybackRegion. */ + auto& getAudioModification() const; + + /** Returns the plugin side reference to the PlaybackRegion */ + ARA::ARAPlaybackRegionRef getPluginRef() const noexcept; + DeletionListener& getDeletionListener() const noexcept; + +private: + class Impl; + + std::unique_ptr impl; +}; + +/** Helper class for the host side implementation of the %ARA %MusicalContext model object. + + Its intended use is to add a member variable of this type to your host side %MusicalContext + implementation. Then it provides a RAII approach to managing the lifetime of the corresponding + objects created inside the DocumentController. When the host side object is instantiated an ARA + model object is also created in the DocumentController. When the host side object is deleted it + will be removed from the DocumentController as well. + + The class will automatically put the DocumentController into editable state for operations that + mandate this e.g. creation, deletion or updating. + + You can encapsulate multiple such operations into a scope with an ARAEditGuard in order to invoke + the editable state of the DocumentController only once. + + @tags{ARA} +*/ +class MusicalContext : public ManagedARAHandle +{ +public: + /** Returns an %ARA versioned struct with the `structSize` correctly set for the currently + used SDK version. + + You should leave `structSize` unchanged, and fill out the rest of the fields appropriately + for the host implementation of the %ARA model object. + */ + static constexpr auto getEmptyProperties() + { + return makeARASizedStruct (&ARA::ARAMusicalContextProperties::color); + } + + /** Creates a MusicalContext object. During construction it registers an %ARA %MusicalContext model + object with the DocumentController that refers to the provided hostRef. When this object + is deleted the corresponding DocumentController model object will also be deregistered. + + You can acquire a correctly versioned `ARA::ARAMusicalContextProperties` struct by calling + getEmptyProperties(). + + Places the DocumentController in editable state. + + @see ARAEditGuard + */ + MusicalContext (ARA::ARAMusicalContextHostRef hostRef, + ARA::Host::DocumentController& dc, + const ARA::ARAMusicalContextProperties& props); + + /** Updates the state of the corresponding %ARA model object. + + Places the DocumentController in editable state. + + You can use getEmptyProperties() to acquire a properties struct where the `structSize` + field has already been correctly set. + */ + void update (const ARA::ARAMusicalContextProperties& props); + + /** Called by ManagedARAHandle to deregister the model object during the destruction of + AudioModification. + + You shouldn't call this function manually. + */ + static void destroy (ARA::Host::DocumentController&, Ptr); +}; + +/** Helper class for the host side implementation of the %ARA %RegionSequence model object. + + Its intended use is to add a member variable of this type to your host side %RegionSequence + implementation. Then it provides a RAII approach to managing the lifetime of the corresponding + objects created inside the DocumentController. When the host side object is instantiated an ARA + model object is also created in the DocumentController. When the host side object is deleted it + will be removed from the DocumentController as well. + + The class will automatically put the DocumentController into editable state for operations that + mandate this e.g. creation, deletion or updating. + + You can encapsulate multiple such operations into a scope with an ARAEditGuard in order to invoke + the editable state of the DocumentController only once. + + @tags{ARA} +*/ +class RegionSequence : public ManagedARAHandle +{ +public: + /** Returns an %ARA versioned struct with the `structSize` correctly set for the currently + used SDK version. + + You should leave `structSize` unchanged, and fill out the rest of the fields appropriately + for the host implementation of the %ARA model object. + */ + static constexpr auto getEmptyProperties() + { + return makeARASizedStruct (&ARA::ARARegionSequenceProperties::color); + } + + /** Creates a RegionSequence object. During construction it registers an %ARA %RegionSequence model + object with the DocumentController that refers to the provided hostRef. When this object + is deleted the corresponding DocumentController model object will also be deregistered. + + You can acquire a correctly versioned `ARA::ARARegionSequenceProperties` struct by calling + getEmptyProperties(). + + Places the DocumentController in editable state. + + @see ARAEditGuard + */ + RegionSequence (ARA::ARARegionSequenceHostRef hostRef, + ARA::Host::DocumentController& dc, + const ARA::ARARegionSequenceProperties& props); + + /** Updates the state of the corresponding %ARA model object. + + Places the DocumentController in editable state. + + You can use getEmptyProperties() to acquire a properties struct where the `structSize` + field has already been correctly set. + */ + void update (const ARA::ARARegionSequenceProperties& props); + + /** Called by ManagedARAHandle to deregister the model object during the destruction of + AudioModification. + + You shouldn't call this function manually. + */ + static void destroy (ARA::Host::DocumentController&, Ptr); +}; + +//============================================================================== +/** Base class used by the ::PlaybackRendererInterface and ::EditorRendererInterface + plugin extension interfaces. + + Hosts will want to create one or typically more %ARA plugin extension instances per plugin for + the purpose of playback and editor rendering. The PlaybackRegions created by the host then have + to be assigned to these instances through the appropriate interfaces. + + Whether a PlaybackRegion or an assigned RendererInterface is deleted first depends on the host + implementation and exact use case. + + By using these helper classes you can ensure that the %ARA DocumentController remains in a + valid state in both situations. In order to use them acquire an object from + PlugInExtensionInstance::getPlaybackRendererInterface() or + PlugInExtensionInstance::getEditorRendererInterface(). + + Then call add() to register a PlaybackRegion with that particular PlugInExtensionInstance's + interface. + + Now when you delete that PlaybackRegion it will be deregistered from that extension instance. + If however you want to delete the plugin extension instance before the PlaybackRegion, you can + delete the PlaybackRegionRegistry instance before deleting the plugin extension instance, which + takes care of deregistering all PlaybackRegions. + + When adding or removing PlaybackRegions the plugin instance must be in an unprepared state i.e. + before AudioProcessor::prepareToPlay() or after AudioProcessor::releaseResources(). + + @code + auto playbackRenderer = std::make_unique (plugInExtensionInstance.getPlaybackRendererInterface()); + auto playbackRegion = std::make_unique (documentController, regionSequence, audioModification, audioSource); + + // Either of the following three code variations are valid + // (1) =================================================== + playbackRenderer.add (playbackRegion); + playbackRenderer.remove (playbackRegion); + + // (2) =================================================== + playbackRenderer.add (playbackRegion); + playbackRegion.reset(); + + // (3) =================================================== + playbackRenderer.add (playbackRegion); + playbackRenderer.reset(); + @endcode + + @see PluginExtensionInstance + + @tags{ARA} +*/ +template +class PlaybackRegionRegistry +{ +public: + PlaybackRegionRegistry() = default; + + PlaybackRegionRegistry (RendererRef rendererRefIn, const Interface* interfaceIn) + : registry (std::make_unique (rendererRefIn, interfaceIn)) + { + } + + /** Adds a PlaybackRegion to the corresponding ::PlaybackRendererInterface or ::EditorRendererInterface. + + The plugin instance must be in an unprepared state i.e. before AudioProcessor::prepareToPlay() or + after AudioProcessor::releaseResources(). + */ + void add (PlaybackRegion& region) { registry->add (region); } + + /** Removes a PlaybackRegion from the corresponding ::PlaybackRendererInterface or ::EditorRendererInterface. + + The plugin instance must be in an unprepared state i.e. before AudioProcessor::prepareToPlay() or + after AudioProcessor::releaseResources(). + */ + void remove (PlaybackRegion& region) { registry->remove (region); } + + /** Returns true if the underlying %ARA plugin extension instance fulfills the corresponding role. */ + bool isValid() { return registry->isValid(); } + +private: + class Registry : private DeletionListener + { + public: + Registry (RendererRef rendererRefIn, const Interface* interfaceIn) + : rendererRef (rendererRefIn), rendererInterface (interfaceIn) + { + } + + Registry (const Registry&) = delete; + Registry (Registry&&) noexcept = delete; + + Registry& operator= (const Registry&) = delete; + Registry& operator= (Registry&&) noexcept = delete; + + ~Registry() override + { + for (const auto& region : regions) + doRemoveListener (*region.first); + } + + bool isValid() { return rendererRef != nullptr && rendererInterface != nullptr; } + + void add (PlaybackRegion& region) + { + if (isValid()) + rendererInterface->addPlaybackRegion (rendererRef, region.getPluginRef()); + + regions.emplace (®ion.getDeletionListener(), region.getPluginRef()); + region.addListener (*this); + } + + void remove (PlaybackRegion& region) + { + doRemoveListener (region.getDeletionListener()); + } + + private: + void doRemoveListener (DeletionListener& listener) noexcept + { + listener.removeListener (*this); + removeListener (listener); + } + + void removeListener (DeletionListener& listener) noexcept override + { + const auto it = regions.find (&listener); + + if (it == regions.end()) + { + jassertfalse; + return; + } + + if (isValid()) + rendererInterface->removePlaybackRegion (rendererRef, it->second); + + regions.erase (it); + } + + RendererRef rendererRef = nullptr; + const Interface* rendererInterface = nullptr; + std::map regions; + }; + + std::unique_ptr registry; +}; + +//============================================================================== +/** Helper class for managing the lifetimes of %ARA plugin extension instances and PlaybackRegions. + + You can read more about its usage at PlaybackRegionRegistry. + + @see PlaybackRegion, PlaybackRegionRegistry + + @tags{ARA} +*/ +using PlaybackRendererInterface = PlaybackRegionRegistry; + +//============================================================================== +/** Helper class for managing the lifetimes of %ARA plugin extension instances and PlaybackRegions. + + You can read more about its usage at PlaybackRegionRegistry. + + @see PlaybackRegion, PlaybackRegionRegistry + + @tags{ARA} +*/ +using EditorRendererInterface = PlaybackRegionRegistry; + +//============================================================================== +/** Wrapper class for `ARA::ARAPlugInExtensionInstance*`. + + Returned by ARAHostDocumentController::bindDocumentToPluginInstance(). The corresponding + ARAHostDocumentController must remain valid as long as the plugin extension is in use. +*/ +class PlugInExtensionInstance final +{ +public: + /** Creates an empty PlugInExtensionInstance object. + + Calling isValid() on such an object will return false. + */ + PlugInExtensionInstance() = default; + + /** Creates a PlugInExtensionInstance object that wraps a `const ARA::ARAPlugInExtensionInstance*`. + + The intended way to obtain a PlugInExtensionInstance object is to call + ARAHostDocumentController::bindDocumentToPluginInstance(), which is using this constructor. + */ + explicit PlugInExtensionInstance (const ARA::ARAPlugInExtensionInstance* instanceIn) + : instance (instanceIn) + { + } + + /** Returns the PlaybackRendererInterface for the extension instance. + + Depending on what roles were passed into + ARAHostDocumentController::bindDocumentToPluginInstance() one particular instance may not + fulfill a given role. You can use PlaybackRendererInterface::isValid() to see if this + interface was provided by the instance. + */ + PlaybackRendererInterface getPlaybackRendererInterface() const; + + /** Returns the EditorRendererInterface for the extension instance. + + Depending on what roles were passed into + ARAHostDocumentController::bindDocumentToPluginInstance() one particular instance may not + fulfill a given role. You can use EditorRendererInterface::isValid() to see if this + interface was provided by the instance. + */ + EditorRendererInterface getEditorRendererInterface() const; + + /** Returns false if the PlugInExtensionInstance was default constructed and represents + no binding to an ARAHostDocumentController. + */ + bool isValid() const noexcept { return instance != nullptr; } + +private: + const ARA::ARAPlugInExtensionInstance* instance = nullptr; +}; + +} // namespace ARAHostModel + +//============================================================================== +/** Wrapper class for `ARA::Host::DocumentController`. + + In order to create an ARAHostDocumentController from an ARAFactoryWrapper you must + provide at least two mandatory host side interfaces. You can create these implementations + by inheriting from the base classes in the `ARA::Host` namespace. + + @tags{ARA} +*/ +class ARAHostDocumentController final +{ +public: + /** Factory function. + + You must check if the returned pointer is valid. + */ + static std::unique_ptr + create (ARAFactoryWrapper factory, + const String& documentName, + std::unique_ptr audioAccessController, + std::unique_ptr archivingController, + std::unique_ptr contentAccessController = nullptr, + std::unique_ptr modelUpdateController = nullptr, + std::unique_ptr playbackController = nullptr); + + ~ARAHostDocumentController(); + + /** Returns the underlying ARA::Host::DocumentController reference. */ + ARA::Host::DocumentController& getDocumentController() const; + + /** Binds the ARAHostDocumentController and its enclosed document to a plugin instance. + + The resulting ARAHostModel::PlugInExtensionInstance is responsible for fulfilling the + ARA specific roles of the plugin. + + A single DocumentController can be bound to multiple plugin instances, which is a typical + practice among hosts. + */ + ARAHostModel::PlugInExtensionInstance bindDocumentToPluginInstance (AudioPluginInstance& instance, + ARA::ARAPlugInInstanceRoleFlags knownRoles, + ARA::ARAPlugInInstanceRoleFlags assignedRoles); + +private: + class Impl; + std::unique_ptr impl; + + explicit ARAHostDocumentController (std::unique_ptr&& implIn); +}; + +/** Calls the provided callback with an ARAFactoryWrapper object obtained from the provided + AudioPluginInstance. + + If the provided AudioPluginInstance has no ARA extensions, the callback will be called with an + ARAFactoryWrapper that wraps a nullptr. + + The object passed to the callback must be checked even if the plugin instance reports having + ARA extensions. +*/ +void createARAFactoryAsync (AudioPluginInstance& instance, std::function cb); + +} // namespace juce + +//============================================================================== +#undef ARA_REF +#undef ARA_HOST_REF + +#endif diff --git a/source/modules/juce_audio_processors/format_types/juce_AU_Shared.h b/source/modules/juce_audio_processors/format_types/juce_AU_Shared.h index 901030ee6..de0b7650c 100644 --- a/source/modules/juce_audio_processors/format_types/juce_AU_Shared.h +++ b/source/modules/juce_audio_processors/format_types/juce_AU_Shared.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h b/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h index 54e0856a0..53c504876 100644 --- a/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h +++ b/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -47,6 +54,7 @@ public: StringArray searchPathsForPlugins (const FileSearchPath&, bool recursive, bool) override; bool doesPluginStillExist (const PluginDescription&) override; FileSearchPath getDefaultLocationsToSearch() override; + void createARAFactoryAsync (const PluginDescription&, ARAFactoryCreationCallback callback) override; private: //============================================================================== diff --git a/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm b/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm index 89b1e1370..c40fcfd45 100644 --- a/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm +++ b/source/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -24,14 +31,15 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") #include #include #include -#endif -#include +#if JUCE_PLUGINHOST_ARA + #include +#endif -#if JUCE_SUPPORT_CARBON - #include #endif +#include + #include #include @@ -426,8 +434,198 @@ namespace AudioUnitFormatHelpers } } +static bool hasARAExtension (AudioUnit audioUnit) +{ + #if JUCE_PLUGINHOST_ARA + UInt32 propertySize = sizeof (ARA::ARAAudioUnitFactory); + Boolean isWriteable = FALSE; + + OSStatus status = AudioUnitGetPropertyInfo (audioUnit, + ARA::kAudioUnitProperty_ARAFactory, + kAudioUnitScope_Global, + 0, + &propertySize, + &isWriteable); + + if ((status == noErr) && (propertySize == sizeof (ARA::ARAAudioUnitFactory)) && ! isWriteable) + return true; + #else + ignoreUnused (audioUnit); + #endif + + return false; +} + +struct AudioUnitDeleter +{ + void operator() (AudioUnit au) const { AudioComponentInstanceDispose (au); } +}; + +using AudioUnitUniquePtr = std::unique_ptr, AudioUnitDeleter>; +using AudioUnitSharedPtr = std::shared_ptr>; +using AudioUnitWeakPtr = std::weak_ptr>; + +static std::shared_ptr getARAFactory (AudioUnitSharedPtr audioUnit) +{ + #if JUCE_PLUGINHOST_ARA + jassert (audioUnit != nullptr); + + UInt32 propertySize = sizeof (ARA::ARAAudioUnitFactory); + ARA::ARAAudioUnitFactory audioUnitFactory { ARA::kARAAudioUnitMagic, nullptr }; + + if (hasARAExtension (audioUnit.get())) + { + OSStatus status = AudioUnitGetProperty (audioUnit.get(), + ARA::kAudioUnitProperty_ARAFactory, + kAudioUnitScope_Global, + 0, + &audioUnitFactory, + &propertySize); + + if ((status == noErr) + && (propertySize == sizeof (ARA::ARAAudioUnitFactory)) + && (audioUnitFactory.inOutMagicNumber == ARA::kARAAudioUnitMagic)) + { + jassert (audioUnitFactory.outFactory != nullptr); + return getOrCreateARAFactory (audioUnitFactory.outFactory, + [owningAuPtr = std::move (audioUnit)] (const ARA::ARAFactory*) {}); + } + } + #else + ignoreUnused (audioUnit); + #endif + + return {}; +} + +struct VersionedAudioComponent +{ + AudioComponent audioComponent = nullptr; + bool isAUv3 = false; + + bool operator< (const VersionedAudioComponent& other) const { return audioComponent < other.audioComponent; } +}; + +using AudioUnitCreationCallback = std::function; + +static void createAudioUnit (VersionedAudioComponent versionedComponent, AudioUnitCreationCallback callback) +{ + struct AUAsyncInitializationCallback + { + typedef void (^AUCompletionCallbackBlock)(AudioComponentInstance, OSStatus); + + explicit AUAsyncInitializationCallback (AudioUnitCreationCallback inOriginalCallback) + : originalCallback (std::move (inOriginalCallback)) + { + block = CreateObjCBlock (this, &AUAsyncInitializationCallback::completion); + } + + AUCompletionCallbackBlock getBlock() noexcept { return block; } + + void completion (AudioComponentInstance audioUnit, OSStatus err) + { + originalCallback (audioUnit, err); + + delete this; + } + + double sampleRate; + int framesPerBuffer; + AudioUnitCreationCallback originalCallback; + + ObjCBlock block; + }; + + auto callbackBlock = new AUAsyncInitializationCallback (std::move (callback)); + + if (versionedComponent.isAUv3) + { + if (@available (macOS 10.11, *)) + { + AudioComponentInstantiate (versionedComponent.audioComponent, kAudioComponentInstantiation_LoadOutOfProcess, + callbackBlock->getBlock()); + + return; + } + } + + AudioComponentInstance audioUnit; + auto err = AudioComponentInstanceNew (versionedComponent.audioComponent, &audioUnit); + callbackBlock->completion (err != noErr ? nullptr : audioUnit, err); +} + +struct AudioComponentResult +{ + explicit AudioComponentResult (String error) : errorMessage (std::move (error)) {} + + explicit AudioComponentResult (VersionedAudioComponent auComponent) : component (std::move (auComponent)) {} + + bool isValid() const { return component.audioComponent != nullptr; } + + VersionedAudioComponent component; + String errorMessage; +}; + +static AudioComponentResult getAudioComponent (AudioUnitPluginFormat& format, const PluginDescription& desc) +{ + using namespace AudioUnitFormatHelpers; + + AudioUnitPluginFormat audioUnitPluginFormat; + + if (! format.fileMightContainThisPluginType (desc.fileOrIdentifier)) + return AudioComponentResult { NEEDS_TRANS ("Plug-in description is not an AudioUnit plug-in") }; + + String pluginName, version, manufacturer; + AudioComponentDescription componentDesc; + AudioComponent auComponent; + String errMessage = NEEDS_TRANS ("Cannot find AudioUnit from description"); + + if (! getComponentDescFromIdentifier (desc.fileOrIdentifier, componentDesc, pluginName, version, manufacturer) + && ! getComponentDescFromFile (desc.fileOrIdentifier, componentDesc, pluginName, version, manufacturer)) + { + return AudioComponentResult { errMessage }; + } + + if ((auComponent = AudioComponentFindNext (nullptr, &componentDesc)) == nullptr) + { + return AudioComponentResult { errMessage }; + } + + if (AudioComponentGetDescription (auComponent, &componentDesc) != noErr) + { + return AudioComponentResult { errMessage }; + } + + const bool isAUv3 = AudioUnitFormatHelpers::isPluginAUv3 (componentDesc); + + return AudioComponentResult { { auComponent, isAUv3 } }; +} + +static void getOrCreateARAAudioUnit (VersionedAudioComponent auComponent, std::function callback) +{ + static std::map audioUnitARACache; + + if (auto audioUnit = audioUnitARACache[auComponent].lock()) + { + callback (std::move (audioUnit)); + return; + } + + createAudioUnit (auComponent, [auComponent, cb = std::move (callback)] (AudioUnit audioUnit, OSStatus err) + { + cb ([auComponent, audioUnit, err]() -> AudioUnitSharedPtr + { + if (err != noErr) + return nullptr; + + AudioUnitSharedPtr auPtr { AudioUnitUniquePtr { audioUnit } }; + audioUnitARACache[auComponent] = auPtr; + return auPtr; + }()); + }); +} + //============================================================================== -class AudioUnitPluginWindowCarbon; class AudioUnitPluginWindowCocoa; //============================================================================== @@ -979,6 +1177,23 @@ public: desc.numInputChannels = getTotalNumInputChannels(); desc.numOutputChannels = getTotalNumOutputChannels(); desc.isInstrument = (componentDesc.componentType == kAudioUnitType_MusicDevice); + + #if JUCE_PLUGINHOST_ARA + desc.hasARAExtension = [&] + { + UInt32 propertySize = sizeof (ARA::ARAAudioUnitFactory); + Boolean isWriteable = FALSE; + + OSStatus status = AudioUnitGetPropertyInfo (audioUnit, + ARA::kAudioUnitProperty_ARAFactory, + kAudioUnitScope_Global, + 0, + &propertySize, + &isWriteable); + + return (status == noErr) && (propertySize == sizeof (ARA::ARAAudioUnitFactory)) && ! isWriteable; + }(); + #endif } void getExtensions (ExtensionsVisitor& visitor) const override @@ -993,6 +1208,33 @@ public: }; visitor.visitAudioUnitClient (Extensions { this }); + + #ifdef JUCE_PLUGINHOST_ARA + struct ARAExtensions : public ExtensionsVisitor::ARAClient + { + explicit ARAExtensions (const AudioUnitPluginInstance* instanceIn) : instance (instanceIn) {} + + void createARAFactoryAsync (std::function cb) const override + { + getOrCreateARAAudioUnit ({ instance->auComponent, instance->isAUv3 }, + [origCb = std::move (cb)] (auto dylibKeepAliveAudioUnit) + { + origCb ([&]() -> ARAFactoryWrapper + { + if (dylibKeepAliveAudioUnit != nullptr) + return ARAFactoryWrapper { ::juce::getARAFactory (std::move (dylibKeepAliveAudioUnit)) }; + + return ARAFactoryWrapper { nullptr }; + }()); + }); + } + + const AudioUnitPluginInstance* instance = nullptr; + }; + + if (hasARAExtension (audioUnit)) + visitor.visitARAClient (ARAExtensions (this)); + #endif } void* getPlatformSpecificData() override { return audioUnit; } @@ -1124,9 +1366,9 @@ public: { if (prepared) { - AudioUnitUninitialize (audioUnit); resetBuses(); AudioUnitReset (audioUnit, kAudioUnitScope_Global, 0); + AudioUnitUninitialize (audioUnit); outputBufferList.clear(); prepared = false; @@ -1615,7 +1857,6 @@ public: private: //============================================================================== - friend class AudioUnitPluginWindowCarbon; friend class AudioUnitPluginWindowCocoa; friend class AudioUnitPluginFormat; @@ -2594,162 +2835,12 @@ private: } }; -#if JUCE_SUPPORT_CARBON - -//============================================================================== -class AudioUnitPluginWindowCarbon : public AudioProcessorEditor -{ -public: - AudioUnitPluginWindowCarbon (AudioUnitPluginInstance& p) - : AudioProcessorEditor (&p), - plugin (p), - audioComponent (nullptr), - viewComponent (nullptr) - { - innerWrapper.reset (new InnerWrapperComponent (*this)); - addAndMakeVisible (innerWrapper.get()); - - setOpaque (true); - setVisible (true); - setSize (400, 300); - - UInt32 propertySize; - if (AudioUnitGetPropertyInfo (plugin.audioUnit, kAudioUnitProperty_GetUIComponentList, - kAudioUnitScope_Global, 0, &propertySize, NULL) == noErr - && propertySize > 0) - { - HeapBlock views (propertySize / sizeof (AudioComponentDescription)); - - if (AudioUnitGetProperty (plugin.audioUnit, kAudioUnitProperty_GetUIComponentList, - kAudioUnitScope_Global, 0, &views[0], &propertySize) == noErr) - { - audioComponent = AudioComponentFindNext (nullptr, &views[0]); - } - } - } - - ~AudioUnitPluginWindowCarbon() - { - innerWrapper = nullptr; - - if (isValid()) - plugin.editorBeingDeleted (this); - } - - bool isValid() const noexcept { return audioComponent != nullptr; } - - //============================================================================== - void paint (Graphics& g) override - { - g.fillAll (Colours::black); - } - - void resized() override - { - if (innerWrapper != nullptr) - innerWrapper->setSize (getWidth(), getHeight()); - } - - //============================================================================== - bool keyStateChanged (bool) override { return false; } - bool keyPressed (const KeyPress&) override { return false; } - - //============================================================================== - AudioUnit getAudioUnit() const { return plugin.audioUnit; } - - AudioUnitCarbonView getViewComponent() - { - if (viewComponent == nullptr && audioComponent != nullptr) - AudioComponentInstanceNew (audioComponent, &viewComponent); - - return viewComponent; - } - - void closeViewComponent() - { - if (viewComponent != nullptr) - { - JUCE_AU_LOG ("Closing AU GUI: " + plugin.getName()); - - AudioComponentInstanceDispose (viewComponent); - viewComponent = nullptr; - } - } - -private: - //============================================================================== - AudioUnitPluginInstance& plugin; - AudioComponent audioComponent; - AudioUnitCarbonView viewComponent; - - //============================================================================== - class InnerWrapperComponent : public CarbonViewWrapperComponent - { - public: - InnerWrapperComponent (AudioUnitPluginWindowCarbon& w) : owner (w) {} - - ~InnerWrapperComponent() - { - deleteWindow(); - } - - HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) override - { - JUCE_AU_LOG ("Opening AU GUI: " + owner.plugin.getName()); - - AudioUnitCarbonView carbonView = owner.getViewComponent(); - - if (carbonView == 0) - return 0; - - Float32Point pos = { 0, 0 }; - Float32Point size = { 250, 200 }; - HIViewRef pluginView = 0; - - AudioUnitCarbonViewCreate (carbonView, owner.getAudioUnit(), windowRef, rootView, - &pos, &size, (ControlRef*) &pluginView); - - return pluginView; - } - - void removeView (HIViewRef) override - { - owner.closeViewComponent(); - } - - private: - AudioUnitPluginWindowCarbon& owner; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InnerWrapperComponent) - }; - - friend class InnerWrapperComponent; - std::unique_ptr innerWrapper; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioUnitPluginWindowCarbon) -}; - -#endif - //============================================================================== AudioProcessorEditor* AudioUnitPluginInstance::createEditor() { std::unique_ptr w (new AudioUnitPluginWindowCocoa (*this, false)); if (! static_cast (w.get())->isValid()) - w.reset(); - - #if JUCE_SUPPORT_CARBON - if (w == nullptr) - { - w.reset (new AudioUnitPluginWindowCarbon (*this)); - - if (! static_cast (w.get())->isValid()) - w.reset(); - } - #endif - - if (w == nullptr) w.reset (new AudioUnitPluginWindowCocoa (*this, true)); // use AUGenericView as a fallback return w.release(); @@ -2795,95 +2886,54 @@ void AudioUnitPluginFormat::createPluginInstance (const PluginDescription& desc, double rate, int blockSize, PluginCreationCallback callback) { - using namespace AudioUnitFormatHelpers; + auto auComponentResult = getAudioComponent (*this, desc); - if (fileMightContainThisPluginType (desc.fileOrIdentifier)) + if (! auComponentResult.isValid()) { - String pluginName, version, manufacturer; - AudioComponentDescription componentDesc; - AudioComponent auComponent; - String errMessage = NEEDS_TRANS ("Cannot find AudioUnit from description"); - - if ((! getComponentDescFromIdentifier (desc.fileOrIdentifier, componentDesc, pluginName, version, manufacturer)) - && (! getComponentDescFromFile (desc.fileOrIdentifier, componentDesc, pluginName, version, manufacturer))) - { - callback (nullptr, errMessage); - return; - } - - if ((auComponent = AudioComponentFindNext (nullptr, &componentDesc)) == nullptr) - { - callback (nullptr, errMessage); - return; - } - - if (AudioComponentGetDescription (auComponent, &componentDesc) != noErr) - { - callback (nullptr, errMessage); - return; - } - - struct AUAsyncInitializationCallback - { - typedef void (^AUCompletionCallbackBlock)(AudioComponentInstance, OSStatus); - - AUAsyncInitializationCallback (double inSampleRate, int inFramesPerBuffer, - PluginCreationCallback inOriginalCallback) - : sampleRate (inSampleRate), framesPerBuffer (inFramesPerBuffer), - originalCallback (std::move (inOriginalCallback)) - { - block = CreateObjCBlock (this, &AUAsyncInitializationCallback::completion); - } - - AUCompletionCallbackBlock getBlock() noexcept { return block; } - - void completion (AudioComponentInstance audioUnit, OSStatus err) - { - if (err == noErr) - { - std::unique_ptr instance (new AudioUnitPluginInstance (audioUnit)); + callback (nullptr, std::move (auComponentResult.errorMessage)); + return; + } - if (instance->initialise (sampleRate, framesPerBuffer)) - originalCallback (std::move (instance), {}); - else - originalCallback (nullptr, NEEDS_TRANS ("Unable to initialise the AudioUnit plug-in")); - } - else - { - auto errMsg = TRANS ("An OS error occurred during initialisation of the plug-in (XXX)"); - originalCallback (nullptr, errMsg.replace ("XXX", String (err))); - } + createAudioUnit (auComponentResult.component, + [rate, blockSize, origCallback = std::move (callback)] (AudioUnit audioUnit, OSStatus err) + { + if (err == noErr) + { + auto instance = std::make_unique (audioUnit); - delete this; - } + if (instance->initialise (rate, blockSize)) + origCallback (std::move (instance), {}); + else + origCallback (nullptr, NEEDS_TRANS ("Unable to initialise the AudioUnit plug-in")); + } + else + { + auto errMsg = TRANS ("An OS error occurred during initialisation of the plug-in (XXX)"); + origCallback (nullptr, errMsg.replace ("XXX", String (err))); + } + }); +} - double sampleRate; - int framesPerBuffer; - PluginCreationCallback originalCallback; - ObjCBlock block; - }; +void AudioUnitPluginFormat::createARAFactoryAsync (const PluginDescription& desc, ARAFactoryCreationCallback callback) +{ + auto auComponentResult = getAudioComponent (*this, desc); - auto callbackBlock = new AUAsyncInitializationCallback (rate, blockSize, std::move (callback)); + if (! auComponentResult.isValid()) + { + callback ({ {}, "Failed to create AudioComponent for " + desc.descriptiveName }); + return; + } - if (AudioUnitFormatHelpers::isPluginAUv3 (componentDesc)) - { - if (@available (macOS 10.11, *)) + getOrCreateARAAudioUnit (auComponentResult.component, [cb = std::move (callback)] (auto dylibKeepAliveAudioUnit) + { + cb ([&]() -> ARAFactoryResult { - AudioComponentInstantiate (auComponent, kAudioComponentInstantiation_LoadOutOfProcess, - callbackBlock->getBlock()); + if (dylibKeepAliveAudioUnit != nullptr) + return { ARAFactoryWrapper { ::juce::getARAFactory (std::move (dylibKeepAliveAudioUnit)) }, "" }; - return; - } - } - - AudioComponentInstance audioUnit; - auto err = AudioComponentInstanceNew(auComponent, &audioUnit); - callbackBlock->completion (err != noErr ? nullptr : audioUnit, err); - } - else - { - callback (nullptr, NEEDS_TRANS ("Plug-in description is not an AudioUnit plug-in")); - } + return { {}, "Failed to create ARAFactory from the provided AudioUnit" }; + }()); + }); } bool AudioUnitPluginFormat::requiresUnblockedMessageThreadDuringCreation (const PluginDescription& desc) const diff --git a/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp b/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp index ba64e8b2c..2ad49260d 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h b/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h index 3ac3fb68a..102f94225 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h +++ b/source/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_LV2Common.h b/source/modules/juce_audio_processors/format_types/juce_LV2Common.h index dfedac93e..325f0aad0 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LV2Common.h +++ b/source/modules/juce_audio_processors/format_types/juce_LV2Common.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -19,6 +26,7 @@ #pragma once #include "juce_lv2_config.h" +#include "juce_core/containers/juce_Optional.h" #ifdef Bool #undef Bool // previously defined in X11/Xlib.h @@ -127,61 +135,61 @@ struct ObjectTraits { static constexpr auto construct = lv2_atom_forge_object; using SequenceFrame = ScopedFrame; using ObjectFrame = ScopedFrame; +template +bool withValue (const Optional& opt, Callback&& callback) +{ + if (! opt.hasValue()) + return false; + + callback (*opt); + return true; +} + struct NumericAtomParser { explicit NumericAtomParser (LV2_URID_Map mapFeatureIn) : mapFeature (mapFeatureIn) {} - template - struct ParseResult - { - ParseResult (Type type) : value (type), successful (true) {} - ParseResult() : value(), successful (false) {} - - template - ParseResult andThen (Fn&& fn) const - { - if (successful) - fn (value); + template struct Tag { LV2_URID urid; }; - return *this; - } + template + static Optional tryParse (const LV2_Atom&, const void*) + { + return {}; + } - operator bool() const noexcept { return successful; } + template + static Optional tryParse (const LV2_Atom& atom, const void* data, Tag head, Tag... tail) + { + if (atom.type == head.urid && atom.size == sizeof (Head)) + return static_cast (*reinterpret_cast (data)); - Type value; - bool successful; - }; + return tryParse (atom, data, tail...); + } template - ParseResult parseNumericAtom (const LV2_Atom* atom, const void* data) const + Optional parseNumericAtom (const LV2_Atom* atom, const void* data) const { if (atom == nullptr) return {}; - if (atom->type == mLV2_ATOM__Int && atom->size == sizeof (int32_t)) - return { static_cast (*static_cast (data)) }; - - if (atom->type == mLV2_ATOM__Long && atom->size == sizeof (int64_t)) - return { static_cast (*static_cast (data)) }; - - if (atom->type == mLV2_ATOM__Float && atom->size == sizeof (float)) - return { static_cast (*static_cast (data)) }; - - if (atom->type == mLV2_ATOM__Double && atom->size == sizeof (double)) - return { static_cast (*static_cast (data)) }; - - return {}; + return tryParse (*atom, + data, + Tag { mLV2_ATOM__Bool }, + Tag { mLV2_ATOM__Int }, + Tag { mLV2_ATOM__Long }, + Tag { mLV2_ATOM__Float }, + Tag { mLV2_ATOM__Double }); } template - ParseResult parseNumericAtom (const LV2_Atom* atom) const + Optional parseNumericAtom (const LV2_Atom* atom) const { return parseNumericAtom (atom, atom + 1); } template - ParseResult parseNumericOption (const LV2_Options_Option* option) const + Optional parseNumericOption (const LV2_Options_Option* option) const { if (option != nullptr) { @@ -240,8 +248,10 @@ struct PatchSetHelper lv2_atom_object_query (object, query); - if (isPlugin (subject)) - setPluginProperty (property, value, std::forward (callback)); + if (! isPlugin (subject)) + return; + + setPluginProperty (property, value, std::forward (callback)); } template @@ -270,14 +280,14 @@ struct PatchSetHelper const auto parseResult = parser.parseNumericAtom (value); - if (! parseResult.successful) + if (! parseResult.hasValue()) { // Didn't understand the type of this atom. jassertfalse; return; } - callback.setParameter (reinterpret_cast (property)->body, parseResult.value); + callback.setParameter (reinterpret_cast (property)->body, *parseResult); } NumericAtomParser parser; diff --git a/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp b/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp index 5f012c0a6..6f2dfd4ae 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -30,12 +37,11 @@ namespace juce namespace lv2_host { -template -auto with (Struct&& s, Member&& member, Value&& value) noexcept +template +auto with (Struct s, Value Struct::* member, Value value) noexcept { - auto copy = std::forward (s); - copy.*member = std::forward (value); - return copy; + s.*member = std::move (value); + return s; } /* Converts a void* to an LV2_Atom* if the buffer looks like it holds a well-formed Atom, or @@ -1682,7 +1688,7 @@ private: template static SingleSizeAlignedStorage grow (SingleSizeAlignedStorage storage, size_t size) { - if (storage.size() <= size) + if (size <= storage.size()) return storage; SingleSizeAlignedStorage newStorage { jmax (size, (storage.size() * 3) / 2) }; @@ -2122,6 +2128,8 @@ private: JUCE_LEAK_DETECTOR (PortMap) }; +struct FreeString { void operator() (void* ptr) const noexcept { lilv_free (ptr); } }; + class PluginState { public: @@ -2140,7 +2148,6 @@ public: std::string toString (LilvWorld* world, LV2_URID_Map* map, LV2_URID_Unmap* unmap, const char* uri) const { - struct FreeString { void operator() (void* ptr) const noexcept { lilv_free (ptr); } }; std::unique_ptr result { lilv_state_to_string (world, map, unmap, @@ -2256,17 +2263,16 @@ struct UiDescriptorLibrary class UiDescriptorArgs { public: - const char* libraryPath = nullptr; - const char* uiUri = nullptr; + String libraryPath; + String uiUri; - auto withLibraryPath (const char* v) const noexcept { return with (&UiDescriptorArgs::libraryPath, v); } - auto withUiUri (const char* v) const noexcept { return with (&UiDescriptorArgs::uiUri, v); } + auto withLibraryPath (String v) const noexcept { return with (&UiDescriptorArgs::libraryPath, v); } + auto withUiUri (String v) const noexcept { return with (&UiDescriptorArgs::uiUri, v); } private: - template - UiDescriptorArgs with (Member&& member, const char* value) const noexcept + UiDescriptorArgs with (String UiDescriptorArgs::* member, String value) const noexcept { - return juce::lv2_host::with (*this, std::forward (member), value); + return juce::lv2_host::with (*this, member, std::move (value)); } }; @@ -2280,7 +2286,7 @@ public: explicit UiDescriptor (const UiDescriptorArgs& args) : library (args.libraryPath), - descriptor (extractUiDescriptor (library, args.uiUri)) + descriptor (extractUiDescriptor (library, args.uiUri.toRawUTF8())) {} void portEvent (LV2UI_Handle ui, @@ -2342,8 +2348,7 @@ private: JUCE_LEAK_DETECTOR (UiDescriptor) }; -enum class UpdateUi { no, yes }; -enum class UpdateProcessor { no, yes }; +enum class Update { no, yes }; /* A bit like the FlaggedFloatCache used by the VST3 host/client. @@ -2366,12 +2371,12 @@ public: size_t size() const noexcept { return values.size(); } - void set (size_t index, float value, UpdateUi updateUi, UpdateProcessor updateProcessor) + void set (size_t index, float value, Update update) { jassert (index < size()); values[index].store (value, std::memory_order_relaxed); - needsUiUpdate .set (index, updateUi == UpdateUi::yes ? 1 : 0); - needsProcessorUpdate.set (index, updateProcessor == UpdateProcessor::yes ? 1 : 0); + needsUiUpdate .set (index, update == Update::yes ? 1 : 0); + needsProcessorUpdate.set (index, update == Update::yes ? 1 : 0); } float get (size_t index) const noexcept @@ -2431,18 +2436,18 @@ public: void setValue (float f) override { - cache.set ((size_t) getParameterIndex(), range.convertFrom0to1 (f), UpdateUi::yes, UpdateProcessor::yes); + cache.set ((size_t) getParameterIndex(), range.convertFrom0to1 (f), Update::yes); } - void setDenormalisedValueFromUi (float denormalised) + void setDenormalisedValue (float denormalised) { - cache.set ((size_t) getParameterIndex(), denormalised, UpdateUi::no, UpdateProcessor::yes); + cache.set ((size_t) getParameterIndex(), denormalised, Update::yes); sendValueChangedMessageToListeners (range.convertTo0to1 (denormalised)); } void setDenormalisedValueWithoutTriggeringUpdate (float denormalised) { - cache.set ((size_t) getParameterIndex(), denormalised, UpdateUi::no, UpdateProcessor::no); + cache.set ((size_t) getParameterIndex(), denormalised, Update::no); sendValueChangedMessageToListeners (range.convertTo0to1 (denormalised)); } @@ -2564,20 +2569,25 @@ private: class UiInstanceArgs { public: - const char* bundlePath = nullptr; - const char* pluginUri = nullptr; + File bundlePath; + URL pluginUri; - auto withBundlePath (const char* v) const noexcept { return with (&UiInstanceArgs::bundlePath, v); } - auto withPluginUri (const char* v) const noexcept { return with (&UiInstanceArgs::pluginUri, v); } + auto withBundlePath (File v) const noexcept { return with (&UiInstanceArgs::bundlePath, std::move (v)); } + auto withPluginUri (URL v) const noexcept { return with (&UiInstanceArgs::pluginUri, std::move (v)); } private: template - UiInstanceArgs with (Member&& member, const char* value) const noexcept + UiInstanceArgs with (Member UiInstanceArgs::* member, Member value) const noexcept { - return juce::lv2_host::with (*this, std::forward (member), value); + return juce::lv2_host::with (*this, member, std::move (value)); } }; +static File bundlePathFromUri (const char* uri) +{ + return File { std::unique_ptr { lilv_file_uri_parse (uri, nullptr) }.get() }; +} + /* Creates and holds a UI instance for a plugin with a specific URI, using the provided descriptor. */ @@ -2665,14 +2675,14 @@ private: using Instance = std::unique_ptr; using Idle = int (*) (LV2UI_Handle); - Instance makeInstance (const char* pluginUri, const char* bundlePath, const LV2_Feature* const* features) + Instance makeInstance (const URL& pluginUri, const File& bundlePath, const LV2_Feature* const* features) { if (descriptor->get() == nullptr) return { nullptr, [] (LV2UI_Handle) {} }; return Instance { descriptor->get()->instantiate (descriptor->get(), - pluginUri, - bundlePath, + pluginUri.toString (false).toRawUTF8(), + File::addTrailingSeparator (bundlePath.getFullPathName()).toRawUTF8(), writeFunction, this, &widget, @@ -2752,10 +2762,9 @@ public: auto withSampleRate (float v) const { return with (&UiFeaturesDataOptions::sampleRate, v); } private: - template - UiFeaturesDataOptions with (Member&& member, Value&& value) const + UiFeaturesDataOptions with (float UiFeaturesDataOptions::* member, float value) const { - return juce::lv2_host::with (*this, std::forward (member), std::forward (value)); + return juce::lv2_host::with (*this, member, value); } }; @@ -3034,8 +3043,8 @@ public: *this, touchListener, &uiDescriptor, - UiInstanceArgs{}.withBundlePath (uiBundleUri.toRawUTF8()) - .withPluginUri (instance.instance.getUri()), + UiInstanceArgs{}.withBundlePath (bundlePathFromUri (uiBundleUri.toRawUTF8())) + .withPluginUri (URL (instance.instance.getUri())), viewComponent.getWidget(), instance, opts)), @@ -3168,14 +3177,6 @@ private: float getEffectiveScale() const { return nativeScaleFactor * userScaleFactor; } - float getTopLevelDesktopScale() const - { - if (auto* comp = getTopLevelComponent()) - return comp->getDesktopScaleFactor(); - - return 1.0f; - } - // If possible, try to keep platform-specific handing restricted to the implementation of // ViewComponent. Keep the interface of ViewComponent consistent on all platforms. #if JUCE_LINUX || JUCE_BSD @@ -4107,11 +4108,14 @@ static SupportedParameter getInfoForPatchParameter (World& worldIn, jassertfalse; // A ScalePoint must have both a rdfs:label and a rdf:value } + const auto minimum = getValue (LV2_CORE__minimum, 0.0f); + const auto maximum = getValue (LV2_CORE__maximum, 1.0f); + return { { std::move (parsedScalePoints), "des:" + String::fromUTF8 (property.getTyped()), - getValue (LV2_CORE__default, 0.0f), - getValue (LV2_CORE__minimum, 0.0f), - getValue (LV2_CORE__maximum, 1.0f), + getValue (LV2_CORE__default, (minimum + maximum) * 0.5f), + minimum, + maximum, typeUrid == urids.mLV2_ATOM__Bool || hasPortProperty (LV2_CORE__toggled), typeUrid == urids.mLV2_ATOM__Int || typeUrid == urids.mLV2_ATOM__Long, hasPortProperty (LV2_CORE__enumeration) }, @@ -4402,7 +4406,8 @@ public: numSamples, sampleRate); - setStateInformation (mb.getData(), (int) mb.getSize()); + // prepareToPlay is *guaranteed* not to be called concurrently with processBlock + setStateInformationImpl (mb.getData(), (int) mb.getSize(), ConcurrentWithAudioCallback::no); jassert (numSamples == instance->features.getMaxBlockSize()); @@ -4487,7 +4492,8 @@ public: return; lastAppliedPreset = newProgram; - applyStateWithAppropriateLocking (loadStateWithUri (presetUris[(size_t) newProgram])); + applyStateWithAppropriateLocking (loadStateWithUri (presetUris[(size_t) newProgram]), + ConcurrentWithAudioCallback::yes); } const String getProgramName (int program) override @@ -4524,16 +4530,7 @@ public: void setStateInformation (const void* data, int size) override { - JUCE_ASSERT_MESSAGE_THREAD; - - if (data == nullptr || size == 0) - return; - - auto begin = static_cast (data); - std::vector copy (begin, begin + size); - copy.push_back (0); - auto mapFeature = instance->symap->getMapFeature(); - applyStateWithAppropriateLocking (PluginState { lilv_state_new_from_string (world->get(), &mapFeature, copy.data()) }); + setStateInformationImpl (data, size, ConcurrentWithAudioCallback::yes); } void setNonRealtime (bool newValue) noexcept override @@ -4573,6 +4570,8 @@ public: AudioProcessorParameter* getBypassParameter() const override { return bypassParam; } private: + enum class ConcurrentWithAudioCallback { no, yes }; + LV2AudioPluginInstance (std::shared_ptr worldIn, const Plugin& pluginIn, std::unique_ptr&& in, @@ -4593,7 +4592,22 @@ private: std::move (uiDescriptorIn), [this] { postChangedParametersToUi(); }) { - applyStateWithAppropriateLocking (std::move (stateToApply)); + applyStateWithAppropriateLocking (std::move (stateToApply), ConcurrentWithAudioCallback::no); + } + + void setStateInformationImpl (const void* data, int size, ConcurrentWithAudioCallback concurrent) + { + JUCE_ASSERT_MESSAGE_THREAD; + + if (data == nullptr || size == 0) + return; + + auto begin = static_cast (data); + std::vector copy (begin, begin + size); + copy.push_back (0); + auto mapFeature = instance->symap->getMapFeature(); + applyStateWithAppropriateLocking (PluginState { lilv_state_new_from_string (world->get(), &mapFeature, copy.data()) }, + concurrent); } // This does *not* destroy the editor component. @@ -4691,13 +4705,13 @@ private: return instance.get(); } - void applyStateWithAppropriateLocking (PluginState&& state) + void applyStateWithAppropriateLocking (PluginState&& state, ConcurrentWithAudioCallback concurrent) { PortMap portStateManager (instance->ports); // If a plugin supports threadSafeRestore, its restore method is thread-safe // and may be called concurrently with audio class functions. - if (hasThreadSafeRestore) + if (hasThreadSafeRestore || concurrent == ConcurrentWithAudioCallback::no) { state.restore (*instance, portStateManager); } @@ -4841,7 +4855,7 @@ private: if (auto* param = parameterValues.getParamByPortIndex (header.portIndex)) { - param->setDenormalisedValueFromUi (value); + param->setDenormalisedValue (value); } else if (auto* port = controlPortStructure.getControlPortByIndex (header.portIndex)) { diff --git a/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h b/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h index c4700ab4e..0518de268 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h +++ b/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp b/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp index a3e6f6ae6..3264b381d 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_LV2Resources.h b/source/modules/juce_audio_processors/format_types/juce_LV2Resources.h index 7a81b1572..1404f6aa5 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LV2Resources.h +++ b/source/modules/juce_audio_processors/format_types/juce_LV2Resources.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp b/source/modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp index 9004d083e..a4c269af1 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp b/source/modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp index 6df1b84fe..90efcc582 100644 --- a/source/modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_VST3Common.h b/source/modules/juce_audio_processors/format_types/juce_VST3Common.h index 482de6c71..2a89b25b3 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VST3Common.h +++ b/source/modules/juce_audio_processors/format_types/juce_VST3Common.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -1040,24 +1047,18 @@ public: } } - static void hostToPluginEventList (Steinberg::Vst::IEventList& result, MidiBuffer& midiBuffer, - Steinberg::Vst::IParameterChanges* parameterChanges, - const StoredMidiMapping& midiMapping) + template + static void hostToPluginEventList (Steinberg::Vst::IEventList& result, + MidiBuffer& midiBuffer, + StoredMidiMapping& mapping, + Callback&& callback) { - toEventList (result, - midiBuffer, - parameterChanges, - &midiMapping, - EventConversionKind::hostToPlugin); + toEventList (result, midiBuffer, &mapping, callback); } static void pluginToHostEventList (Steinberg::Vst::IEventList& result, MidiBuffer& midiBuffer) { - toEventList (result, - midiBuffer, - nullptr, - nullptr, - EventConversionKind::pluginToHost); + toEventList (result, midiBuffer, nullptr, [] (auto&&...) {}); } private: @@ -1073,48 +1074,70 @@ private: pluginToHost }; - static void toEventList (Steinberg::Vst::IEventList& result, MidiBuffer& midiBuffer, - Steinberg::Vst::IParameterChanges* parameterChanges, - const StoredMidiMapping* midiMapping, - EventConversionKind kind) + template + static bool sendMappedParameter (const MidiMessage& msg, + StoredMidiMapping* midiMapping, + Callback&& callback) { - enum { maxNumEvents = 2048 }; // Steinberg's Host Checker states that no more than 2048 events are allowed at once - int numEvents = 0; + if (midiMapping == nullptr) + return false; - for (const auto metadata : midiBuffer) - { - if (++numEvents > maxNumEvents) - break; + const auto controlEvent = toVst3ControlEvent (msg); - auto msg = metadata.getMessage(); + if (! controlEvent.hasValue()) + return false; - if (midiMapping != nullptr && parameterChanges != nullptr) - { - Vst3MidiControlEvent controlEvent; + const auto controlParamID = midiMapping->getMapping (createSafeChannel (msg.getChannel()), + controlEvent->controllerNumber); - if (toVst3ControlEvent (msg, controlEvent)) - { - const auto controlParamID = midiMapping->getMapping (createSafeChannel (msg.getChannel()), - controlEvent.controllerNumber); + if (controlParamID != Steinberg::Vst::kNoParamId) + callback (controlParamID, controlEvent->paramValue); - if (controlParamID != Steinberg::Vst::kNoParamId) - { - Steinberg::int32 ignore; + return true; + } - if (auto* queue = parameterChanges->addParameterData (controlParamID, ignore)) - queue->addPoint (metadata.samplePosition, controlEvent.paramValue, ignore); - } + template + static void processMidiMessage (Steinberg::Vst::IEventList& result, + const MidiMessageMetadata metadata, + StoredMidiMapping* midiMapping, + Callback&& callback) + { + const auto msg = metadata.getMessage(); - continue; - } - } + if (sendMappedParameter (msg, midiMapping, std::forward (callback))) + return; - if (auto maybeEvent = createVstEvent (msg, metadata.data, kind)) - { - maybeEvent->busIndex = 0; - maybeEvent->sampleOffset = metadata.samplePosition; - result.addEvent (*maybeEvent); - } + const auto kind = midiMapping != nullptr ? EventConversionKind::hostToPlugin + : EventConversionKind::pluginToHost; + + auto maybeEvent = createVstEvent (msg, metadata.data, kind); + + if (! maybeEvent.hasValue()) + return; + + maybeEvent->busIndex = 0; + maybeEvent->sampleOffset = metadata.samplePosition; + result.addEvent (*maybeEvent); + } + + /* If mapping is non-null, the conversion is assumed to be host-to-plugin, or otherwise + plugin-to-host. + */ + template + static void toEventList (Steinberg::Vst::IEventList& result, + MidiBuffer& midiBuffer, + StoredMidiMapping* midiMapping, + Callback&& callback) + { + enum { maxNumEvents = 2048 }; // Steinberg's Host Checker states that no more than 2048 events are allowed at once + int numEvents = 0; + + for (const auto metadata : midiBuffer) + { + if (++numEvents > maxNumEvents) + break; + + processMidiMessage (result, metadata, midiMapping, std::forward (callback)); } } @@ -1361,28 +1384,18 @@ private: Steinberg::Vst::ParamValue paramValue; }; - static bool toVst3ControlEvent (const MidiMessage& msg, Vst3MidiControlEvent& result) + static Optional toVst3ControlEvent (const MidiMessage& msg) { if (msg.isController()) - { - result = { (Steinberg::Vst::CtrlNumber) msg.getControllerNumber(), msg.getControllerValue() / 127.0}; - return true; - } + return Vst3MidiControlEvent { (Steinberg::Vst::CtrlNumber) msg.getControllerNumber(), msg.getControllerValue() / 127.0 }; if (msg.isPitchWheel()) - { - result = { Steinberg::Vst::kPitchBend, msg.getPitchWheelValue() / 16383.0}; - return true; - } + return Vst3MidiControlEvent { Steinberg::Vst::kPitchBend, msg.getPitchWheelValue() / 16383.0}; if (msg.isChannelPressure()) - { - result = { Steinberg::Vst::kAfterTouch, msg.getChannelPressureValue() / 127.0}; - return true; - } + return Vst3MidiControlEvent { Steinberg::Vst::kAfterTouch, msg.getChannelPressureValue() / 127.0}; - result.controllerNumber = -1; - return false; + return {}; } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiEventList) diff --git a/source/modules/juce_audio_processors/format_types/juce_VST3Headers.h b/source/modules/juce_audio_processors/format_types/juce_VST3Headers.h index 148e7bfd1..297776b3c 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VST3Headers.h +++ b/source/modules/juce_audio_processors/format_types/juce_VST3Headers.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -100,6 +107,8 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-copy-dtor", #include #include #include + + #include "pslextensions/ipslviewembedding.h" #else // needed for VST_VERSION #include @@ -150,6 +159,8 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-copy-dtor", #include #endif + #include "pslextensions/ipslviewembedding.h" + //============================================================================== namespace Steinberg { @@ -172,6 +183,12 @@ namespace Steinberg DEF_CLASS_IID (Linux::IEventHandler) #endif } + +namespace Presonus +{ + DEF_CLASS_IID (IPlugInViewEmbedding) +} + #endif // JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY JUCE_END_IGNORE_WARNINGS_MSVC diff --git a/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp b/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp index 16f10392f..f67548279 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -20,6 +27,18 @@ #include "juce_VST3Headers.h" #include "juce_VST3Common.h" +#include "juce_ARACommon.h" + +#if JUCE_PLUGINHOST_ARA && (JUCE_MAC || JUCE_WINDOWS) +#include + +namespace ARA +{ +DEF_CLASS_IID (IMainFactory) +DEF_CLASS_IID (IPlugInEntryPoint) +DEF_CLASS_IID (IPlugInEntryPoint2) +} +#endif namespace juce { @@ -804,6 +823,20 @@ struct DescriptionFactory auto numClasses = factory->countClasses(); + // Every ARA::IMainFactory must have a matching Steinberg::IComponent. + // The match is determined by the two classes having the same name. + std::unordered_set araMainFactoryClassNames; + + #if JUCE_PLUGINHOST_ARA && (JUCE_MAC || JUCE_WINDOWS) + for (Steinberg::int32 i = 0; i < numClasses; ++i) + { + PClassInfo info; + factory->getClassInfo (i, &info); + if (std::strcmp (info.category, kARAMainFactoryClass) == 0) + araMainFactoryClassNames.insert (info.name); + } + #endif + for (Steinberg::int32 i = 0; i < numClasses; ++i) { PClassInfo info; @@ -867,6 +900,9 @@ struct DescriptionFactory } } + if (araMainFactoryClassNames.find (name) != araMainFactoryClassNames.end()) + desc.hasARAExtension = true; + if (desc.uniqueId != 0) result = performOnDescription (desc); @@ -1330,6 +1366,72 @@ private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VST3ModuleHandle) }; +template +static int compareWithString (Type (&charArray)[N], const String& str) +{ + return std::strncmp (str.toRawUTF8(), + charArray, + std::min (str.getNumBytesAsUTF8(), (size_t) numElementsInArray (charArray))); +} + +template +static void forEachARAFactory (IPluginFactory* pluginFactory, Callback&& cb) +{ + #if JUCE_PLUGINHOST_ARA && (JUCE_MAC || JUCE_WINDOWS) + const auto numClasses = pluginFactory->countClasses(); + for (Steinberg::int32 i = 0; i < numClasses; ++i) + { + PClassInfo info; + pluginFactory->getClassInfo (i, &info); + + if (std::strcmp (info.category, kARAMainFactoryClass) == 0) + { + const bool keepGoing = cb (info); + if (! keepGoing) + break; + } + } + #else + ignoreUnused (pluginFactory, cb); + #endif +} + +static std::shared_ptr getARAFactory (Steinberg::IPluginFactory* pluginFactory, const String& pluginName) +{ + std::shared_ptr factory; + + #if JUCE_PLUGINHOST_ARA && (JUCE_MAC || JUCE_WINDOWS) + forEachARAFactory (pluginFactory, + [&pluginFactory, &pluginName, &factory] (const auto& pcClassInfo) + { + if (compareWithString (pcClassInfo.name, pluginName) == 0) + { + ARA::IMainFactory* source; + if (pluginFactory->createInstance (pcClassInfo.cid, ARA::IMainFactory::iid, (void**) &source) + == Steinberg::kResultOk) + { + factory = getOrCreateARAFactory (source->getFactory(), + [source] (const ARA::ARAFactory*) { source->release(); }); + return false; + } + jassert (source == nullptr); + } + + return true; + }); + #else + ignoreUnused (pluginFactory, pluginName); + #endif + + return factory; +} + +static std::shared_ptr getARAFactory (VST3ModuleHandle& module) +{ + auto* pluginFactory = module.getPluginFactory(); + return getARAFactory (pluginFactory, module.getName()); +} + //============================================================================== struct VST3PluginWindow : public AudioProcessorEditor, private ComponentMovementWatcher, @@ -1677,6 +1779,27 @@ private: JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4996) // warning about overriding deprecated methods +//============================================================================== +static bool hasARAExtension (IPluginFactory* pluginFactory, const String& pluginClassName) +{ + bool result = false; + + forEachARAFactory (pluginFactory, + [&pluginClassName, &result] (const auto& pcClassInfo) + { + if (compareWithString (pcClassInfo.name, pluginClassName) == 0) + { + result = true; + + return false; + } + + return true; + }); + + return result; +} + //============================================================================== struct VST3ComponentHolder { @@ -1802,6 +1925,8 @@ struct VST3ComponentHolder totalNumInputChannels, totalNumOutputChannels); + description.hasARAExtension = hasARAExtension (factory, description.name); + return; } @@ -2082,18 +2207,6 @@ public: void setValue (float newValue) override { pluginInstance.cachedParamValues.set (vstParamIndex, newValue); - pluginInstance.parameterDispatcher.push (vstParamIndex, newValue); - } - - /* If the editor set the value, there's no need to notify it that the parameter - value changed. Instead, we set the cachedValue (which will be read by the - processor during the next processBlock) and notify listeners that the parameter - has changed. - */ - void setValueFromEditor (float newValue) - { - pluginInstance.cachedParamValues.set (vstParamIndex, newValue); - sendValueChangedMessageToListeners (newValue); } /* If we're syncing the editor to the processor, the processor won't need to @@ -2292,7 +2405,8 @@ public: void getExtensions (ExtensionsVisitor& visitor) const override { - struct Extensions : public ExtensionsVisitor::VST3Client + struct Extensions : public ExtensionsVisitor::VST3Client, + public ExtensionsVisitor::ARAClient { explicit Extensions (const VST3PluginInstance* instanceIn) : instance (instanceIn) {} @@ -2305,10 +2419,21 @@ public: return instance->setStateFromPresetFile (rawData); } + void createARAFactoryAsync (std::function cb) const noexcept override + { + cb (ARAFactoryWrapper { ::juce::getARAFactory (*(instance->holder->module)) }); + } + const VST3PluginInstance* instance = nullptr; }; - visitor.visitVST3Client (Extensions { this }); + Extensions extensions { this }; + visitor.visitVST3Client (extensions); + + if (::juce::getARAFactory (*(holder->module))) + { + visitor.visitARAClient (extensions); + } } void* getPlatformSpecificData() override { return holder->component; } @@ -2559,6 +2684,11 @@ public: inputParameterChanges->set (cachedParamValues.getParamID (index), value); }); + inputParameterChanges->forEach ([&] (Steinberg::int32 index, float value) + { + parameterDispatcher.push (index, value); + }); + processor->process (data); outputParameterChanges->forEach ([&] (Steinberg::int32 index, float value) @@ -3024,7 +3154,9 @@ private: { Steinberg::MemoryStream stream; - if (object->getState (&stream) == kResultTrue) + const auto result = object->getState (&stream); + + if (result == kResultTrue) { MemoryBlock info (stream.getData(), (size_t) stream.getSize()); head.createNewChildElement (identifier)->addTextElement (info.toBase64Encoding()); @@ -3112,7 +3244,7 @@ private: if ((paramInfo.flags & Vst::ParameterInfo::kIsBypass) != 0) bypassParam = param; - std::function findOrCreateGroup; + std::function findOrCreateGroup; findOrCreateGroup = [&groupMap, &infoMap, &findOrCreateGroup] (Vst::UnitID groupID) { auto existingGroup = groupMap.find (groupID); @@ -3322,8 +3454,12 @@ private: { MidiEventList::hostToPluginEventList (*midiInputs, midiBuffer, - destination.inputParameterChanges, - storedMidiMapping); + storedMidiMapping, + [this] (const auto controlID, const auto paramValue) + { + if (auto* param = this->getParameterForID (controlID)) + param->setValueNotifyingHost ((float) paramValue); + }); } destination.inputEvents = midiInputs; @@ -3468,7 +3604,7 @@ tresult VST3HostContext::performEdit (Vst::ParamID paramID, Vst::ParamValue valu if (auto* param = plugin->getParameterForID (paramID)) { - param->setValueFromEditor ((float) valueNormalised); + param->setValueNotifyingHost ((float) valueNormalised); // did the plug-in already update the parameter internally if (plugin->editController->getParamNormalized (paramID) != (float) valueNormalised) @@ -3670,6 +3806,22 @@ void VST3PluginFormat::findAllTypesForFile (OwnedArray& resul } } +void VST3PluginFormat::createARAFactoryAsync (const PluginDescription& description, ARAFactoryCreationCallback callback) +{ + if (! description.hasARAExtension) + { + jassertfalse; + callback ({ {}, "The provided plugin does not support ARA features" }); + } + + File file (description.fileOrIdentifier); + VSTComSmartPtr pluginFactory ( + DLLHandleCache::getInstance()->findOrCreateHandle (file.getFullPathName()).getPluginFactory()); + const auto* pluginName = description.name.toRawUTF8(); + + callback ({ ARAFactoryWrapper { ::juce::getARAFactory (pluginFactory, pluginName) }, {} }); +} + void VST3PluginFormat::createPluginInstance (const PluginDescription& description, double, int, PluginCreationCallback callback) { diff --git a/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h b/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h index 0a294ce8d..d192029eb 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h +++ b/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -61,6 +68,7 @@ public: StringArray searchPathsForPlugins (const FileSearchPath&, bool recursive, bool) override; bool doesPluginStillExist (const PluginDescription&) override; FileSearchPath getDefaultLocationsToSearch() override; + void createARAFactoryAsync (const PluginDescription&, ARAFactoryCreationCallback callback) override; private: //============================================================================== diff --git a/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat_test.cpp b/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat_test.cpp index 1da1f9a34..c2274a3ff 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat_test.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_VST3PluginFormat_test.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_VSTCommon.h b/source/modules/juce_audio_processors/format_types/juce_VSTCommon.h index fe7935023..6c1f42dba 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VSTCommon.h +++ b/source/modules/juce_audio_processors/format_types/juce_VSTCommon.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h b/source/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h index ec593f35c..10157693f 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h +++ b/source/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp index 3725b2331..ca59063a2 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +++ b/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -1208,10 +1215,6 @@ struct VSTPluginInstance final : public AudioPluginInstance, wantsMidiMessages = pluginCanDo ("receiveVstMidiEvent") > 0 || isSynthPlugin(); - #if JUCE_MAC && JUCE_SUPPORT_CARBON - usesCocoaNSView = ((unsigned int) pluginCanDo ("hasCockosViewAsConfig") & 0xffff0000ul) == 0xbeef0000ul; - #endif - setLatencySamples (vstEffect->latency); } @@ -1949,7 +1952,6 @@ struct VSTPluginInstance final : public AudioPluginInstance, ModuleHandle::Ptr vstModule; std::unique_ptr extraFunctions; - bool usesCocoaNSView = false; private: //============================================================================== @@ -2719,18 +2721,8 @@ public: #elif JUCE_MAC ignoreUnused (recursiveResize, pluginRefusesToResize, alreadyInside); - #if JUCE_SUPPORT_CARBON - if (! plug.usesCocoaNSView) - { - carbonWrapper.reset (new CarbonWrapperComponent (*this)); - addAndMakeVisible (carbonWrapper.get()); - } - else - #endif - { - cocoaWrapper.reset (new NSViewComponentWithParent (plugin)); - addAndMakeVisible (cocoaWrapper.get()); - } + cocoaWrapper.reset (new NSViewComponentWithParent (plugin)); + addAndMakeVisible (cocoaWrapper.get()); #endif activeVSTWindows.add (this); @@ -2756,9 +2748,6 @@ public: closePluginWindow(); #if JUCE_MAC - #if JUCE_SUPPORT_CARBON - carbonWrapper.reset(); - #endif cocoaWrapper.reset(); #endif @@ -2787,11 +2776,6 @@ public: setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); #if JUCE_MAC - #if JUCE_SUPPORT_CARBON - if (carbonWrapper != nullptr) - carbonWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); - #endif - if (cocoaWrapper != nullptr) cocoaWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); #endif @@ -2807,25 +2791,19 @@ public: void visibilityChanged() override { - if (cocoaWrapper != nullptr) - { - if (isShowing()) - openPluginWindow ((NSView*) cocoaWrapper->getView()); - else - closePluginWindow(); - } + if (isShowing()) + openPluginWindow ((NSView*) cocoaWrapper->getView()); + else + closePluginWindow(); } void childBoundsChanged (Component*) override { - if (cocoaWrapper != nullptr) - { - auto w = cocoaWrapper->getWidth(); - auto h = cocoaWrapper->getHeight(); + auto w = cocoaWrapper->getWidth(); + auto h = cocoaWrapper->getHeight(); - if (w != getWidth() || h != getHeight()) - setSize (w, h); - } + if (w != getWidth() || h != getHeight()) + setSize (w, h); } void parentHierarchyChanged() override { visibilityChanged(); } @@ -3304,86 +3282,6 @@ private: //============================================================================== #if JUCE_MAC - #if JUCE_SUPPORT_CARBON - struct CarbonWrapperComponent : public CarbonViewWrapperComponent - { - CarbonWrapperComponent (VSTPluginWindow& w) : owner (w) - { - keepPluginWindowWhenHidden = w.shouldAvoidDeletingWindow(); - setRepaintsChildHIViewWhenCreated (w.shouldRepaintCarbonWindowWhenCreated()); - } - - ~CarbonWrapperComponent() - { - deleteWindow(); - } - - HIViewRef attachView (WindowRef windowRef, HIViewRef /*rootView*/) override - { - owner.openPluginWindow (windowRef); - return {}; - } - - void removeView (HIViewRef) override - { - if (owner.isOpen) - { - owner.isOpen = false; - owner.dispatch (Vst2::plugInOpcodeCloseEditor, 0, 0, 0, 0); - owner.dispatch (Vst2::plugInOpcodeSleepEditor, 0, 0, 0, 0); - } - } - - bool getEmbeddedViewSize (int& w, int& h) override - { - Vst2::VstEditorBounds* rect = nullptr; - owner.dispatch (Vst2::plugInOpcodeGetEditorBounds, 0, 0, &rect, 0); - w = rect->rightmost - rect->leftmost; - h = rect->lower - rect->upper; - return true; - } - - void handleMouseDown (int x, int y) override - { - if (! alreadyInside) - { - alreadyInside = true; - getTopLevelComponent()->toFront (true); - owner.dispatch (Vst2::plugInOpcodeGetMouse, x, y, 0, 0); - alreadyInside = false; - } - else - { - PostEvent (::mouseDown, 0); - } - } - - void handlePaint() override - { - if (auto* peer = getPeer()) - { - auto pos = peer->globalToLocal (getScreenPosition()); - Vst2::VstEditorBounds r; - r.leftmost = (int16) pos.getX(); - r.upper = (int16) pos.getY(); - r.rightmost = (int16) (r.leftmost + getWidth()); - r.lower = (int16) (r.upper + getHeight()); - - owner.dispatch (Vst2::plugInOpcodeDrawEditor, 0, 0, &r, 0); - } - } - - private: - VSTPluginWindow& owner; - bool alreadyInside = false; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CarbonWrapperComponent) - }; - - friend struct CarbonWrapperComponent; - std::unique_ptr carbonWrapper; - #endif - std::unique_ptr cocoaWrapper; void resized() override diff --git a/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h b/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h index 27fb7a396..ac62e2123 100644 --- a/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h +++ b/source/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/ipslcontextinfo.h b/source/modules/juce_audio_processors/format_types/pslextensions/ipslcontextinfo.h new file mode 100644 index 000000000..6410e9341 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/ipslcontextinfo.h @@ -0,0 +1,190 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : ipslcontextinfo.h +// Created by : PreSonus Software Ltd., 08/2013, last updated 11/2016 +// Description : Context Information Interface +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. +*/ +//************************************************************************************************ + +#ifndef _ipslcontextinfo_h +#define _ipslcontextinfo_h + +#include "pluginterfaces/vst/vsttypes.h" +#include "pluginterfaces/base/falignpush.h" + +namespace Presonus { + +//************************************************************************************************ +// IContextInfoProvider +/** Callback interface to access context information from the host. Implemented by the host + as extension of Steinberg::Vst::IComponentHandler. + + The host might not be able to report all available attributes at all times. Please check the + return value of getContextInfoValue() and getContextInfoString(). It's not required to implement + IContextInfoHandler on the plug-in side, but we recommend to do so. The host will then call + notifyContextInfoChange() during initialization to inform the plug-in about the initial state of + the available attributes. + + Usage Example: + + IComponentHandler* handler; + FUnknownPtr contextInfoProvider (handler); + + void PLUGIN_API MyEditController::notifyContextInfoChange () + { + int32 channelIndex = 0; + contextInfoProvider->getContextInfoValue (channelIndex, ContextInfo::kIndex); + + TChar channelName[128] = {0}; + contextInfoProvider->getContextInfoString (channelName, 128, ContextInfo::kName); + } +*/ +//************************************************************************************************ + +struct IContextInfoProvider: Steinberg::FUnknown +{ + /** Get context information by identifier. */ + virtual Steinberg::tresult PLUGIN_API getContextInfoValue (Steinberg::int32& value, Steinberg::FIDString id) = 0; + + /** Get context information by identifier. */ + virtual Steinberg::tresult PLUGIN_API getContextInfoString (Steinberg::Vst::TChar* string, Steinberg::int32 maxCharCount, Steinberg::FIDString id) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IContextInfoProvider, 0x483e61ea, 0x17994494, 0x8199a35a, 0xebb35e3c) + +//************************************************************************************************ +// IContextInfoProvider2 +/** Extension to IContextInfoProvider enabling the plug-in to modify host context information. + Values like volume or pan support both, numeric and string representation for get and set.*/ +//************************************************************************************************ + +struct IContextInfoProvider2: IContextInfoProvider +{ + using IContextInfoProvider::getContextInfoValue; + + /** Get context information by identifier (floating-point). */ + virtual Steinberg::tresult PLUGIN_API getContextInfoValue (double& value, Steinberg::FIDString id) = 0; + + /** Set context information by identifier (floating-point). */ + virtual Steinberg::tresult PLUGIN_API setContextInfoValue (Steinberg::FIDString id, double value) = 0; + + /** Set context information by identifier (integer). */ + virtual Steinberg::tresult PLUGIN_API setContextInfoValue (Steinberg::FIDString id, Steinberg::int32 value) = 0; + + /** Set context information by identifier (string). */ + virtual Steinberg::tresult PLUGIN_API setContextInfoString (Steinberg::FIDString id, Steinberg::Vst::TChar* string) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IContextInfoProvider2, 0x61e45968, 0x3d364f39, 0xb15e1733, 0x4944172b) + +//************************************************************************************************ +// IContextInfoHandler +/** Notification interface for context information changes. Implemented by the plug-in as extension of + Steinberg::Vst::IEditController. */ +//************************************************************************************************ + +struct IContextInfoHandler: Steinberg::FUnknown +{ + /** Called by the host if context information has changed. */ + virtual void PLUGIN_API notifyContextInfoChange () = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IContextInfoHandler, 0xc3b17bc0, 0x2c174494, 0x80293402, 0xfbc4bbf8) + +//************************************************************************************************ +// IContextInfoHandler2 +/** Replacement of IContextInfoHandler passing additional information about what changed on the host-side. + This interface will be preferred if implemented by the plug-in. It is required to + receive certain notifications like volume, pan, etc. */ +//************************************************************************************************ + +struct IContextInfoHandler2: Steinberg::FUnknown +{ + /** Called by the host if context information has changed. + The identifier (id) is empty for the inital update. */ + virtual void PLUGIN_API notifyContextInfoChange (Steinberg::FIDString id) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IContextInfoHandler2, 0x31e29a7a, 0xe55043ad, 0x8b95b9b8, 0xda1fbe1e) + +//************************************************************************************************ +// Context Information Attributes +//************************************************************************************************ + +namespace ContextInfo +{ + /** Channel types. */ + enum ChannelType + { + kTrack = 0, ///< audio track + kBus, ///< audio bus + kFX, ///< FX channel + kSynth, ///< output of virtual instrument + kIn, ///< input from audio driver + kOut ///< output to audio driver (main or sub-out) + }; + + /** Channel index mode. */ + enum ChannelIndexMode + { + kFlatIndex = 0, ///< channel indices are contiguous (example: track 1, track 2, bus 3, bus 4) + kPerTypeIndex ///< channel indices restarts at zero for each type (example: track 1, track 2, bus 1, bus 2) + }; + + // per instance + const Steinberg::FIDString kID = "id"; ///< (R) channel identifier, use to compare identity (string) + const Steinberg::FIDString kName = "name"; ///< (R/W) channel name, can be displayed to the user (string) + const Steinberg::FIDString kType = "type"; ///< (R) channel type (int32, see ChannelType enumeration) + const Steinberg::FIDString kMain = "main"; ///< (R) channel is main output (int32, 0: false, 1: true) + const Steinberg::FIDString kIndex = "index"; ///< (R) channel index (int32, starts at zero) + const Steinberg::FIDString kColor = "color"; ///< (R/W) channel color (int32: RGBA) + const Steinberg::FIDString kVisibility = "visibility"; ///< (R) channel visibility (int32, 0: false, 1: true) + const Steinberg::FIDString kSelected = "selected"; ///< (R/W) selection state, channel is selected exlusively and scrolled into view on write (int32, 0: false, 1: true) + const Steinberg::FIDString kMultiSelect = "multiselect"; ///< (W) select channel without unselecting others (int32, 0: false, 1: true) + const Steinberg::FIDString kFocused = "focused"; ///< (R) focus for user input when multiple channels are selected (int32, 0: false, 1: true) + + const Steinberg::FIDString kRegionName = "regionName"; ///< (R) name of region/event for region/event-based effects (string) + const Steinberg::FIDString kRegionSelected = "regionSelected"; ///< (R) selection state of region/event for region/event-based effects (int32, 0: false, 1: true) + + // per instance (requires IContextInfoHandler2 on plug-in side) + const Steinberg::FIDString kVolume = "volume"; ///< (R/W) volume factor [float, 0. = -oo dB, 1. = 0dB, etc.], also available as string + const Steinberg::FIDString kMaxVolume = "maxVolume"; ///< (R) maximum volume factor [float, 1. = 0dB], also available as string + const Steinberg::FIDString kPan = "pan"; ///< (R/W) stereo panning [float, < 0.5 = (L), 0.5 = (C), > 0.5 = (R)], also available as string + const Steinberg::FIDString kMute = "mute"; ///< (R/W) mute (int32, 0: false, 1: true) + const Steinberg::FIDString kSolo = "solo"; ///< (R/W) solo (int32, 0: false, 1: true) + const Steinberg::FIDString kSendCount = "sendcount"; ///< (R) send count [int] + const Steinberg::FIDString kSendLevel = "sendlevel"; ///< (R/W) send level factor, index is appended to id (e.g. "sendlevel0" for first), also available as string + const Steinberg::FIDString kMaxSendLevel = "maxSendlevel"; ///< (R) maximum send level factor, also available as string + + // global + const Steinberg::FIDString kActiveDocumentID = "activeDocumentID"; ///< (R) active document identifier, use to get identity of the active document (string) + const Steinberg::FIDString kDocumentID = "documentID"; ///< (R) document identifier, use to compare identity (string) + const Steinberg::FIDString kDocumentName = "documentName"; ///< (R) document name, can be displayed to user (string) + const Steinberg::FIDString kDocumentFolder = "documentFolder"; ///< (R) document folder (string) + const Steinberg::FIDString kAudioFolder = "audioFolder"; ///< (R) folder for audio files (string) + const Steinberg::FIDString kIndexMode = "indexMode"; ///< (R) channel index mode (default is flat, see ChannelIndexMode enumeration) +} + +} // namespace Presonus + +#include "pluginterfaces/base/falignpop.h" + +#endif // _ipslcontextinfo_h \ No newline at end of file diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/ipsleditcontroller.h b/source/modules/juce_audio_processors/format_types/pslextensions/ipsleditcontroller.h new file mode 100644 index 000000000..0350bc824 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/ipsleditcontroller.h @@ -0,0 +1,108 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : ipsleditcontroller.h +// Created by : PreSonus Software Ltd., 02/2017, last updated 10/2017 +// Description : Plug-in Edit Controller Extension Interface +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. +*/ +//************************************************************************************************ + +#ifndef _ipsleditcontroller_h +#define _ipsleditcontroller_h + +#include "pluginterfaces/vst/vsttypes.h" +#include "pluginterfaces/base/funknown.h" +#include "pluginterfaces/base/falignpush.h" + +namespace Steinberg { +namespace Vst { +class IEditController; }} + +namespace Presonus { + +/** Parameter extra flags. Used with IEditControllerExtra. */ +enum ParamExtraFlags +{ + kParamFlagMicroEdit = 1<<0 ///< parameter should be displayed in host micro view +}; + +/** Automation mode. Used with IEditControllerExtra. */ +enum AutomationMode +{ + kAutomationNone = 0, ///< no automation data available + kAutomationOff, ///< data available, but mode is set to off + kAutomationRead, ///< data + read mode + kAutomationTouch, ///< data + touch mode + kAutomationLatch, ///< data + latch mode + kAutomationWrite ///< data + write mode +}; + +/** Slave mode. Used with ISlaveControllerHandler. */ +enum SlaveMode +{ + kSlaveModeNormal, ///< plug-in used in different location following given master + kSlaveModeLowLatencyClone ///< plug-in used as hidden slave for low latency processing following given master +}; + +//************************************************************************************************ +// IEditControllerExtra +/** Extension to Steinberg::Vst::IEditController with additonal flags and notifications + not available in the standard edit controller interface. */ +//************************************************************************************************ + +struct IEditControllerExtra: Steinberg::FUnknown +{ + /** Get extra flags for given parameter (see ParamExtraFlags). */ + virtual Steinberg::int32 PLUGIN_API getParamExtraFlags (Steinberg::Vst::ParamID id) = 0; + + /** Set automation mode for given parameter (see AutomationMode). */ + virtual Steinberg::tresult PLUGIN_API setParamAutomationMode (Steinberg::Vst::ParamID id, Steinberg::int32 automationMode) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IEditControllerExtra, 0x50553fd9, 0x1d2c4c24, 0xb410f484, 0xc5fb9f3f) + +//************************************************************************************************ +// ISlaveControllerHandler +/** Extension to Steinberg::Vst::IEditController used to notify the plug-in about slave instances. + + The host might decide to use "cloned" (slave) instances in various scenarios, e.g. to process + audio paths with different latencies simultaneously or to synchronize grouped plug-in instances + between multiple mixer channels - see SlaveMode. In this case multiple plug-in instances are active + at the same time even though it looks like one to the user, i.e. only the editor of the master + instance is visible and can be used to change parameters. The edit controller implementation has + to synchronize parameter changes between instances that aren't visible to the host internally. +*/ +//************************************************************************************************ + +struct ISlaveControllerHandler: Steinberg::FUnknown +{ + /** Add slave edit controller. Implementation must sync non-automatable parameters between + this instance (master) and given slave instance internally, i.e. when the master (this) + changes update all connected slaves. + */ + virtual Steinberg::tresult PLUGIN_API addSlave (Steinberg::Vst::IEditController* slave, Steinberg::int32 slaveMode) = 0; + + /** Remove slave edit controller. */ + virtual Steinberg::tresult PLUGIN_API removeSlave (Steinberg::Vst::IEditController* slave) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (ISlaveControllerHandler, 0xd93894bd, 0x67454c29, 0x977ae2f5, 0xdb380434) + +} // namespace Presonus + +#include "pluginterfaces/base/falignpop.h" + +#endif // _ipsleditcontroller_h diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/ipslgainreduction.h b/source/modules/juce_audio_processors/format_types/pslextensions/ipslgainreduction.h new file mode 100644 index 000000000..1fe2b921a --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/ipslgainreduction.h @@ -0,0 +1,53 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : ipslgainreduction.h +// Created by : PreSonus Software Ltd., 03/2015 +// Description : Plug-in Gain Reduction Interface +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. +*/ +//************************************************************************************************ + +#ifndef _ipslgainreduction_h +#define _ipslgainreduction_h + +#include "pluginterfaces/base/funknown.h" +#include "pluginterfaces/base/falignpush.h" + +namespace Presonus { + +//************************************************************************************************ +// IGainReductionInfo +/** Interface to report gain reduction imposed to the audio signal by the plug-in to the + host for display in the UI. Implemented by the VST3 edit controller class. +*/ +//************************************************************************************************ + +struct IGainReductionInfo: Steinberg::FUnknown +{ + /** Get current gain reduction for display. The returned value in dB is either 0.0 (no reduction) + or negative. The host calls this function periodically while the plug-in is active. + The value is used AS IS for UI display purposes, without imposing additional ballistics or + presentation latency compensation. Be sure to return zero if processing is bypassed internally. + For multiple reduction stages, please report the sum in dB here. + */ + virtual double PLUGIN_API getGainReductionValueInDb () = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IGainReductionInfo, 0x8e3c292c, 0x95924f9d, 0xb2590b1e, 0x100e4198) + +} // namespace Presonus + +#include "pluginterfaces/base/falignpop.h" + +#endif // _ipslgainreduction_h \ No newline at end of file diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/ipslhostcommands.h b/source/modules/juce_audio_processors/format_types/pslextensions/ipslhostcommands.h new file mode 100644 index 000000000..c6884dd05 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/ipslhostcommands.h @@ -0,0 +1,121 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : ipslhostcommands.h +// Created by : PreSonus Software Ltd., 11/2009 +// Description : Host Command Interface +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. +*/ +//************************************************************************************************ + +#ifndef _ipslhostcommands_h +#define _ipslhostcommands_h + +#include "pluginterfaces/vst/vsttypes.h" +#include "pluginterfaces/base/funknown.h" +#include "pluginterfaces/base/falignpush.h" + +namespace Steinberg { +class IPlugView; } + +namespace Presonus { + +struct ICommandList; + +//************************************************************************************************ +// IHostCommandHandler +/** Callback interface to access host-specific parameter commands to be integrated + into a context menu inside the plug-in editor. Implemented as extension of + Steinberg::Vst::IComponentHandler. + + Please note that the intention of this set of interfaces is not to allow a generic menu + implementation. This is the responsibility of a GUI toolkit. It basically provides + a way to enumerate and execute commands anonymously, i.e. the plug-in does not have to + know the exact sematics of the commands and the host does not break the consistency of + the plug-in GUI. + + Usage Example: + + IComponentHandler* handler; + FUnknownPtr commandHandler (handler); + if(commandHandler) + if(ICommandList* commandList = commandHandler->createParamCommands (kMyParamId)) + { + FReleaser commandListReleaser (commandList); + commandHandler->popupCommandMenu (commandList, xPos, yPos); + } +*/ +//************************************************************************************************ + +struct IHostCommandHandler: Steinberg::FUnknown +{ + /** Create list of currently available host commands for given parameter. + The command list has a short lifecycle, it is recreated whenever + a context menu should appear. The returned pointer can be null, otherwise + it has to be released. */ + virtual ICommandList* PLUGIN_API createParamCommands (Steinberg::Vst::ParamID tag) = 0; + + /** Helper to popup a command menu at given position. + Coordinates are relative to view or in screen coordintes if view is null. + Can be used for testing purpose, if the plug-in does not have its own context menu implementation + or if it wants to use the look & feel of the host menu. This method is not supposed + to support command lists implemented by the plug-in. */ + virtual Steinberg::tresult PLUGIN_API popupCommandMenu (ICommandList* commandList, Steinberg::int32 xPos, Steinberg::int32 yPos, Steinberg::IPlugView* view = 0) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IHostCommandHandler, 0xF92032CD, 0x7A84407C, 0xABE6F863, 0x058EA6C2) + +//************************************************************************************************ +// CommandInfo +/** Describes a single command. */ +//************************************************************************************************ + +struct CommandInfo +{ + Steinberg::Vst::String128 title; ///< command title (possibly localized into active host language) + Steinberg::int32 flags; ///< command flags + + enum CommandFlags + { + kCanExecute = 1<<0, ///< used to display command enabled/disabled + kIsSeparator = 1<<1, ///< not a command, it's a separator + kIsChecked = 1<<2 ///< used to display command with a check mark + }; +}; + +//************************************************************************************************ +// ICommandList +/** Describes a list of commands. */ +//************************************************************************************************ + +struct ICommandList: Steinberg::FUnknown +{ + /** Returns the number of commands. */ + virtual Steinberg::int32 PLUGIN_API getCommandCount () = 0; + + /** Get command information for a given index. */ + virtual Steinberg::tresult PLUGIN_API getCommandInfo (Steinberg::int32 index, CommandInfo& info) = 0; + + /** Execute command at given index. */ + virtual Steinberg::tresult PLUGIN_API executeCommand (Steinberg::int32 index) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (ICommandList, 0xC5A687DB, 0x82F344E9, 0xB378254A, 0x47C4D712) + +} // namespace Presonus + +#include "pluginterfaces/base/falignpop.h" + +#endif // _ipslhostcommands_h \ No newline at end of file diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/ipslviewembedding.h b/source/modules/juce_audio_processors/format_types/pslextensions/ipslviewembedding.h new file mode 100644 index 000000000..8af915795 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/ipslviewembedding.h @@ -0,0 +1,53 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : ipslviewembedding.h +// Created by : PreSonus Software Ltd., 05/2012 +// Description : Plug-in View Embedding Interface +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. +*/ +//************************************************************************************************ + +#ifndef _ipslviewembedding_h +#define _ipslviewembedding_h + +#include "pluginterfaces/base/funknown.h" +#include "pluginterfaces/base/falignpush.h" + +namespace Steinberg { +class IPlugView; } + +namespace Presonus { + +//************************************************************************************************ +// IPlugInViewEmbedding +/** Support for plug-in view embedding, to be implemented by the VST3 controller class. */ +//************************************************************************************************ + +class IPlugInViewEmbedding: public Steinberg::FUnknown +{ +public: + /** Check if view embedding is supported. */ + virtual Steinberg::TBool PLUGIN_API isViewEmbeddingSupported () = 0; + + /** Inform plug-in that its view will be embedded. */ + virtual Steinberg::tresult PLUGIN_API setViewIsEmbedded (Steinberg::IPlugView* view, Steinberg::TBool embedded) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IPlugInViewEmbedding, 0xda57e6d1, 0x1f3242d1, 0xad9c1a82, 0xfdb95695) + +} // namespace Presonus + +#include "pluginterfaces/base/falignpop.h" + +#endif // _ipslviewembedding_h \ No newline at end of file diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/ipslviewscaling.h b/source/modules/juce_audio_processors/format_types/pslextensions/ipslviewscaling.h new file mode 100644 index 000000000..a7c2b1194 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/ipslviewscaling.h @@ -0,0 +1,67 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : ipslviewscaling.h +// Created by : PreSonus Software Ltd., 03/2015 +// Description : Plug-in View DPI Scaling Interface +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. +*/ +//************************************************************************************************ + +#ifndef _ipslviewscaling_h +#define _ipslviewscaling_h + +#include "pluginterfaces/base/funknown.h" +#include "pluginterfaces/base/falignpush.h" + +namespace Presonus { + +//************************************************************************************************ +// IPlugInViewScaling +/** Support for plug-in view content scaling, to be implemented by the VST3 IPlugView class. + + On Windows, if a process is "DPI-aware" and the system DPI setting is different from the default + value of 96 DPI, the application is responsible to scale the contents of its windows accordingly, + including child windows provided by 3rd party plug-ins. + + This interface is used by the host to inform the plug-in about the current scaling factor. + The scaling factor is used to convert user space coordinates aka DIPs (device-independent pixels) + to physical pixels on screen. + + The plug-in has to be prepared to deal with the following scaling factors: + + 96 DPI = 100% scaling (factor = 1.0) + 120 DPI = 125% scaling (factor = 1.25) + 144 DPI = 150% scaling (factor = 1.5) + 192 DPI = 200% scaling (factor = 2.0) + + On Windows 8.1 or later DPI settings are per monitor. The scaling factor for a window can change + when it is moved between screens. +*/ +//************************************************************************************************ + +struct IPlugInViewScaling: Steinberg::FUnknown +{ + /** Inform the view about the current content scaling factor. The scaling factor can change + if the window is moved between screens. + */ + virtual Steinberg::tresult PLUGIN_API setContentScaleFactor (float factor) = 0; + + static const Steinberg::FUID iid; +}; + +DECLARE_CLASS_IID (IPlugInViewScaling, 0x65ed9690, 0x8ac44525, 0x8aadef7a, 0x72ea703f) + +} // namespace Presonus + +#include "pluginterfaces/base/falignpop.h" + +#endif // _ipslviewscaling_h \ No newline at end of file diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/pslauextensions.h b/source/modules/juce_audio_processors/format_types/pslextensions/pslauextensions.h new file mode 100644 index 000000000..1b0b0b9bb --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/pslauextensions.h @@ -0,0 +1,57 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : pslauextensions.h +// Created by : PreSonus Software Ltd., 08/2017, last updated 10/2017 +// Description : PreSonus-specific AU API Extensions +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. + */ +//************************************************************************************************ + +#ifndef _pslauextensions_h +#define _pslauextensions_h + +#ifdef __cplusplus +namespace Presonus { +#endif + +////////////////////////////////////////////////////////////////////////////////////////////////// +// Property IDs +////////////////////////////////////////////////////////////////////////////////////////////////// + +/** This AU property in the global scope is of type CFArrayRef and is writable by the host. + The elements of the array are of type CFDataRef which encapsulate SlaveMode structures. + For more details, please check the documentation of Presonus::ISlaveControllerHandler. */ +static const AudioUnitPropertyID kSlaveEffectsPropID = 0x50534C01; + +////////////////////////////////////////////////////////////////////////////////////////////////// +// Data types +////////////////////////////////////////////////////////////////////////////////////////////////// + +enum SlaveMode +{ + kSlaveModeNormal, ///< plug-in used in different location following given master + kSlaveModeLowLatencyClone ///< plug-in used as hidden slave for low latency processing following given master +}; + +////////////////////////////////////////////////////////////////////////////////////////////////// + +struct SlaveEffect +{ + AudioUnit unit; ///< Audio Unit reference + SInt32 mode; ///< SlaveMode +}; + +#ifdef __cplusplus +} +#endif + +#endif // _pslauextensions_h diff --git a/source/modules/juce_audio_processors/format_types/pslextensions/pslvst2extensions.h b/source/modules/juce_audio_processors/format_types/pslextensions/pslvst2extensions.h new file mode 100644 index 000000000..bab2e61c5 --- /dev/null +++ b/source/modules/juce_audio_processors/format_types/pslextensions/pslvst2extensions.h @@ -0,0 +1,111 @@ +//************************************************************************************************ +// +// PreSonus Plug-In Extensions +// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd. +// +// Filename : pslvst2extensions.h +// Created by : PreSonus Software Ltd., 05/2012, last updated 08/2017 +// Description : PreSonus-specific VST2 API Extensions +// +//************************************************************************************************ +/* + DISCLAIMER: + The PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies, + provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and + PreSonus is not affiliated with the owner of the underlying technology in any way. +*/ +//************************************************************************************************ + +#ifndef _pslvst2extensions_h +#define _pslvst2extensions_h + +namespace Presonus { + +////////////////////////////////////////////////////////////////////////////////////////////////// +// CanDo Strings +////////////////////////////////////////////////////////////////////////////////////////////////// + +/** Identifiers to be passed to VST2's canDo() method. */ +namespace PlugCanDos +{ + /** Check if view can be resized by the host. */ + static const char* canDoViewResize = "supportsViewResize"; + + /** Check if view can be embedded by the host. */ + static const char* canDoViewEmbedding = "supportsViewEmbedding"; + + /** Check if view scaling for high-DPI is supported by the plug-in. */ + static const char* canDoViewDpiScaling = "supportsViewDpiScaling"; + + /** Check if gain reduction reporting is supported by the plug-in. */ + static const char* canDoGainReductionInfo = "supportsGainReductionInfo"; + + /** Check if slave effects are supported by plug-in. */ + static const char* canDoSlaveEffects = "supportsSlaveEffects"; +} + +////////////////////////////////////////////////////////////////////////////////////////////////// +// Opcodes +////////////////////////////////////////////////////////////////////////////////////////////////// + +/** Vendor-specific opcodes a VST2 plug-in can implement to add non-standard features like + embedding its views as subview into the host, resizing from the host, high-DPI scaling, etc. + + Embedding corresponds to the Presonus::IPlugInViewEmbedding VST3 extended interface. + + Resizing works like VST3's checkSizeConstraint() and onSize() methods, VST3's canResize() + is defined via canDoViewResize. + + For "DPI-aware" host applications on the Windows platform a similar mimic to the + Presonus::IPlugInViewScaling VST3 extended interface is defined here. + + Gain reduction reporting corresponds to the Presonus::IGainReductionInfo VST3 interface. + + Slave effect handling corresponds to the Presonus::ISlaveControllerHandler VST3 interface. +*/ +enum Opcodes +{ + /** PreSonus vendor ID - distinguishes our calls from other VST2 extensions. + Pass this vendor ID as "index" (aka "lArg1") parameter for vendor specific calls. */ + kVendorID = 'PreS', + + /** The host can suggest a new editor size, and the plug-in can modify the suggested + size to a suitable value if it cannot resize to the given values. + The ptrArg is a ERect* to the input/output rect. This differs from the ERect** + used by effEditGetRect, because here the rect is owned by the host, not the plug-in. + The result is 0 on failure, 1 on success. */ + kEffEditCheckSizeConstraints = 'AeCc', + + /** The host can set a new size after negotiating the size via the above + kEffEditCheckSizeConstraints, triggering the actual resizing. + The ptrArg is a ERect* to the input/output rect. This differs from the ERect** + used by effEditGetRect, because here the rect is owned by the host, not the plug-in. + The result is 0 on failure, 1 on success. */ + kEffEditSetRect = 'AeSr', + + /** When the view is embedded, it may need to adjust its UI, e.g. by suppressing + its built-in resizing facility because this is then controlled by the host. + The ptrArg is a VstInt32*, pointing to 0 to disable or to 1 to enable embedding. + Per default, embedding is disabled until the host calls this to indicate otherwise. */ + kEffEditSetEmbedded = 'AeEm', + + /** Inform the view about the current content scaling factor. The factor is passed in the opt argument. + For more details, please check the documentation of Presonus::IPlugInViewScaling. */ + kEffEditSetContentScaleFactor = 'AeCs', + + /** Get current gain reduction for display. The ptrArg is a float* to be set to the dB value. + For more details, please check the documentation of Presonus::IGainReductionInfo. */ + kEffGetGainReductionValueInDb = 'GRdB', + + /** Add slave effect. The ptrArg is a pointer to the slave AEffect, the 'opt' float transmits the mode (see enum SlaveMode). + For more details, please check the documentation of Presonus::ISlaveControllerHandler. */ + kEffAddSlave = 'AdSl', + + /** Remove slave effect. The ptrArg is a pointer to the slave AEffect. + For more details, please check the documentation of Presonus::ISlaveControllerHandler. */ + kEffRemoveSlave = 'RmSl' +}; + +} // namespace Presonus + +#endif // _pslvst2extensions_h diff --git a/source/modules/juce_audio_processors/juce_audio_processors.cpp b/source/modules/juce_audio_processors/juce_audio_processors.cpp index 80914cc0a..1cdd1f406 100644 --- a/source/modules/juce_audio_processors/juce_audio_processors.cpp +++ b/source/modules/juce_audio_processors/juce_audio_processors.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -27,7 +34,9 @@ #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 -#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 +#if ! JUCE_AUDIOPROCESSOR_NO_GUI + #define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 +#endif #define JUCE_GUI_BASICS_INCLUDE_SCOPED_THREAD_DPI_AWARENESS_SETTER 1 #define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1 @@ -36,14 +45,7 @@ #include //============================================================================== -#if JUCE_MAC - #if JUCE_SUPPORT_CARBON && (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_AU) - #include - #include - #endif -#endif - -#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD) +#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD) && ! JUCE_AUDIOPROCESSOR_NO_GUI #include #include #include @@ -202,17 +204,23 @@ private: #include "format_types/juce_LegacyAudioParameter.cpp" #include "processors/juce_AudioProcessor.cpp" #include "processors/juce_AudioPluginInstance.cpp" -#include "processors/juce_AudioProcessorEditor.cpp" #include "processors/juce_AudioProcessorGraph.cpp" -#include "processors/juce_GenericAudioProcessorEditor.cpp" +#if ! JUCE_AUDIOPROCESSOR_NO_GUI + #include "processors/juce_AudioProcessorEditor.cpp" + #include "processors/juce_GenericAudioProcessorEditor.cpp" +#endif #include "processors/juce_PluginDescription.cpp" +#include "format_types/juce_ARACommon.cpp" #include "format_types/juce_LADSPAPluginFormat.cpp" #include "format_types/juce_VSTPluginFormat.cpp" #include "format_types/juce_VST3PluginFormat.cpp" #include "format_types/juce_AudioUnitPluginFormat.mm" -#include "scanning/juce_KnownPluginList.cpp" -#include "scanning/juce_PluginDirectoryScanner.cpp" -#include "scanning/juce_PluginListComponent.cpp" +#include "format_types/juce_ARAHosting.cpp" +#if ! JUCE_AUDIOPROCESSOR_NO_GUI + #include "scanning/juce_KnownPluginList.cpp" + #include "scanning/juce_PluginDirectoryScanner.cpp" + #include "scanning/juce_PluginListComponent.cpp" +#endif #include "processors/juce_AudioProcessorParameterGroup.cpp" #include "utilities/juce_AudioProcessorParameterWithID.cpp" #include "utilities/juce_RangedAudioParameter.cpp" @@ -220,10 +228,13 @@ private: #include "utilities/juce_AudioParameterInt.cpp" #include "utilities/juce_AudioParameterBool.cpp" #include "utilities/juce_AudioParameterChoice.cpp" -#include "utilities/juce_ParameterAttachments.cpp" +#if ! JUCE_AUDIOPROCESSOR_NO_GUI + #include "utilities/juce_ParameterAttachments.cpp" +#endif #include "utilities/juce_AudioProcessorValueTreeState.cpp" #include "utilities/juce_PluginHostType.cpp" #include "utilities/juce_NativeScaleFactorNotifier.cpp" +#include "utilities/ARA/juce_ARA_utils.cpp" #include "format_types/juce_LV2PluginFormat.cpp" @@ -231,3 +242,8 @@ private: #include "format_types/juce_VST3PluginFormat_test.cpp" #include "format_types/juce_LV2PluginFormat_test.cpp" #endif + +#if JUCE_AUDIOPROCESSOR_NO_GUI +// commonly used classes in DSP code +namespace juce { Colour::Colour(juce::uint32) noexcept {} } +#endif diff --git a/source/modules/juce_audio_processors/juce_audio_processors.h b/source/modules/juce_audio_processors/juce_audio_processors.h index 553e3d24b..e79553ec0 100644 --- a/source/modules/juce_audio_processors/juce_audio_processors.h +++ b/source/modules/juce_audio_processors/juce_audio_processors.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -94,6 +101,17 @@ #define JUCE_PLUGINHOST_LV2 0 #endif +/** Config: JUCE_PLUGINHOST_ARA + Enables the ARA plugin extension hosting classes. You will need to download the ARA SDK and specify the + path to it either in the Projucer, using juce_set_ara_sdk_path() in your CMake project file. + + The directory can be obtained by recursively cloning https://github.com/Celemony/ARA_SDK and checking out + the tag releases/2.1.0. +*/ +#ifndef JUCE_PLUGINHOST_ARA + #define JUCE_PLUGINHOST_ARA 0 +#endif + /** Config: JUCE_CUSTOM_VST3_SDK If enabled, the embedded VST3 SDK in JUCE will not be added to the project and instead you should add the path to your custom VST3 SDK to the project's header search paths. Most users shouldn't @@ -107,10 +125,6 @@ // #error "You need to set either the JUCE_PLUGINHOST_AU and/or JUCE_PLUGINHOST_VST and/or JUCE_PLUGINHOST_VST3 and/or JUCE_PLUGINHOST_LADSPA flags if you're using this module!" #endif -#if ! (defined (JUCE_SUPPORT_CARBON) || JUCE_64BIT || JUCE_IOS) - #define JUCE_SUPPORT_CARBON 1 -#endif - #ifndef JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR #define JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR 1 #endif @@ -119,18 +133,23 @@ #include "utilities/juce_VSTCallbackHandler.h" #include "utilities/juce_VST3ClientExtensions.h" #include "utilities/juce_NativeScaleFactorNotifier.h" +#include "format_types/juce_ARACommon.h" #include "utilities/juce_ExtensionsVisitor.h" #include "processors/juce_AudioProcessorParameter.h" #include "processors/juce_HostedAudioProcessorParameter.h" #include "processors/juce_AudioProcessorEditorHostContext.h" -#include "processors/juce_AudioProcessorEditor.h" +#if ! JUCE_AUDIOPROCESSOR_NO_GUI + #include "processors/juce_AudioProcessorEditor.h" +#endif #include "processors/juce_AudioProcessorListener.h" #include "processors/juce_AudioProcessorParameterGroup.h" #include "processors/juce_AudioProcessor.h" #include "processors/juce_PluginDescription.h" #include "processors/juce_AudioPluginInstance.h" #include "processors/juce_AudioProcessorGraph.h" -#include "processors/juce_GenericAudioProcessorEditor.h" +#if ! JUCE_AUDIOPROCESSOR_NO_GUI + #include "processors/juce_GenericAudioProcessorEditor.h" +#endif #include "format/juce_AudioPluginFormat.h" #include "format/juce_AudioPluginFormatManager.h" #include "scanning/juce_KnownPluginList.h" @@ -140,6 +159,7 @@ #include "format_types/juce_VST3PluginFormat.h" #include "format_types/juce_VSTMidiEventList.h" #include "format_types/juce_VSTPluginFormat.h" +#include "format_types/juce_ARAHosting.h" #include "scanning/juce_PluginDirectoryScanner.h" #include "scanning/juce_PluginListComponent.h" #include "utilities/juce_AudioProcessorParameterWithID.h" @@ -148,11 +168,23 @@ #include "utilities/juce_AudioParameterInt.h" #include "utilities/juce_AudioParameterBool.h" #include "utilities/juce_AudioParameterChoice.h" -#include "utilities/juce_ParameterAttachments.h" +#if ! JUCE_AUDIOPROCESSOR_NO_GUI + #include "utilities/juce_ParameterAttachments.h" +#endif #include "utilities/juce_AudioProcessorValueTreeState.h" #include "utilities/juce_PluginHostType.h" +#include "utilities/ARA/juce_ARA_utils.h" + +//============================================================================== +// These declarations are here to avoid missing-prototype warnings in user code. -// This is here to avoid missing-prototype warnings in user code. // If you're implementing a plugin, you should supply a body for // this function in your own code. juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter(); + +// If you are implementing an ARA enabled plugin, you need to +// implement this function somewhere in the codebase by returning +// SubclassOfARADocumentControllerSpecialisation::createARAFactory(); +#if JucePlugin_Enable_ARA + const ARA::ARAFactory* JUCE_CALLTYPE createARAFactory(); +#endif diff --git a/source/modules/juce_audio_processors/juce_audio_processors_ara.cpp b/source/modules/juce_audio_processors/juce_audio_processors_ara.cpp new file mode 100644 index 000000000..d8e35ca4e --- /dev/null +++ b/source/modules/juce_audio_processors/juce_audio_processors_ara.cpp @@ -0,0 +1,40 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include +#include + +/* Having WIN32_LEAN_AND_MEAN defined at the point of including ARADebug.c will produce warnings. + + To prevent such problems it's easiest to have it in its own translation unit. +*/ + +#if (JucePlugin_Enable_ARA || (JUCE_PLUGINHOST_ARA && (JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_AU))) && (JUCE_MAC || JUCE_WINDOWS) + +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wgnu-zero-variadic-macro-arguments", "-Wmissing-prototypes") + #include +JUCE_END_IGNORE_WARNINGS_GCC_LIKE + +#endif diff --git a/source/modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp b/source/modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp index b066f74bc..22b2d1181 100644 --- a/source/modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp +++ b/source/modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp b/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp index 0c9aa6d62..e2927d04d 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp +++ b/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h b/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h index 0ad750160..e849bef3f 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioPluginInstance.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/source/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp index 6b6921b30..a84bd22be 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -43,12 +50,14 @@ AudioProcessor::AudioProcessor (const BusesProperties& ioConfig) AudioProcessor::~AudioProcessor() { + #if ! JUCE_AUDIOPROCESSOR_NO_GUI { const ScopedLock sl (activeEditorLock); // ooh, nasty - the editor should have been deleted before its AudioProcessor. jassert (activeEditor == nullptr); } + #endif #if JUCE_DEBUG && ! JUCE_DISABLE_AUDIOPROCESSOR_BEGIN_END_GESTURE_CHECKING // This will fail if you've called beginParameterChangeGesture() for one @@ -867,6 +876,7 @@ void AudioProcessor::audioIOChanged (bool busNumberChanged, bool channelNumChang processorLayoutsChanged(); } +#if ! JUCE_AUDIOPROCESSOR_NO_GUI //============================================================================== void AudioProcessor::editorBeingDeleted (AudioProcessorEditor* const editor) noexcept { @@ -903,6 +913,7 @@ AudioProcessorEditor* AudioProcessor::createEditorIfNeeded() return ed; } +#endif //============================================================================== void AudioProcessor::getCurrentProgramStateInformation (juce::MemoryBlock& destData) @@ -1241,7 +1252,6 @@ const char* AudioProcessor::getWrapperTypeDescription (AudioProcessor::WrapperTy case AudioProcessor::wrapperType_VST3: return "VST3"; case AudioProcessor::wrapperType_AudioUnit: return "AU"; case AudioProcessor::wrapperType_AudioUnitv3: return "AUv3"; - case AudioProcessor::wrapperType_RTAS: return "RTAS"; case AudioProcessor::wrapperType_AAX: return "AAX"; case AudioProcessor::wrapperType_Standalone: return "Standalone"; case AudioProcessor::wrapperType_Unity: return "Unity"; diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/source/modules/juce_audio_processors/processors/juce_AudioProcessor.h index c2710aa5c..0743e4344 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessor.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessor.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -24,7 +31,7 @@ namespace juce Base class for audio processing classes or plugins. This is intended to act as a base class of audio processor that is general enough - to be wrapped as a VST, AU, RTAS, etc, or used internally. + to be wrapped as a VST, AU, AAX, etc, or used internally. It is also used by the plugin hosting code as the wrapper around an instance of a loaded plugin. @@ -71,6 +78,12 @@ public: doublePrecision }; + enum class Realtime + { + no, + yes + }; + using ChangeDetails = AudioProcessorListener::ChangeDetails; //============================================================================== @@ -916,11 +929,27 @@ public: */ bool isNonRealtime() const noexcept { return nonRealtime; } + /** Returns no if the processor is being run in an offline mode for rendering. + + If the processor is being run live on realtime signals, this returns yes. + If the mode is unknown, this will assume it's realtime and return yes. + + This value may be unreliable until the prepareToPlay() method has been called, + and could change each time prepareToPlay() is called. + + @see setNonRealtime() + */ + Realtime isRealtime() const noexcept + { + return isNonRealtime() ? Realtime::no : Realtime::yes; + } + /** Called by the host to tell this processor whether it's being used in a non-realtime capacity for offline rendering or bouncing. */ virtual void setNonRealtime (bool isNonRealtime) noexcept; + #if ! JUCE_AUDIOPROCESSOR_NO_GUI //============================================================================== /** Creates the processor's GUI. @@ -970,6 +999,7 @@ public: This may call createEditor() internally to create the component. */ AudioProcessorEditor* createEditorIfNeeded(); + #endif //============================================================================== /** Returns the default number of steps for a parameter. @@ -1231,9 +1261,11 @@ public: virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return {}; } + #if ! JUCE_AUDIOPROCESSOR_NO_GUI //============================================================================== /** Not for public use - this is called before deleting an editor component. */ void editorBeingDeleted (AudioProcessorEditor*) noexcept; + #endif /** Flags to indicate the type of plugin context in which a processor is being used. */ enum WrapperType @@ -1243,7 +1275,6 @@ public: wrapperType_VST3, wrapperType_AudioUnit, wrapperType_AudioUnitv3, - wrapperType_RTAS, wrapperType_AAX, wrapperType_Standalone, wrapperType_Unity, @@ -1264,7 +1295,9 @@ public: struct TrackProperties { String name; // The name of the track - this will be empty if the track name is not known + #if ! JUCE_AUDIOPROCESSOR_NO_GUI Colour colour; // The colour of the track - this will be transparentBlack if the colour is not known + #endif // other properties may be added in the future }; @@ -1513,7 +1546,9 @@ private: //============================================================================== Array listeners; + #if ! JUCE_AUDIOPROCESSOR_NO_GUI Component::SafePointer activeEditor; + #endif double currentSampleRate = 0; int blockSize = 0, latencySamples = 0; bool suspended = false; diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp b/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp index fd71901db..cb6f1ce60 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h b/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h index 81a91d8ff..af1805ac3 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditorHostContext.h b/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditorHostContext.h index 096b5c3e7..1c3de6b95 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditorHostContext.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorEditorHostContext.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp b/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp index fd013c4d9..456f5dfed 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -1575,8 +1582,10 @@ bool AudioProcessorGraph::AudioGraphIOProcessor::producesMidi() const bool AudioProcessorGraph::AudioGraphIOProcessor::isInput() const noexcept { return type == audioInputNode || type == midiInputNode; } bool AudioProcessorGraph::AudioGraphIOProcessor::isOutput() const noexcept { return type == audioOutputNode || type == midiOutputNode; } +#if ! JUCE_AUDIOPROCESSOR_NO_GUI bool AudioProcessorGraph::AudioGraphIOProcessor::hasEditor() const { return false; } AudioProcessorEditor* AudioProcessorGraph::AudioGraphIOProcessor::createEditor() { return nullptr; } +#endif int AudioProcessorGraph::AudioGraphIOProcessor::getNumPrograms() { return 0; } int AudioProcessorGraph::AudioGraphIOProcessor::getCurrentProgram() { return 0; } diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h b/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h index 9c54201dc..f8e534009 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -357,8 +364,10 @@ public: bool acceptsMidi() const override; bool producesMidi() const override; + #if ! JUCE_AUDIOPROCESSOR_NO_GUI bool hasEditor() const override; AudioProcessorEditor* createEditor() override; + #endif int getNumPrograms() override; int getCurrentProgram() override; @@ -394,8 +403,10 @@ public: bool acceptsMidi() const override; bool producesMidi() const override; + #if ! JUCE_AUDIOPROCESSOR_NO_GUI bool hasEditor() const override { return false; } AudioProcessorEditor* createEditor() override { return nullptr; } + #endif int getNumPrograms() override { return 0; } int getCurrentProgram() override { return 0; } void setCurrentProgram (int) override { } diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h b/source/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h index c885fb349..77516239f 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorListener.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h b/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h index 128c923a7..29d5d64df 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp b/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp index e4250bb13..f66854c2c 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h b/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h index 28a4d28f2..5bb4f3724 100644 --- a/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h +++ b/source/modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp b/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp index 3f19a41b7..ad9084948 100644 --- a/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp +++ b/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h b/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h index 2711daacf..85a23295a 100644 --- a/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h +++ b/source/modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_HostedAudioProcessorParameter.h b/source/modules/juce_audio_processors/processors/juce_HostedAudioProcessorParameter.h index fac405359..0485808dd 100644 --- a/source/modules/juce_audio_processors/processors/juce_HostedAudioProcessorParameter.h +++ b/source/modules/juce_audio_processors/processors/juce_HostedAudioProcessorParameter.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/processors/juce_PluginDescription.cpp b/source/modules/juce_audio_processors/processors/juce_PluginDescription.cpp index b63391d46..470ff9d9e 100644 --- a/source/modules/juce_audio_processors/processors/juce_PluginDescription.cpp +++ b/source/modules/juce_audio_processors/processors/juce_PluginDescription.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -72,6 +79,7 @@ std::unique_ptr PluginDescription::createXml() const e->setAttribute ("numInputs", numInputChannels); e->setAttribute ("numOutputs", numOutputChannels); e->setAttribute ("isShell", hasSharedContainer); + e->setAttribute ("hasARAExtension", hasARAExtension); e->setAttribute ("uid", String::toHexString (deprecatedUid)); @@ -95,6 +103,7 @@ bool PluginDescription::loadFromXml (const XmlElement& xml) numInputChannels = xml.getIntAttribute ("numInputs"); numOutputChannels = xml.getIntAttribute ("numOutputs"); hasSharedContainer = xml.getBoolAttribute ("isShell", false); + hasARAExtension = xml.getBoolAttribute ("hasARAExtension", false); deprecatedUid = xml.getStringAttribute ("uid").getHexValue32(); uniqueId = xml.getStringAttribute ("uniqueId", "0").getHexValue32(); diff --git a/source/modules/juce_audio_processors/processors/juce_PluginDescription.h b/source/modules/juce_audio_processors/processors/juce_PluginDescription.h index 1afa932f8..08f1939fc 100644 --- a/source/modules/juce_audio_processors/processors/juce_PluginDescription.h +++ b/source/modules/juce_audio_processors/processors/juce_PluginDescription.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -122,6 +129,9 @@ public: /** True if the plug-in is part of a multi-type container, e.g. a VST Shell. */ bool hasSharedContainer = false; + /** True if the plug-in is ARA enabled and can supply a valid ARAFactoryWrapper. */ + bool hasARAExtension = false; + /** Returns true if the two descriptions refer to the same plug-in. This isn't quite as simple as them just having the same file (because of diff --git a/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp b/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp index be7985a1f..9775d299b 100644 --- a/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp +++ b/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.h b/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.h index 7cdd6dce9..9af96f4ac 100644 --- a/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.h +++ b/source/modules/juce_audio_processors/scanning/juce_KnownPluginList.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp b/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp index 0031db047..7f79c0d38 100644 --- a/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp +++ b/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h b/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h index 71aeb66ba..30f532c95 100644 --- a/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h +++ b/source/modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp b/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp index d590099a0..6af4db764 100644 --- a/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp +++ b/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.h b/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.h index 2ef582ded..42f7433c9 100644 --- a/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.h +++ b/source/modules/juce_audio_processors/scanning/juce_PluginListComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.cpp b/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.cpp new file mode 100644 index 000000000..cbbe5df00 --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.cpp @@ -0,0 +1,971 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +class ARADocumentControllerSpecialisation::ARADocumentControllerImpl : public ARADocumentController, + private juce::Timer +{ +public: + ARADocumentControllerImpl (const ARA::PlugIn::PlugInEntry* entry, + const ARA::ARADocumentControllerHostInstance* instance, + ARADocumentControllerSpecialisation* spec) + : ARADocumentController (entry, instance), specialisation (spec) + { + } + + template + std::vector const& getPlaybackRenderers() const noexcept + { + return ARA::PlugIn::DocumentController::getPlaybackRenderers(); + } + + template + std::vector const& getEditorRenderers() const noexcept + { + return ARA::PlugIn::DocumentController::getEditorRenderers(); + } + + template + std::vector const& getEditorViews() const noexcept + { + return ARA::PlugIn::DocumentController::getEditorViews(); + } + + auto getSpecialisation() { return specialisation; } + +protected: + //============================================================================== + bool doRestoreObjectsFromStream (ARAInputStream& input, const ARARestoreObjectsFilter* filter) noexcept + { + return specialisation->doRestoreObjectsFromStream (input, filter); + } + + bool doStoreObjectsToStream (ARAOutputStream& output, const ARAStoreObjectsFilter* filter) noexcept + { + return specialisation->doStoreObjectsToStream (output, filter); + } + + //============================================================================== + // Model object creation + ARA::PlugIn::Document* doCreateDocument () noexcept override; + ARA::PlugIn::MusicalContext* doCreateMusicalContext (ARA::PlugIn::Document* document, ARA::ARAMusicalContextHostRef hostRef) noexcept override; + ARA::PlugIn::RegionSequence* doCreateRegionSequence (ARA::PlugIn::Document* document, ARA::ARARegionSequenceHostRef hostRef) noexcept override; + ARA::PlugIn::AudioSource* doCreateAudioSource (ARA::PlugIn::Document* document, ARA::ARAAudioSourceHostRef hostRef) noexcept override; + ARA::PlugIn::AudioModification* doCreateAudioModification (ARA::PlugIn::AudioSource* audioSource, ARA::ARAAudioModificationHostRef hostRef, const ARA::PlugIn::AudioModification* optionalModificationToClone) noexcept override; + ARA::PlugIn::PlaybackRegion* doCreatePlaybackRegion (ARA::PlugIn::AudioModification* modification, ARA::ARAPlaybackRegionHostRef hostRef) noexcept override; + + //============================================================================== + // Plugin role implementation + friend class ARAPlaybackRegionReader; + ARA::PlugIn::PlaybackRenderer* doCreatePlaybackRenderer() noexcept override; + ARA::PlugIn::EditorRenderer* doCreateEditorRenderer() noexcept override; + ARA::PlugIn::EditorView* doCreateEditorView() noexcept override; + + //============================================================================== + // ARAAudioSource content access + bool doIsAudioSourceContentAvailable (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) noexcept override; + ARA::ARAContentGrade doGetAudioSourceContentGrade (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) noexcept override; + ARA::PlugIn::ContentReader* doCreateAudioSourceContentReader (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) noexcept override; + + //============================================================================== + // ARAAudioModification content access + bool doIsAudioModificationContentAvailable (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type) noexcept override; + ARA::ARAContentGrade doGetAudioModificationContentGrade (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type) noexcept override; + ARA::PlugIn::ContentReader* doCreateAudioModificationContentReader (ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) noexcept override; + + //============================================================================== + // ARAPlaybackRegion content access + bool doIsPlaybackRegionContentAvailable (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type) noexcept override; + ARA::ARAContentGrade doGetPlaybackRegionContentGrade (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type) noexcept override; + ARA::PlugIn::ContentReader* doCreatePlaybackRegionContentReader (ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) noexcept override; + + //============================================================================== + // ARAAudioSource analysis + bool doIsAudioSourceContentAnalysisIncomplete (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) noexcept override; + void doRequestAudioSourceContentAnalysis (ARA::PlugIn::AudioSource* audioSource, + std::vector const& contentTypes) noexcept override; + + //============================================================================== + // Analysis Algorithm selection + ARA::ARAInt32 doGetProcessingAlgorithmsCount() noexcept override; + const ARA::ARAProcessingAlgorithmProperties* doGetProcessingAlgorithmProperties (ARA::ARAInt32 algorithmIndex) noexcept override; + ARA::ARAInt32 doGetProcessingAlgorithmForAudioSource (const ARA::PlugIn::AudioSource* audioSource) noexcept override; + void doRequestProcessingAlgorithmForAudioSource (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAInt32 algorithmIndex) noexcept override; + +#ifndef DOXYGEN + + //============================================================================== + bool doRestoreObjectsFromArchive (ARA::PlugIn::HostArchiveReader* archiveReader, const ARA::PlugIn::RestoreObjectsFilter* filter) noexcept override; + bool doStoreObjectsToArchive (ARA::PlugIn::HostArchiveWriter* archiveWriter, const ARA::PlugIn::StoreObjectsFilter* filter) noexcept override; + + //============================================================================== + // Document notifications + void willBeginEditing() noexcept override; + void didEndEditing() noexcept override; + void willNotifyModelUpdates() noexcept override; + void didNotifyModelUpdates() noexcept override; + void willUpdateDocumentProperties (ARA::PlugIn::Document* document, ARADocument::PropertiesPtr newProperties) noexcept override; + void didUpdateDocumentProperties (ARA::PlugIn::Document* document) noexcept override; + void didAddMusicalContextToDocument (ARA::PlugIn::Document* document, ARA::PlugIn::MusicalContext* musicalContext) noexcept override; + void willRemoveMusicalContextFromDocument (ARA::PlugIn::Document* document, ARA::PlugIn::MusicalContext* musicalContext) noexcept override; + void didReorderMusicalContextsInDocument (ARA::PlugIn::Document* document) noexcept override; + void didAddRegionSequenceToDocument (ARA::PlugIn::Document* document, ARA::PlugIn::RegionSequence* regionSequence) noexcept override; + void willRemoveRegionSequenceFromDocument (ARA::PlugIn::Document* document, ARA::PlugIn::RegionSequence* regionSequence) noexcept override; + void didReorderRegionSequencesInDocument (ARA::PlugIn::Document* document) noexcept override; + void didAddAudioSourceToDocument (ARA::PlugIn::Document* document, ARA::PlugIn::AudioSource* audioSource) noexcept override; + void willRemoveAudioSourceFromDocument (ARA::PlugIn::Document* document, ARA::PlugIn::AudioSource* audioSource) noexcept override; + void willDestroyDocument (ARA::PlugIn::Document* document) noexcept override; + + //============================================================================== + // MusicalContext notifications + void willUpdateMusicalContextProperties (ARA::PlugIn::MusicalContext* musicalContext, ARAMusicalContext::PropertiesPtr newProperties) noexcept override; + void didUpdateMusicalContextProperties (ARA::PlugIn::MusicalContext* musicalContext) noexcept override; + void doUpdateMusicalContextContent (ARA::PlugIn::MusicalContext* musicalContext, const ARA::ARAContentTimeRange* range, ARA::ContentUpdateScopes flags) noexcept override; + void didAddRegionSequenceToMusicalContext (ARA::PlugIn::MusicalContext* musicalContext, ARA::PlugIn::RegionSequence* regionSequence) noexcept override; + void willRemoveRegionSequenceFromMusicalContext (ARA::PlugIn::MusicalContext* musicalContext, ARA::PlugIn::RegionSequence* regionSequence) noexcept override; + void didReorderRegionSequencesInMusicalContext (ARA::PlugIn::MusicalContext* musicalContext) noexcept override; + void willDestroyMusicalContext (ARA::PlugIn::MusicalContext* musicalContext) noexcept override; + + //============================================================================== + // RegionSequence notifications, typically not overridden further + void willUpdateRegionSequenceProperties (ARA::PlugIn::RegionSequence* regionSequence, ARARegionSequence::PropertiesPtr newProperties) noexcept override; + void didUpdateRegionSequenceProperties (ARA::PlugIn::RegionSequence* regionSequence) noexcept override; + void didAddPlaybackRegionToRegionSequence (ARA::PlugIn::RegionSequence* regionSequence, ARA::PlugIn::PlaybackRegion* playbackRegion) noexcept override; + void willRemovePlaybackRegionFromRegionSequence (ARA::PlugIn::RegionSequence* regionSequence, ARA::PlugIn::PlaybackRegion* playbackRegion) noexcept override; + void willDestroyRegionSequence (ARA::PlugIn::RegionSequence* regionSequence) noexcept override; + + //============================================================================== + // AudioSource notifications + void willUpdateAudioSourceProperties (ARA::PlugIn::AudioSource* audioSource, ARAAudioSource::PropertiesPtr newProperties) noexcept override; + void didUpdateAudioSourceProperties (ARA::PlugIn::AudioSource* audioSource) noexcept override; + void doUpdateAudioSourceContent (ARA::PlugIn::AudioSource* audioSource, const ARA::ARAContentTimeRange* range, ARA::ContentUpdateScopes flags) noexcept override; + void willEnableAudioSourceSamplesAccess (ARA::PlugIn::AudioSource* audioSource, bool enable) noexcept override; + void didEnableAudioSourceSamplesAccess (ARA::PlugIn::AudioSource* audioSource, bool enable) noexcept override; + void didAddAudioModificationToAudioSource (ARA::PlugIn::AudioSource* audioSource, ARA::PlugIn::AudioModification* audioModification) noexcept override; + void willRemoveAudioModificationFromAudioSource (ARA::PlugIn::AudioSource* audioSource, ARA::PlugIn::AudioModification* audioModification) noexcept override; + void willDeactivateAudioSourceForUndoHistory (ARA::PlugIn::AudioSource* audioSource, bool deactivate) noexcept override; + void didDeactivateAudioSourceForUndoHistory (ARA::PlugIn::AudioSource* audioSource, bool deactivate) noexcept override; + void willDestroyAudioSource (ARA::PlugIn::AudioSource* audioSource) noexcept override; + + //============================================================================== + // AudioModification notifications + void willUpdateAudioModificationProperties (ARA::PlugIn::AudioModification* audioModification, ARAAudioModification::PropertiesPtr newProperties) noexcept override; + void didUpdateAudioModificationProperties (ARA::PlugIn::AudioModification* audioModification) noexcept override; + void didAddPlaybackRegionToAudioModification (ARA::PlugIn::AudioModification* audioModification, ARA::PlugIn::PlaybackRegion* playbackRegion) noexcept override; + void willRemovePlaybackRegionFromAudioModification (ARA::PlugIn::AudioModification* audioModification, ARA::PlugIn::PlaybackRegion* playbackRegion) noexcept override; + void willDeactivateAudioModificationForUndoHistory (ARA::PlugIn::AudioModification* audioModification, bool deactivate) noexcept override; + void didDeactivateAudioModificationForUndoHistory (ARA::PlugIn::AudioModification* audioModification, bool deactivate) noexcept override; + void willDestroyAudioModification (ARA::PlugIn::AudioModification* audioModification) noexcept override; + + //============================================================================== + // PlaybackRegion notifications + void willUpdatePlaybackRegionProperties (ARA::PlugIn::PlaybackRegion* playbackRegion, ARAPlaybackRegion::PropertiesPtr newProperties) noexcept override; + void didUpdatePlaybackRegionProperties (ARA::PlugIn::PlaybackRegion* playbackRegion) noexcept override; + void willDestroyPlaybackRegion (ARA::PlugIn::PlaybackRegion* playbackRegion) noexcept override; + + //============================================================================== + // juce::Timer overrides + void timerCallback() override; + +public: + //============================================================================== + /** @internal */ + void internalNotifyAudioSourceAnalysisProgressStarted (ARAAudioSource* audioSource) override; + + /** @internal */ + void internalNotifyAudioSourceAnalysisProgressUpdated (ARAAudioSource* audioSource, float progress) override; + + /** @internal */ + void internalNotifyAudioSourceAnalysisProgressCompleted (ARAAudioSource* audioSource) override; + + /** @internal */ + void internalDidUpdateAudioSourceAnalysisProgress (ARAAudioSource* audioSource, + ARAAudioSource::ARAAnalysisProgressState state, + float progress) override; + + //============================================================================== + /** @internal */ + void internalNotifyAudioSourceContentChanged (ARAAudioSource* audioSource, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) override; + + /** @internal */ + void internalNotifyAudioModificationContentChanged (ARAAudioModification* audioModification, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) override; + + /** @internal */ + void internalNotifyPlaybackRegionContentChanged (ARAPlaybackRegion* playbackRegion, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) override; + +#endif + +private: + //============================================================================== + ARADocumentControllerSpecialisation* specialisation; + std::atomic internalAnalysisProgressIsSynced { true }; + ScopedJuceInitialiser_GUI libraryInitialiser; + int activeAudioSourcesCount = 0; + + //============================================================================== + template + void notifyListeners (Function ModelObject::Listener::* function, ModelObject* modelObject, Ts... ts) + { + (specialisation->*function) (modelObject, ts...); + modelObject->notifyListeners ([&] (auto& l) + { + try + { + (l.*function) (modelObject, ts...); + } + catch (...) + { + } + }); + } + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARADocumentControllerImpl) +}; + +ARA::PlugIn::DocumentController* ARADocumentControllerSpecialisation::getDocumentController() noexcept +{ + return documentController.get(); +} + +//============================================================================== +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::internalNotifyAudioSourceAnalysisProgressStarted (ARAAudioSource* audioSource) +{ + if (audioSource->internalAnalysisProgressTracker.updateProgress (ARA::kARAAnalysisProgressStarted, 0.0f)) + internalAnalysisProgressIsSynced.store (false, std::memory_order_release); + + DocumentController::notifyAudioSourceAnalysisProgressStarted (audioSource); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::internalNotifyAudioSourceAnalysisProgressUpdated (ARAAudioSource* audioSource, + float progress) +{ + if (audioSource->internalAnalysisProgressTracker.updateProgress (ARA::kARAAnalysisProgressUpdated, progress)) + internalAnalysisProgressIsSynced.store (false, std::memory_order_release); + + DocumentController::notifyAudioSourceAnalysisProgressUpdated (audioSource, progress); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::internalNotifyAudioSourceAnalysisProgressCompleted (ARAAudioSource* audioSource) +{ + if (audioSource->internalAnalysisProgressTracker.updateProgress (ARA::kARAAnalysisProgressCompleted, 1.0f)) + internalAnalysisProgressIsSynced.store (false, std::memory_order_release); + + DocumentController::notifyAudioSourceAnalysisProgressCompleted (audioSource); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::internalDidUpdateAudioSourceAnalysisProgress (ARAAudioSource* audioSource, + ARAAudioSource::ARAAnalysisProgressState state, + float progress) +{ + specialisation->didUpdateAudioSourceAnalysisProgress (audioSource, state, progress); +} + +//============================================================================== +ARADocumentControllerSpecialisation* ARADocumentControllerSpecialisation::getSpecialisedDocumentControllerImpl (ARA::PlugIn::DocumentController* dc) +{ + return static_cast (dc)->getSpecialisation(); +} + +ARADocument* ARADocumentControllerSpecialisation::getDocumentImpl() +{ + return documentController->getDocument(); +} + +//============================================================================== +// some helper macros to ease repeated declaration & implementation of notification functions below: +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wgnu-zero-variadic-macro-arguments") + +// no notification arguments +#define OVERRIDE_TO_NOTIFY_1(function, ModelObjectType, modelObject) \ + void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::function (ARA::PlugIn::ModelObjectType* modelObject) noexcept \ + { \ + notifyListeners (&ARA##ModelObjectType::Listener::function, static_cast (modelObject)); \ + } + +// single notification argument, model object version +#define OVERRIDE_TO_NOTIFY_2(function, ModelObjectType, modelObject, ArgumentType, argument) \ + void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::function (ARA::PlugIn::ModelObjectType* modelObject, ARA::PlugIn::ArgumentType argument) noexcept \ + { \ + notifyListeners (&ARA##ModelObjectType::Listener::function, static_cast (modelObject), static_cast (argument)); \ + } + +// single notification argument, non-model object version +#define OVERRIDE_TO_NOTIFY_3(function, ModelObjectType, modelObject, ArgumentType, argument) \ + void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::function (ARA::PlugIn::ModelObjectType* modelObject, ArgumentType argument) noexcept \ + { \ + notifyListeners (&ARA##ModelObjectType::Listener::function, static_cast (modelObject), argument); \ + } + +//============================================================================== +ARA::PlugIn::Document* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateDocument() noexcept +{ + auto* document = specialisation->doCreateDocument(); + + // Your Document subclass must inherit from juce::ARADocument + jassert (dynamic_cast (document)); + + return document; +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::willBeginEditing() noexcept +{ + notifyListeners (&ARADocument::Listener::willBeginEditing, static_cast (getDocument())); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::didEndEditing() noexcept +{ + notifyListeners (&ARADocument::Listener::didEndEditing, static_cast (getDocument())); + + if (isTimerRunning() && (activeAudioSourcesCount == 0)) + stopTimer(); + else if (! isTimerRunning() && (activeAudioSourcesCount > 0)) + startTimerHz (20); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::willNotifyModelUpdates() noexcept +{ + notifyListeners (&ARADocument::Listener::willNotifyModelUpdates, static_cast (getDocument())); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::didNotifyModelUpdates() noexcept +{ + notifyListeners (&ARADocument::Listener::didNotifyModelUpdates, static_cast (getDocument())); +} + +//============================================================================== +bool ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doRestoreObjectsFromArchive (ARA::PlugIn::HostArchiveReader* archiveReader, + const ARA::PlugIn::RestoreObjectsFilter* filter) noexcept +{ + ARAInputStream reader (archiveReader); + return doRestoreObjectsFromStream (reader, filter); +} + +bool ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doStoreObjectsToArchive (ARA::PlugIn::HostArchiveWriter* archiveWriter, + const ARA::PlugIn::StoreObjectsFilter* filter) noexcept +{ + ARAOutputStream writer (archiveWriter); + return doStoreObjectsToStream (writer, filter); +} + +//============================================================================== +OVERRIDE_TO_NOTIFY_3 (willUpdateDocumentProperties, Document, document, ARADocument::PropertiesPtr, newProperties) +OVERRIDE_TO_NOTIFY_1 (didUpdateDocumentProperties, Document, document) +OVERRIDE_TO_NOTIFY_2 (didAddMusicalContextToDocument, Document, document, MusicalContext*, musicalContext) +OVERRIDE_TO_NOTIFY_2 (willRemoveMusicalContextFromDocument, Document, document, MusicalContext*, musicalContext) +OVERRIDE_TO_NOTIFY_1 (didReorderMusicalContextsInDocument, Document, document) +OVERRIDE_TO_NOTIFY_2 (didAddRegionSequenceToDocument, Document, document, RegionSequence*, regionSequence) +OVERRIDE_TO_NOTIFY_2 (willRemoveRegionSequenceFromDocument, Document, document, RegionSequence*, regionSequence) +OVERRIDE_TO_NOTIFY_1 (didReorderRegionSequencesInDocument, Document, document) +OVERRIDE_TO_NOTIFY_2 (didAddAudioSourceToDocument, Document, document, AudioSource*, audioSource) +OVERRIDE_TO_NOTIFY_2 (willRemoveAudioSourceFromDocument, Document, document, AudioSource*, audioSource) +OVERRIDE_TO_NOTIFY_1 (willDestroyDocument, Document, document) + +//============================================================================== +ARA::PlugIn::MusicalContext* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateMusicalContext (ARA::PlugIn::Document* document, + ARA::ARAMusicalContextHostRef hostRef) noexcept +{ + return specialisation->doCreateMusicalContext (static_cast (document), hostRef); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doUpdateMusicalContextContent (ARA::PlugIn::MusicalContext* musicalContext, + const ARA::ARAContentTimeRange*, + ARA::ContentUpdateScopes flags) noexcept +{ + notifyListeners (&ARAMusicalContext::Listener::doUpdateMusicalContextContent, + static_cast (musicalContext), + flags); +} + +OVERRIDE_TO_NOTIFY_3 (willUpdateMusicalContextProperties, MusicalContext, musicalContext, ARAMusicalContext::PropertiesPtr, newProperties) +OVERRIDE_TO_NOTIFY_1 (didUpdateMusicalContextProperties, MusicalContext, musicalContext) +OVERRIDE_TO_NOTIFY_2 (didAddRegionSequenceToMusicalContext, MusicalContext, musicalContext, RegionSequence*, regionSequence) +OVERRIDE_TO_NOTIFY_2 (willRemoveRegionSequenceFromMusicalContext, MusicalContext, musicalContext, RegionSequence*, regionSequence) +OVERRIDE_TO_NOTIFY_1 (didReorderRegionSequencesInMusicalContext, MusicalContext, musicalContext) +OVERRIDE_TO_NOTIFY_1 (willDestroyMusicalContext, MusicalContext, musicalContext) + +//============================================================================== +ARA::PlugIn::RegionSequence* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateRegionSequence (ARA::PlugIn::Document* document, ARA::ARARegionSequenceHostRef hostRef) noexcept +{ + return specialisation->doCreateRegionSequence (static_cast (document), hostRef); +} + +OVERRIDE_TO_NOTIFY_3 (willUpdateRegionSequenceProperties, RegionSequence, regionSequence, ARARegionSequence::PropertiesPtr, newProperties) +OVERRIDE_TO_NOTIFY_1 (didUpdateRegionSequenceProperties, RegionSequence, regionSequence) +OVERRIDE_TO_NOTIFY_2 (didAddPlaybackRegionToRegionSequence, RegionSequence, regionSequence, PlaybackRegion*, playbackRegion) +OVERRIDE_TO_NOTIFY_2 (willRemovePlaybackRegionFromRegionSequence, RegionSequence, regionSequence, PlaybackRegion*, playbackRegion) +OVERRIDE_TO_NOTIFY_1 (willDestroyRegionSequence, RegionSequence, regionSequence) + +//============================================================================== +ARA::PlugIn::AudioSource* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateAudioSource (ARA::PlugIn::Document* document, ARA::ARAAudioSourceHostRef hostRef) noexcept +{ + ++activeAudioSourcesCount; + return specialisation->doCreateAudioSource (static_cast (document), hostRef); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doUpdateAudioSourceContent (ARA::PlugIn::AudioSource* audioSource, + const ARA::ARAContentTimeRange*, + ARA::ContentUpdateScopes flags) noexcept +{ + notifyListeners (&ARAAudioSource::Listener::doUpdateAudioSourceContent, static_cast (audioSource), flags); +} + +OVERRIDE_TO_NOTIFY_3 (willUpdateAudioSourceProperties, AudioSource, audioSource, ARAAudioSource::PropertiesPtr, newProperties) +OVERRIDE_TO_NOTIFY_1 (didUpdateAudioSourceProperties, AudioSource, audioSource) +OVERRIDE_TO_NOTIFY_3 (willEnableAudioSourceSamplesAccess, AudioSource, audioSource, bool, enable) +OVERRIDE_TO_NOTIFY_3 (didEnableAudioSourceSamplesAccess, AudioSource, audioSource, bool, enable) +OVERRIDE_TO_NOTIFY_2 (didAddAudioModificationToAudioSource, AudioSource, audioSource, AudioModification*, audioModification) +OVERRIDE_TO_NOTIFY_2 (willRemoveAudioModificationFromAudioSource, AudioSource, audioSource, AudioModification*, audioModification) +OVERRIDE_TO_NOTIFY_3 (willDeactivateAudioSourceForUndoHistory, AudioSource, audioSource, bool, deactivate) + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::didDeactivateAudioSourceForUndoHistory (ARA::PlugIn::AudioSource* audioSource, + bool deactivate) noexcept +{ + activeAudioSourcesCount += (deactivate ? -1 : 1); + notifyListeners (&ARAAudioSource::Listener::didDeactivateAudioSourceForUndoHistory, + static_cast (audioSource), + deactivate); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::willDestroyAudioSource (ARA::PlugIn::AudioSource* audioSource) noexcept +{ + if (! audioSource->isDeactivatedForUndoHistory()) + --activeAudioSourcesCount; + + notifyListeners (&ARAAudioSource::Listener::willDestroyAudioSource, static_cast (audioSource)); +} +//============================================================================== +ARA::PlugIn::AudioModification* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateAudioModification (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAAudioModificationHostRef hostRef, + const ARA::PlugIn::AudioModification* optionalModificationToClone) noexcept +{ + return specialisation->doCreateAudioModification (static_cast (audioSource), + hostRef, + static_cast (optionalModificationToClone)); +} + +OVERRIDE_TO_NOTIFY_3 (willUpdateAudioModificationProperties, AudioModification, audioModification, ARAAudioModification::PropertiesPtr, newProperties) +OVERRIDE_TO_NOTIFY_1 (didUpdateAudioModificationProperties, AudioModification, audioModification) +OVERRIDE_TO_NOTIFY_2 (didAddPlaybackRegionToAudioModification, AudioModification, audioModification, PlaybackRegion*, playbackRegion) +OVERRIDE_TO_NOTIFY_2 (willRemovePlaybackRegionFromAudioModification, AudioModification, audioModification, PlaybackRegion*, playbackRegion) +OVERRIDE_TO_NOTIFY_3 (willDeactivateAudioModificationForUndoHistory, AudioModification, audioModification, bool, deactivate) +OVERRIDE_TO_NOTIFY_3 (didDeactivateAudioModificationForUndoHistory, AudioModification, audioModification, bool, deactivate) +OVERRIDE_TO_NOTIFY_1 (willDestroyAudioModification, AudioModification, audioModification) + +//============================================================================== +ARA::PlugIn::PlaybackRegion* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreatePlaybackRegion (ARA::PlugIn::AudioModification* modification, + ARA::ARAPlaybackRegionHostRef hostRef) noexcept +{ + return specialisation->doCreatePlaybackRegion (static_cast (modification), hostRef); +} + +OVERRIDE_TO_NOTIFY_3 (willUpdatePlaybackRegionProperties, PlaybackRegion, playbackRegion, ARAPlaybackRegion::PropertiesPtr, newProperties) +OVERRIDE_TO_NOTIFY_1 (didUpdatePlaybackRegionProperties, PlaybackRegion, playbackRegion) +OVERRIDE_TO_NOTIFY_1 (willDestroyPlaybackRegion, PlaybackRegion, playbackRegion) + +//============================================================================== +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::internalNotifyAudioSourceContentChanged (ARAAudioSource* audioSource, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) +{ + if (notifyARAHost) + DocumentController::notifyAudioSourceContentChanged (audioSource, scopeFlags); + + notifyListeners (&ARAAudioSource::Listener::doUpdateAudioSourceContent, audioSource, scopeFlags); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::internalNotifyAudioModificationContentChanged (ARAAudioModification* audioModification, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) +{ + if (notifyARAHost) + DocumentController::notifyAudioModificationContentChanged (audioModification, scopeFlags); + + notifyListeners (&ARAAudioModification::Listener::didUpdateAudioModificationContent, audioModification, scopeFlags); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::internalNotifyPlaybackRegionContentChanged (ARAPlaybackRegion* playbackRegion, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) +{ + if (notifyARAHost) + DocumentController::notifyPlaybackRegionContentChanged (playbackRegion, scopeFlags); + + notifyListeners (&ARAPlaybackRegion::Listener::didUpdatePlaybackRegionContent, playbackRegion, scopeFlags); +} + +//============================================================================== +JUCE_END_IGNORE_WARNINGS_GCC_LIKE + +#undef OVERRIDE_TO_NOTIFY_1 +#undef OVERRIDE_TO_NOTIFY_2 +#undef OVERRIDE_TO_NOTIFY_3 + +//============================================================================== +ARADocument* ARADocumentControllerSpecialisation::doCreateDocument() +{ + return new ARADocument (static_cast (getDocumentController())); +} + +ARAMusicalContext* ARADocumentControllerSpecialisation::doCreateMusicalContext (ARADocument* document, + ARA::ARAMusicalContextHostRef hostRef) +{ + return new ARAMusicalContext (static_cast (document), hostRef); +} + +ARARegionSequence* ARADocumentControllerSpecialisation::doCreateRegionSequence (ARADocument* document, + ARA::ARARegionSequenceHostRef hostRef) +{ + return new ARARegionSequence (static_cast (document), hostRef); +} + +ARAAudioSource* ARADocumentControllerSpecialisation::doCreateAudioSource (ARADocument* document, + ARA::ARAAudioSourceHostRef hostRef) +{ + return new ARAAudioSource (static_cast (document), hostRef); +} + +ARAAudioModification* ARADocumentControllerSpecialisation::doCreateAudioModification ( + ARAAudioSource* audioSource, + ARA::ARAAudioModificationHostRef hostRef, + const ARAAudioModification* optionalModificationToClone) +{ + return new ARAAudioModification (static_cast (audioSource), + hostRef, + static_cast (optionalModificationToClone)); +} + +ARAPlaybackRegion* + ARADocumentControllerSpecialisation::doCreatePlaybackRegion (ARAAudioModification* modification, + ARA::ARAPlaybackRegionHostRef hostRef) +{ + return new ARAPlaybackRegion (static_cast (modification), hostRef); +} + +//============================================================================== +ARA::PlugIn::PlaybackRenderer* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreatePlaybackRenderer() noexcept +{ + return specialisation->doCreatePlaybackRenderer(); +} + +ARA::PlugIn::EditorRenderer* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateEditorRenderer() noexcept +{ + return specialisation->doCreateEditorRenderer(); +} + +ARA::PlugIn::EditorView* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateEditorView() noexcept +{ + return specialisation->doCreateEditorView(); +} + +bool ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doIsAudioSourceContentAvailable (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) noexcept +{ + return specialisation->doIsAudioSourceContentAvailable (audioSource, type); +} + +ARA::ARAContentGrade ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doGetAudioSourceContentGrade (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) noexcept +{ + return specialisation->doGetAudioSourceContentGrade (audioSource, type); +} + +ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateAudioSourceContentReader (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) noexcept +{ + return specialisation->doCreateAudioSourceContentReader (audioSource, type, range); +} + +bool ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doIsAudioModificationContentAvailable (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type) noexcept +{ + return specialisation->doIsAudioModificationContentAvailable (audioModification, type); +} + +ARA::ARAContentGrade ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doGetAudioModificationContentGrade (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type) noexcept +{ + return specialisation->doGetAudioModificationContentGrade (audioModification, type); +} + +ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreateAudioModificationContentReader (ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) noexcept +{ + return specialisation->doCreateAudioModificationContentReader (audioModification, type, range); +} + +bool ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doIsPlaybackRegionContentAvailable (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type) noexcept +{ + return specialisation->doIsPlaybackRegionContentAvailable (playbackRegion, type); +} + +ARA::ARAContentGrade + ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doGetPlaybackRegionContentGrade (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type) noexcept +{ + return specialisation->doGetPlaybackRegionContentGrade (playbackRegion, type); +} + +ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doCreatePlaybackRegionContentReader (ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) noexcept +{ + return specialisation->doCreatePlaybackRegionContentReader (playbackRegion, type, range); +} + +bool ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doIsAudioSourceContentAnalysisIncomplete (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) noexcept +{ + return specialisation->doIsAudioSourceContentAnalysisIncomplete (audioSource, type); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doRequestAudioSourceContentAnalysis (ARA::PlugIn::AudioSource* audioSource, + std::vector const& contentTypes) noexcept +{ + specialisation->doRequestAudioSourceContentAnalysis (audioSource, contentTypes); +} + +ARA::ARAInt32 ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doGetProcessingAlgorithmsCount() noexcept +{ + return specialisation->doGetProcessingAlgorithmsCount(); +} + +const ARA::ARAProcessingAlgorithmProperties* ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doGetProcessingAlgorithmProperties (ARA::ARAInt32 algorithmIndex) noexcept +{ + return specialisation->doGetProcessingAlgorithmProperties (algorithmIndex); +} + +ARA::ARAInt32 ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doGetProcessingAlgorithmForAudioSource (const ARA::PlugIn::AudioSource* audioSource) noexcept +{ + return specialisation->doGetProcessingAlgorithmForAudioSource (audioSource); +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::doRequestProcessingAlgorithmForAudioSource (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAInt32 algorithmIndex) noexcept +{ + return specialisation->doRequestProcessingAlgorithmForAudioSource (audioSource, algorithmIndex); +} + +//============================================================================== +// Helper code for ARADocumentControllerSpecialisation::ARADocumentControllerImpl::timerCallback() to +// rewire the host-related ARA SDK's progress tracker to our internal update mechanism. +namespace ModelUpdateControllerProgressAdapter +{ + using namespace ARA; + + static void ARA_CALL notifyAudioSourceAnalysisProgress (ARAModelUpdateControllerHostRef /*controllerHostRef*/, + ARAAudioSourceHostRef audioSourceHostRef, ARAAnalysisProgressState state, float value) noexcept + { + auto audioSource = reinterpret_cast (audioSourceHostRef); + audioSource->getDocumentController()->internalDidUpdateAudioSourceAnalysisProgress (audioSource, state, value); + audioSource->notifyListeners ([&] (ARAAudioSource::Listener& l) { l.didUpdateAudioSourceAnalysisProgress (audioSource, state, value); }); + } + + static void ARA_CALL notifyAudioSourceContentChanged (ARAModelUpdateControllerHostRef, ARAAudioSourceHostRef, + const ARAContentTimeRange*, ARAContentUpdateFlags) noexcept + { + jassertfalse; // not to be called - this adapter only forwards analysis progress + } + + static void ARA_CALL notifyAudioModificationContentChanged (ARAModelUpdateControllerHostRef, ARAAudioModificationHostRef, + const ARAContentTimeRange*, ARAContentUpdateFlags) noexcept + { + jassertfalse; // not to be called - this adapter only forwards analysis progress + } + + static void ARA_CALL notifyPlaybackRegionContentChanged (ARAModelUpdateControllerHostRef, ARAPlaybackRegionHostRef, + const ARAContentTimeRange*, ARAContentUpdateFlags) noexcept + { + jassertfalse; // not to be called - this adapter only forwards analysis progress + } + + static ARA::PlugIn::HostModelUpdateController* get() + { + static const auto modelUpdateControllerInterface = makeARASizedStruct (&ARA::ARAModelUpdateControllerInterface::notifyPlaybackRegionContentChanged, + ModelUpdateControllerProgressAdapter::notifyAudioSourceAnalysisProgress, + ModelUpdateControllerProgressAdapter::notifyAudioSourceContentChanged, + ModelUpdateControllerProgressAdapter::notifyAudioModificationContentChanged, + ModelUpdateControllerProgressAdapter::notifyPlaybackRegionContentChanged); + + static const auto instance = makeARASizedStruct (&ARA::ARADocumentControllerHostInstance::playbackControllerInterface, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + &modelUpdateControllerInterface, + nullptr, + nullptr); + + static auto progressAdapter = ARA::PlugIn::HostModelUpdateController { &instance }; + return &progressAdapter; + } +} + +void ARADocumentControllerSpecialisation::ARADocumentControllerImpl::timerCallback() +{ + if (! internalAnalysisProgressIsSynced.exchange (true, std::memory_order_release)) + for (auto& audioSource : getDocument()->getAudioSources()) + audioSource->internalAnalysisProgressTracker.notifyProgress (ModelUpdateControllerProgressAdapter::get(), + reinterpret_cast (audioSource)); +} + +//============================================================================== +ARAInputStream::ARAInputStream (ARA::PlugIn::HostArchiveReader* reader) + : archiveReader (reader), + size ((int64) reader->getArchiveSize()) +{} + +int ARAInputStream::read (void* destBuffer, int maxBytesToRead) +{ + const auto bytesToRead = std::min ((int64) maxBytesToRead, size - position); + + if (bytesToRead > 0 && ! archiveReader->readBytesFromArchive ((ARA::ARASize) position, (ARA::ARASize) bytesToRead, + static_cast (destBuffer))) + { + failure = true; + return 0; + } + + position += bytesToRead; + return (int) bytesToRead; +} + +bool ARAInputStream::setPosition (int64 newPosition) +{ + position = jlimit ((int64) 0, size, newPosition); + return true; +} + +bool ARAInputStream::isExhausted() +{ + return position >= size; +} + +ARAOutputStream::ARAOutputStream (ARA::PlugIn::HostArchiveWriter* writer) + : archiveWriter (writer) +{} + +bool ARAOutputStream::write (const void* dataToWrite, size_t numberOfBytes) +{ + if (! archiveWriter->writeBytesToArchive ((ARA::ARASize) position, numberOfBytes, (const ARA::ARAByte*) dataToWrite)) + return false; + + position += numberOfBytes; + return true; +} + +bool ARAOutputStream::setPosition (int64 newPosition) +{ + position = newPosition; + return true; +} + +//============================================================================== +ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation ( + const ARA::PlugIn::PlugInEntry* entry, + const ARA::ARADocumentControllerHostInstance* instance) + : documentController (std::make_unique (entry, instance, this)) +{ +} + +ARADocumentControllerSpecialisation::~ARADocumentControllerSpecialisation() = default; + +ARAPlaybackRenderer* ARADocumentControllerSpecialisation::doCreatePlaybackRenderer() +{ + return new ARAPlaybackRenderer (getDocumentController()); +} + +ARAEditorRenderer* ARADocumentControllerSpecialisation::doCreateEditorRenderer() +{ + return new ARAEditorRenderer (getDocumentController()); +} + +ARAEditorView* ARADocumentControllerSpecialisation::doCreateEditorView() +{ + return new ARAEditorView (getDocumentController()); +} + +bool ARADocumentControllerSpecialisation::doIsAudioSourceContentAvailable (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) +{ + juce::ignoreUnused (audioSource, type); + return false; +} + +ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetAudioSourceContentGrade (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) +{ + // Overriding doIsAudioSourceContentAvailable() requires overriding + // doGetAudioSourceContentGrade() accordingly! + jassertfalse; + + juce::ignoreUnused (audioSource, type); + return ARA::kARAContentGradeInitial; +} + +ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreateAudioSourceContentReader (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) +{ + // Overriding doIsAudioSourceContentAvailable() requires overriding + // doCreateAudioSourceContentReader() accordingly! + jassertfalse; + + juce::ignoreUnused (audioSource, type, range); + return nullptr; +} + +bool ARADocumentControllerSpecialisation::doIsAudioModificationContentAvailable (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type) +{ + juce::ignoreUnused (audioModification, type); + return false; +} + +ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetAudioModificationContentGrade (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type) +{ + // Overriding doIsAudioModificationContentAvailable() requires overriding + // doGetAudioModificationContentGrade() accordingly! + jassertfalse; + + juce::ignoreUnused (audioModification, type); + return ARA::kARAContentGradeInitial; +} + +ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreateAudioModificationContentReader (ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) +{ + // Overriding doIsAudioModificationContentAvailable() requires overriding + // doCreateAudioModificationContentReader() accordingly! + jassertfalse; + + juce::ignoreUnused (audioModification, type, range); + return nullptr; +} + +bool ARADocumentControllerSpecialisation::doIsPlaybackRegionContentAvailable (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type) +{ + juce::ignoreUnused (playbackRegion, type); + return false; +} + +ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetPlaybackRegionContentGrade (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type) +{ + // Overriding doIsPlaybackRegionContentAvailable() requires overriding + // doGetPlaybackRegionContentGrade() accordingly! + jassertfalse; + + juce::ignoreUnused (playbackRegion, type); + return ARA::kARAContentGradeInitial; +} + +ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreatePlaybackRegionContentReader (ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range) +{ + // Overriding doIsPlaybackRegionContentAvailable() requires overriding + // doCreatePlaybackRegionContentReader() accordingly! + jassertfalse; + + juce::ignoreUnused (playbackRegion, type, range); + return nullptr; +} + +bool ARADocumentControllerSpecialisation::doIsAudioSourceContentAnalysisIncomplete (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type) +{ + juce::ignoreUnused (audioSource, type); + return false; +} + +void ARADocumentControllerSpecialisation::doRequestAudioSourceContentAnalysis (ARA::PlugIn::AudioSource* audioSource, + std::vector const& contentTypes) +{ + juce::ignoreUnused (audioSource, contentTypes); +} + +ARA::ARAInt32 ARADocumentControllerSpecialisation::doGetProcessingAlgorithmsCount() { return 0; } + +const ARA::ARAProcessingAlgorithmProperties* + ARADocumentControllerSpecialisation::doGetProcessingAlgorithmProperties (ARA::ARAInt32 algorithmIndex) +{ + juce::ignoreUnused (algorithmIndex); + return nullptr; +} + +ARA::ARAInt32 ARADocumentControllerSpecialisation::doGetProcessingAlgorithmForAudioSource (const ARA::PlugIn::AudioSource* audioSource) +{ + // doGetProcessingAlgorithmForAudioSource() must be implemented if the supported + // algorithm count is greater than zero. + if (getDocumentController()->getProcessingAlgorithmsCount() > 0) + jassertfalse; + + juce::ignoreUnused (audioSource); + return 0; +} + +void ARADocumentControllerSpecialisation::doRequestProcessingAlgorithmForAudioSource (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAInt32 algorithmIndex) +{ + // doRequestProcessingAlgorithmForAudioSource() must be implemented if the supported + // algorithm count is greater than zero. + if (getDocumentController()->getProcessingAlgorithmsCount() > 0) + jassertfalse; + + juce::ignoreUnused (audioSource, algorithmIndex); +} + +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.h b/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.h new file mode 100644 index 000000000..2787972c9 --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.h @@ -0,0 +1,520 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +namespace juce +{ + +class ARAPlaybackRenderer; +class ARAEditorRenderer; +class ARAEditorView; +class ARAInputStream; +class ARAOutputStream; + +/** This class contains the customisation points for the JUCE provided ARA document controller + implementation. + + Every ARA enabled plugin must provide its own document controller implementation. To do this, + inherit from this class, and override its protected methods as needed. Then you need to + implement a global function somewhere in your module called createARAFactory(). This function + must return an ARAFactory* that will instantiate document controller objects using your + specialisation. There are helper functions inside ARADocumentControllerSpecialisation, so the + implementation of createARAFactory() can always be a simple one-liner. For example + + @code + class MyDocumentController : public ARADocumentControllerSpecialisation + { + //... + }; + + const ARA::ARAFactory* JUCE_CALLTYPE createARAFactory() + { + return juce::ARADocumentControllerSpecialisation::createARAFactory(); + } + @endcode + + Most member functions have a default implementation so you can build up your required feature + set gradually. The protected functions of this class fall in three distinct groups: + - interactive editing and playback, + - analysis features provided by the plugin and utilised by the host, and + - maintaining the ARA model graph. + + On top of the pure virtual functions, you will probably want to override + doCreatePlaybackRenderer() at the very least if you want your plugin to play any sound. This + function belongs to the first group. + + If your plugin has analysis capabilities and wants to allow the host to access these, functions + in the second group should be overridden. + + The default implementation of the ARA model object classes - i.e. ARADocument, ARAMusicalContext, + ARARegionSequence, ARAAudioSource, ARAAudioModification, ARAPlaybackRegion - should be sufficient + for maintaining a representation of the ARA model graph, hence overriding the model object + creation functions e.g. doCreateMusicalContext() is considered an advanced use case. Hence you + should be able to get a lot done without overriding functions in the third group. + + In order to react to the various ARA state changes you can override any of the ARA model object + Listener functions that ARADocumentControllerSpecialisation inherits from. Such listener + functions can be attached to one particular model objects instance, but the listener functions + inside ARADocumentControllerSpecialisation will respond to the events of all instances of the + model objects. + + @tags{ARA} +*/ +class ARADocumentControllerSpecialisation : public ARADocument::Listener, + public ARAMusicalContext::Listener, + public ARARegionSequence::Listener, + public ARAAudioSource::Listener, + public ARAAudioModification::Listener, + public ARAPlaybackRegion::Listener +{ +public: + //============================================================================== + /** Constructor. Used internally by the ARAFactory implementation. + */ + ARADocumentControllerSpecialisation (const ARA::PlugIn::PlugInEntry* entry, + const ARA::ARADocumentControllerHostInstance* instance); + + /** Destructor. */ + virtual ~ARADocumentControllerSpecialisation(); + + /** Returns the underlying DocumentController object that references this specialisation. + */ + ARA::PlugIn::DocumentController* getDocumentController() noexcept; + + /** Helper function for implementing the global createARAFactory() function. + + For example + + @code + class MyDocumentController : public ARADocumentControllerSpecialisation + { + //... + }; + + const ARA::ARAFactory* JUCE_CALLTYPE createARAFactory() + { + return juce::ARADocumentControllerSpecialisation::createARAFactory(); + } + @endcode + */ + template + static const ARA::ARAFactory* createARAFactory() + { + static_assert (std::is_base_of::value, + "DocumentController specialization types must inherit from ARADocumentControllerSpecialisation"); + return ARA::PlugIn::PlugInEntry::getPlugInEntry>()->getFactory(); + } + + /** Returns a pointer to the ARADocumentControllerSpecialisation instance that is referenced + by the provided DocumentController. You can use this function to access your specialisation + from anywhere where you have access to ARA::PlugIn::DocumentController*. + */ + template + static Specialisation* getSpecialisedDocumentController (ARA::PlugIn::DocumentController* dc) + { + return static_cast (getSpecialisedDocumentControllerImpl (dc)); + } + + /** Returns a pointer to the ARA document root maintained by this document controller. */ + template + DocumentType* getDocument() + { + return static_cast (getDocumentImpl()); + } + +protected: + //============================================================================== + /** Read an ARADocument archive from a juce::InputStream. + + @param input Data stream containing previously persisted data to be used when restoring the ARADocument + @param filter A filter to be applied to the stream + + Return true if the operation is successful. + + @see ARADocumentControllerInterface::restoreObjectsFromArchive + */ + virtual bool doRestoreObjectsFromStream (ARAInputStream& input, const ARARestoreObjectsFilter* filter) = 0; + + /** Write an ARADocument archive to a juce::OutputStream. + + @param output Data stream that should be used to write the persistent ARADocument data + @param filter A filter to be applied to the stream + + Returns true if the operation is successful. + + @see ARADocumentControllerInterface::storeObjectsToArchive + */ + virtual bool doStoreObjectsToStream (ARAOutputStream& output, const ARAStoreObjectsFilter* filter) = 0; + + //============================================================================== + /** Override to return a custom subclass instance of ARAPlaybackRenderer. */ + virtual ARAPlaybackRenderer* doCreatePlaybackRenderer(); + + /** Override to return a custom subclass instance of ARAEditorRenderer. */ + virtual ARAEditorRenderer* doCreateEditorRenderer(); + + /** Override to return a custom subclass instance of ARAEditorView. */ + virtual ARAEditorView* doCreateEditorView(); + + //============================================================================== + // ARAAudioSource content access + + /** Override to implement isAudioSourceContentAvailable() for all your supported content types - + the default implementation always returns false, preventing any calls to doGetAudioSourceContentGrade() + and doCreateAudioSourceContentReader(). + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doIsAudioSourceContentAvailable. + */ + virtual bool doIsAudioSourceContentAvailable (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type); + + /** Override to implement getAudioSourceContentGrade() for all your supported content types. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doGetAudioSourceContentGrade. + */ + virtual ARA::ARAContentGrade doGetAudioSourceContentGrade (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type); + + /** Override to implement createAudioSourceContentReader() for all your supported content types, + returning a custom subclass instance of ContentReader providing data of the requested type. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doCreateAudioSourceContentReader. + */ + virtual ARA::PlugIn::ContentReader* doCreateAudioSourceContentReader (ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range); + + //============================================================================== + // ARAAudioModification content access + + /** Override to implement isAudioModificationContentAvailable() for all your supported content types - + the default implementation always returns false. + For read-only data directly inherited from the underlying audio source you can just delegate the + call to the audio source, but user-editable modification data must be specifically handled here. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doIsAudioModificationContentAvailable. + */ + virtual bool doIsAudioModificationContentAvailable (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type); + + /** Override to implement getAudioModificationContentGrade() for all your supported content types. + For read-only data directly inherited from the underlying audio source you can just delegate the + call to the audio source, but user-editable modification data must be specifically handled here. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doGetAudioModificationContentGrade. + */ + virtual ARA::ARAContentGrade doGetAudioModificationContentGrade (const ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type); + + /** Override to implement createAudioModificationContentReader() for all your supported content types, + returning a custom subclass instance of ContentReader providing data of the requested \p type. + For read-only data directly inherited from the underlying audio source you can just delegate the + call to the audio source, but user-editable modification data must be specifically handled here. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doCreateAudioModificationContentReader. + */ + virtual ARA::PlugIn::ContentReader* doCreateAudioModificationContentReader (ARA::PlugIn::AudioModification* audioModification, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range); + + //============================================================================== + // ARAPlaybackRegion content access + + /** Override to implement isPlaybackRegionContentAvailable() for all your supported content types - + the default implementation always returns false. + Typically, this call can directly delegate to the underlying audio modification, since most + plug-ins will apply their modification data to the playback region with a transformation that + does not affect content availability. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doIsPlaybackRegionContentAvailable. + */ + virtual bool doIsPlaybackRegionContentAvailable (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type); + + /** Override to implement getPlaybackRegionContentGrade() for all your supported content types. + Typically, this call can directly delegate to the underlying audio modification, since most + plug-ins will apply their modification data to the playback region with a transformation that + does not affect content grade. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doGetPlaybackRegionContentGrade. + */ + virtual ARA::ARAContentGrade doGetPlaybackRegionContentGrade (const ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type); + + /** Override to implement createPlaybackRegionContentReader() for all your supported content types, + returning a custom subclass instance of ContentReader providing data of the requested type. + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doCreatePlaybackRegionContentReader. + */ + virtual ARA::PlugIn::ContentReader* doCreatePlaybackRegionContentReader (ARA::PlugIn::PlaybackRegion* playbackRegion, + ARA::ARAContentType type, + const ARA::ARAContentTimeRange* range); + + //============================================================================== + // ARAAudioSource analysis + + /** Override to implement isAudioSourceContentAnalysisIncomplete(). + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doIsAudioSourceContentAnalysisIncomplete. + */ + virtual bool doIsAudioSourceContentAnalysisIncomplete (const ARA::PlugIn::AudioSource* audioSource, + ARA::ARAContentType type); + + /** Override to implement requestAudioSourceContentAnalysis(). + + This function's called from + ARA::PlugIn::DocumentControllerDelegate::doRequestAudioSourceContentAnalysis. + */ + virtual void doRequestAudioSourceContentAnalysis (ARA::PlugIn::AudioSource* audioSource, + std::vector const& contentTypes); + + //============================================================================== + // Analysis Algorithm selection + + /** Override to implement getProcessingAlgorithmsCount(). + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doGetProcessingAlgorithmsCount. + */ + virtual ARA::ARAInt32 doGetProcessingAlgorithmsCount (); + + /** Override to implement getProcessingAlgorithmProperties(). + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doGetProcessingAlgorithmProperties. + */ + virtual const ARA::ARAProcessingAlgorithmProperties* + doGetProcessingAlgorithmProperties (ARA::ARAInt32 algorithmIndex); + + /** Override to implement getProcessingAlgorithmForAudioSource(). + + This function's result is returned from + ARA::PlugIn::DocumentControllerDelegate::doGetProcessingAlgorithmForAudioSource. + */ + virtual ARA::ARAInt32 doGetProcessingAlgorithmForAudioSource (const ARA::PlugIn::AudioSource* audioSource); + + /** Override to implement requestProcessingAlgorithmForAudioSource(). + + This function's called from + ARA::PlugIn::DocumentControllerDelegate::doRequestProcessingAlgorithmForAudioSource. + */ + virtual void doRequestProcessingAlgorithmForAudioSource (ARA::PlugIn::AudioSource* audioSource, ARA::ARAInt32 algorithmIndex); + + //============================================================================== + /** Override to return a custom subclass instance of ARADocument. */ + ARADocument* doCreateDocument(); + + /** Override to return a custom subclass instance of ARAMusicalContext. */ + ARAMusicalContext* doCreateMusicalContext (ARADocument* document, + ARA::ARAMusicalContextHostRef hostRef); + + /** Override to return a custom subclass instance of ARARegionSequence. */ + ARARegionSequence* doCreateRegionSequence (ARADocument* document, + ARA::ARARegionSequenceHostRef hostRef); + + /** Override to return a custom subclass instance of ARAAudioSource. */ + ARAAudioSource* doCreateAudioSource (ARADocument* document, + ARA::ARAAudioSourceHostRef hostRef); + + /** Override to return a custom subclass instance of ARAAudioModification. */ + ARAAudioModification* doCreateAudioModification (ARAAudioSource* audioSource, + ARA::ARAAudioModificationHostRef hostRef, + const ARAAudioModification* optionalModificationToClone); + + /** Override to return a custom subclass instance of ARAPlaybackRegion. */ + ARAPlaybackRegion* doCreatePlaybackRegion (ARAAudioModification* modification, + ARA::ARAPlaybackRegionHostRef hostRef); + +private: + //============================================================================== + template + class FactoryConfig : public ARA::PlugIn::FactoryConfig + { + public: + FactoryConfig() noexcept + { + const juce::String compatibleDocumentArchiveIDString = JucePlugin_ARACompatibleArchiveIDs; + + if (compatibleDocumentArchiveIDString.isNotEmpty()) + { + compatibleDocumentArchiveIDStrings = juce::StringArray::fromLines (compatibleDocumentArchiveIDString); + for (const auto& compatibleID : compatibleDocumentArchiveIDStrings) + compatibleDocumentArchiveIDs.push_back (compatibleID.toRawUTF8()); + } + + // Update analyzeable content types + static constexpr std::array contentTypes { + ARA::kARAContentTypeNotes, + ARA::kARAContentTypeTempoEntries, + ARA::kARAContentTypeBarSignatures, + ARA::kARAContentTypeStaticTuning, + ARA::kARAContentTypeKeySignatures, + ARA::kARAContentTypeSheetChords + }; + + JUCE_BEGIN_IGNORE_WARNINGS_MSVC (6313) + + for (size_t i = 0; i < contentTypes.size(); ++i) + if (JucePlugin_ARAContentTypes & (1 << i)) + analyzeableContentTypes.push_back (contentTypes[i]); + + JUCE_END_IGNORE_WARNINGS_MSVC + + // Update playback transformation flags + static constexpr std::array playbackTransformationFlags { + ARA::kARAPlaybackTransformationTimestretch, + ARA::kARAPlaybackTransformationTimestretchReflectingTempo, + ARA::kARAPlaybackTransformationContentBasedFadeAtTail, + ARA::kARAPlaybackTransformationContentBasedFadeAtHead + }; + + supportedPlaybackTransformationFlags = 0; + + JUCE_BEGIN_IGNORE_WARNINGS_MSVC (6313) + + for (size_t i = 0; i < playbackTransformationFlags.size(); ++i) + if (JucePlugin_ARATransformationFlags & (1 << i)) + supportedPlaybackTransformationFlags |= playbackTransformationFlags[i]; + + JUCE_END_IGNORE_WARNINGS_MSVC + } + + const char* getFactoryID() const noexcept override { return JucePlugin_ARAFactoryID; } + const char* getPlugInName() const noexcept override { return JucePlugin_Name; } + const char* getManufacturerName() const noexcept override { return JucePlugin_Manufacturer; } + const char* getInformationURL() const noexcept override { return JucePlugin_ManufacturerWebsite; } + const char* getVersion() const noexcept override { return JucePlugin_VersionString; } + const char* getDocumentArchiveID() const noexcept override { return JucePlugin_ARADocumentArchiveID; } + + ARA::ARASize getCompatibleDocumentArchiveIDsCount() const noexcept override + { + return compatibleDocumentArchiveIDs.size(); + } + + const ARA::ARAPersistentID* getCompatibleDocumentArchiveIDs() const noexcept override + { + return compatibleDocumentArchiveIDs.empty() ? nullptr : compatibleDocumentArchiveIDs.data(); + } + + ARA::ARASize getAnalyzeableContentTypesCount() const noexcept override + { + return analyzeableContentTypes.size(); + } + + const ARA::ARAContentType* getAnalyzeableContentTypes() const noexcept override + { + return analyzeableContentTypes.empty() ? nullptr : analyzeableContentTypes.data(); + } + + ARA::ARAPlaybackTransformationFlags getSupportedPlaybackTransformationFlags() const noexcept override + { + return supportedPlaybackTransformationFlags; + } + + ARA::PlugIn::DocumentController* createDocumentController (const ARA::PlugIn::PlugInEntry* entry, + const ARA::ARADocumentControllerHostInstance* instance) const noexcept override + { + auto* spec = new SpecialisationType (entry, instance); + return spec->getDocumentController(); + } + + void destroyDocumentController (ARA::PlugIn::DocumentController* controller) const noexcept override + { + delete getSpecialisedDocumentController (controller); + } + + private: + juce::StringArray compatibleDocumentArchiveIDStrings; + std::vector compatibleDocumentArchiveIDs; + std::vector analyzeableContentTypes; + ARA::ARAPlaybackTransformationFlags supportedPlaybackTransformationFlags; + }; + + //============================================================================== + static ARADocumentControllerSpecialisation* getSpecialisedDocumentControllerImpl (ARA::PlugIn::DocumentController*); + + ARADocument* getDocumentImpl(); + + //============================================================================== + class ARADocumentControllerImpl; + std::unique_ptr documentController; +}; + +/** Used to read persisted ARA archives - see doRestoreObjectsFromStream() for details. + + @tags{ARA} +*/ +class ARAInputStream : public InputStream +{ +public: + explicit ARAInputStream (ARA::PlugIn::HostArchiveReader*); + + int64 getPosition() override { return position; } + int64 getTotalLength() override { return size; } + + int read (void*, int) override; + bool setPosition (int64) override; + bool isExhausted() override; + + bool failed() const { return failure; } + +private: + ARA::PlugIn::HostArchiveReader* archiveReader; + int64 position = 0; + int64 size; + bool failure = false; +}; + +/** Used to write persistent ARA archives - see doStoreObjectsToStream() for details. + + @tags{ARA} +*/ +class ARAOutputStream : public OutputStream +{ +public: + explicit ARAOutputStream (ARA::PlugIn::HostArchiveWriter*); + + int64 getPosition() override { return position; } + void flush() override {} + + bool write (const void*, size_t) override; + bool setPosition (int64) override; + +private: + ARA::PlugIn::HostArchiveWriter* archiveWriter; + int64 position = 0; +}; +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentControllerCommon.cpp b/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentControllerCommon.cpp new file mode 100644 index 000000000..2b2364ce9 --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARADocumentControllerCommon.cpp @@ -0,0 +1,71 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +class ARADocumentController : public ARA::PlugIn::DocumentController +{ +public: + using ARA::PlugIn::DocumentController::DocumentController; + + template + Document_t* getDocument() const noexcept { return ARA::PlugIn::DocumentController::getDocument(); } + + //============================================================================== + /** @internal */ + virtual void internalNotifyAudioSourceAnalysisProgressStarted (ARAAudioSource* audioSource) = 0; + + /** @internal */ + virtual void internalNotifyAudioSourceAnalysisProgressUpdated (ARAAudioSource* audioSource, float progress) = 0; + + /** @internal */ + virtual void internalNotifyAudioSourceAnalysisProgressCompleted (ARAAudioSource* audioSource) = 0; + + /** @internal */ + virtual void internalDidUpdateAudioSourceAnalysisProgress (ARAAudioSource* audioSource, + ARAAudioSource::ARAAnalysisProgressState state, + float progress) = 0; + + //============================================================================== + /** @internal */ + virtual void internalNotifyAudioSourceContentChanged (ARAAudioSource* audioSource, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) = 0; + + /** @internal */ + virtual void internalNotifyAudioModificationContentChanged (ARAAudioModification* audioModification, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) = 0; + + /** @internal */ + virtual void internalNotifyPlaybackRegionContentChanged (ARAPlaybackRegion* playbackRegion, + ARAContentUpdateScopes scopeFlags, + bool notifyARAHost) = 0; + + friend class ARAPlaybackRegionReader; +}; + +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.cpp b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.cpp new file mode 100644 index 000000000..918aee434 --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.cpp @@ -0,0 +1,199 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +//============================================================================== +size_t ARADocument::getNumChildren() const noexcept +{ + return getMusicalContexts().size() + getRegionSequences().size() + getAudioSources().size(); +} + +ARAObject* ARADocument::getChild (size_t index) +{ + auto& musicalContexts = getMusicalContexts(); + + if (index < musicalContexts.size()) + return musicalContexts[index]; + + const auto numMusicalContexts = musicalContexts.size(); + auto& regionSequences = getRegionSequences(); + + if (index < numMusicalContexts + regionSequences.size()) + return regionSequences[index - numMusicalContexts]; + + const auto numMusicalContextsAndRegionSequences = numMusicalContexts + regionSequences.size(); + auto& audioSources = getAudioSources(); + + if (index < numMusicalContextsAndRegionSequences + audioSources.size()) + return getAudioSources()[index - numMusicalContextsAndRegionSequences]; + + return nullptr; +} + +//============================================================================== +size_t ARARegionSequence::getNumChildren() const noexcept +{ + return 0; +} + +ARAObject* ARARegionSequence::getChild (size_t) +{ + return nullptr; +} + +Range ARARegionSequence::getTimeRange (ARAPlaybackRegion::IncludeHeadAndTail includeHeadAndTail) const +{ + if (getPlaybackRegions().empty()) + return {}; + + auto startTime = std::numeric_limits::max(); + auto endTime = std::numeric_limits::lowest(); + for (const auto& playbackRegion : getPlaybackRegions()) + { + const auto regionTimeRange = playbackRegion->getTimeRange (includeHeadAndTail); + startTime = jmin (startTime, regionTimeRange.getStart()); + endTime = jmax (endTime, regionTimeRange.getEnd()); + } + return { startTime, endTime }; +} + +double ARARegionSequence::getCommonSampleRate() const +{ + const auto getSampleRate = [] (auto* playbackRegion) + { + return playbackRegion->getAudioModification()->getAudioSource()->getSampleRate(); + }; + + const auto range = getPlaybackRegions(); + const auto sampleRate = range.size() > 0 ? getSampleRate (range.front()) : 0.0; + + if (std::any_of (range.begin(), range.end(), [&] (auto& x) { return getSampleRate (x) != sampleRate; })) + return 0.0; + + return sampleRate; +} + +//============================================================================== +size_t ARAAudioSource::getNumChildren() const noexcept +{ + return getAudioModifications().size(); +} + +ARAObject* ARAAudioSource::getChild (size_t index) +{ + return getAudioModifications()[index]; +} + +void ARAAudioSource::notifyAnalysisProgressStarted() +{ + getDocumentController()->internalNotifyAudioSourceAnalysisProgressStarted (this); +} + +void ARAAudioSource::notifyAnalysisProgressUpdated (float progress) +{ + getDocumentController()->internalNotifyAudioSourceAnalysisProgressUpdated (this, progress); +} + +void ARAAudioSource::notifyAnalysisProgressCompleted() +{ + getDocumentController()->internalNotifyAudioSourceAnalysisProgressCompleted (this); +} + +void ARAAudioSource::notifyContentChanged (ARAContentUpdateScopes scopeFlags, bool notifyARAHost) +{ + getDocumentController()->internalNotifyAudioSourceContentChanged (this, + scopeFlags, + notifyARAHost); +} + +//============================================================================== +size_t ARAAudioModification::getNumChildren() const noexcept +{ + return getPlaybackRegions().size(); +} + +ARAObject* ARAAudioModification::getChild (size_t index) +{ + return getPlaybackRegions()[index]; +} + +void ARAAudioModification::notifyContentChanged (ARAContentUpdateScopes scopeFlags, bool notifyARAHost) +{ + getDocumentController()->internalNotifyAudioModificationContentChanged (this, + scopeFlags, + notifyARAHost); +} + +//============================================================================== +ARAObject* ARAPlaybackRegion::getParent() { return getAudioModification(); } + +Range ARAPlaybackRegion::getTimeRange (IncludeHeadAndTail includeHeadAndTail) const +{ + auto startTime = getStartInPlaybackTime(); + auto endTime = getEndInPlaybackTime(); + + if (includeHeadAndTail == IncludeHeadAndTail::yes) + { + ARA::ARATimeDuration headTime {}, tailTime {}; + getDocumentController()->getPlaybackRegionHeadAndTailTime (toRef (this), &headTime, &tailTime); + startTime -= headTime; + endTime += tailTime; + } + + return { startTime, endTime }; +} + +Range ARAPlaybackRegion::getSampleRange (double sampleRate, IncludeHeadAndTail includeHeadAndTail) const +{ + const auto timeRange = getTimeRange (includeHeadAndTail); + + return { ARA::samplePositionAtTime (timeRange.getStart(), sampleRate), + ARA::samplePositionAtTime (timeRange.getEnd(), sampleRate) }; +} + +double ARAPlaybackRegion::getHeadTime() const +{ + ARA::ARATimeDuration headTime {}, tailTime {}; + getDocumentController()->getPlaybackRegionHeadAndTailTime (toRef (this), &headTime, &tailTime); + return headTime; +} + +double ARAPlaybackRegion::getTailTime() const +{ + ARA::ARATimeDuration headTime {}, tailTime {}; + getDocumentController()->getPlaybackRegionHeadAndTailTime (toRef (this), &headTime, &tailTime); + return tailTime; +} + +void ARAPlaybackRegion::notifyContentChanged (ARAContentUpdateScopes scopeFlags, bool notifyARAHost) +{ + getDocumentController()->internalNotifyPlaybackRegionContentChanged (this, + scopeFlags, + notifyARAHost); +} + +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.h b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.h new file mode 100644 index 000000000..021d25038 --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.h @@ -0,0 +1,1145 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +namespace juce +{ + +class ARADocumentController; +class ARADocument; +class ARAMusicalContext; +class ARARegionSequence; +class ARAAudioSource; +class ARAAudioModification; +class ARAPlaybackRegion; + +/** Base class used by the JUCE ARA model objects to provide listenable interfaces. + + @tags{ARA} +*/ +template +class JUCE_API ARAListenableModelClass +{ +public: + /** Constructor. */ + ARAListenableModelClass() = default; + + /** Destructor. */ + virtual ~ARAListenableModelClass() = default; + + /** Subscribe \p l to notified by changes to the object. + @param l The listener instance. + */ + void addListener (ListenerType* l) { listeners.add (l); } + + /** Unsubscribe \p l from object notifications. + @param l The listener instance. + */ + void removeListener (ListenerType* l) { listeners.remove (l); } + + /** Call the provided callback for each of the added listeners. */ + template + void notifyListeners (Callback&& callback) + { + listeners.call (callback); + } + +private: + ListenerList listeners; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARAListenableModelClass) +}; + +/** Create a derived implementation of this class and pass it to ARAObject::visit() to retrieve the + concrete type of a model object. + + Combined with ARAObject::traverse() on the ARADocument object it is possible to discover the + entire model graph. + + Note that the references passed to the visit member functions are only guaranteed to live for + the duration of the function call, so don't store pointers to these objects! + + @tags{Audio} +*/ +class ARAObjectVisitor +{ +public: + /** Destructor. */ + virtual ~ARAObjectVisitor() = default; + + /** Called when visiting an ARADocument object. */ + virtual void visitDocument (juce::ARADocument&) {} + + /** Called when visiting an ARAMusicalContext object. */ + virtual void visitMusicalContext (juce::ARAMusicalContext&) {} + + /** Called when visiting an ARARegionSequence object. */ + virtual void visitRegionSequence (juce::ARARegionSequence&) {} + + /** Called when visiting an ARAPlaybackRegion object. */ + virtual void visitPlaybackRegion (juce::ARAPlaybackRegion&) {} + + /** Called when visiting an ARAAudioModification object. */ + virtual void visitAudioModification (juce::ARAAudioModification&) {} + + /** Called when visiting an ARAAudioSource object. */ + virtual void visitAudioSource (juce::ARAAudioSource&) {} +}; + +/** Common base class for all JUCE ARA model objects to aid with the discovery and traversal of the + entire ARA model graph. + + @tags{ARA} +*/ +class ARAObject +{ +public: + /** Destructor. */ + virtual ~ARAObject() = default; + + /** Returns the number of ARA model objects aggregated by this object. Objects that are merely + referred to, but not aggregated by the current object are not included in this count, e.g. + a referenced RegionSequence does not count as a child of the referring PlaybackRegion. + + See the ARA documentation's ARA Model Graph Overview for more details. + */ + virtual size_t getNumChildren() const noexcept = 0; + + /** Returns the child object associated with the given index. + + The index should be smaller than the value returned by getNumChildren(). + + Note that the index of a particular object may change when the ARA model graph is edited. + */ + virtual ARAObject* getChild (size_t index) = 0; + + /** Returns the ARA model object that aggregates this object. + + Returns nullptr for the ARADocument root object. + */ + virtual ARAObject* getParent() = 0; + + /** Implements a depth first traversal of the ARA model graph starting from the current object, + and visiting its children recursively. + + The provided function should accept a single ARAObject& parameter. + */ + template + void traverse (Fn&& fn) + { + fn (*this); + + for (size_t i = 0; i < getNumChildren(); ++i) + { + getChild (i)->traverse (fn); + } + } + + /** Allows the retrieval of the concrete type of a model object. + + To use this, create a new class derived from ARAObjectVisitor and override its functions + depending on which concrete types you are interested in. + + Calling this function inside the function passed to ARAObject::traverse() allows you to + map the entire ARA model graph. + */ + virtual void visit (ARAObjectVisitor& visitor) = 0; +}; + +/** A base class for listeners that want to know about changes to an ARADocument object. + + Use ARADocument::addListener() to register your listener with an ARADocument. + + @tags{ARA} +*/ +class JUCE_API ARADocumentListener +{ +public: + /** Destructor */ + virtual ~ARADocumentListener() = default; + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN + + /** Called before the document enters an editing state. + @param document The document about to enter an editing state. + */ + virtual void willBeginEditing (ARADocument* document) + { + ignoreUnused (document); + } + + /** Called after the document exits an editing state. + @param document The document about exit an editing state. + */ + virtual void didEndEditing (ARADocument* document) + { + ignoreUnused (document); + } + + /** Called before sending model updates do the host. + @param document The document whose model updates are about to be sent. + */ + virtual void willNotifyModelUpdates (ARADocument* document) + { + ignoreUnused (document); + } + + /** Called after sending model updates do the host. + @param document The document whose model updates have just been sent. + */ + virtual void didNotifyModelUpdates (ARADocument* document) + { + ignoreUnused (document); + } + + /** Called before the document's properties are updated. + @param document The document whose properties will be updated. + @param newProperties The document properties that will be assigned to \p document. + */ + virtual void willUpdateDocumentProperties (ARADocument* document, + ARA::PlugIn::PropertiesPtr newProperties) + { + ignoreUnused (document, newProperties); + } + + /** Called after the document's properties are updated. + @param document The document whose properties were updated. + */ + virtual void didUpdateDocumentProperties (ARADocument* document) + { + ignoreUnused (document); + } + + /** Called after a musical context is added to the document. + @param document The document that \p musicalContext was added to. + @param musicalContext The musical context that was added to \p document. + */ + virtual void didAddMusicalContextToDocument (ARADocument* document, ARAMusicalContext* musicalContext) + { + ignoreUnused (document, musicalContext); + } + + /** Called before a musical context is removed from the document. + @param document The document that \p musicalContext will be removed from. + @param musicalContext The musical context that will be removed from \p document. + */ + virtual void willRemoveMusicalContextFromDocument (ARADocument* document, + ARAMusicalContext* musicalContext) + { + ignoreUnused (document, musicalContext); + } + + /** Called after the musical contexts are reordered in an ARA document + + Musical contexts are sorted by their order index - + this callback signals a change in this ordering within the document. + + @param document The document with reordered musical contexts. + */ + virtual void didReorderMusicalContextsInDocument (ARADocument* document) + { + ignoreUnused (document); + } + + /** Called after a region sequence is added to the document. + @param document The document that \p regionSequence was added to. + @param regionSequence The region sequence that was added to \p document. + */ + virtual void didAddRegionSequenceToDocument (ARADocument* document, ARARegionSequence* regionSequence) + { + ignoreUnused (document, regionSequence); + } + + /** Called before a region sequence is removed from the document. + @param document The document that \p regionSequence will be removed from. + @param regionSequence The region sequence that will be removed from \p document. + */ + virtual void willRemoveRegionSequenceFromDocument (ARADocument* document, + ARARegionSequence* regionSequence) + { + ignoreUnused (document, regionSequence); + } + + /** Called after the region sequences are reordered in an ARA document + + Region sequences are sorted by their order index - + this callback signals a change in this ordering within the document. + + @param document The document with reordered region sequences. + */ + virtual void didReorderRegionSequencesInDocument (ARADocument* document) + { + ignoreUnused (document); + } + + /** Called after an audio source is added to the document. + @param document The document that \p audioSource was added to. + @param audioSource The audio source that was added to \p document. + */ + virtual void didAddAudioSourceToDocument (ARADocument* document, ARAAudioSource* audioSource) + { + ignoreUnused (document, audioSource); + } + + /** Called before an audio source is removed from the document. + @param document The document that \p audioSource will be removed from . + @param audioSource The audio source that will be removed from \p document. + */ + virtual void willRemoveAudioSourceFromDocument (ARADocument* document, ARAAudioSource* audioSource) + { + ignoreUnused (document, audioSource); + } + + /** Called before the document is destroyed by the ARA host. + @param document The document that will be destroyed. + */ + virtual void willDestroyDocument (ARADocument* document) + { + ignoreUnused (document); + } + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END +}; + +//============================================================================== +/** Base class representing an ARA document. + + @tags{ARA} +*/ +class JUCE_API ARADocument : public ARA::PlugIn::Document, + public ARAListenableModelClass, + public ARAObject +{ +public: + using PropertiesPtr = ARA::PlugIn::PropertiesPtr; + using Listener = ARADocumentListener; + + using ARA::PlugIn::Document::Document; + + /** Returns the result of ARA::PlugIn::Document::getAudioSources() with the pointers within + cast to ARAAudioSource*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateAudioSource(), then + you can use the template parameter to cast the pointers to your subclass of ARAAudioSource. + */ + template + const std::vector& getAudioSources() const noexcept + { + return ARA::PlugIn::Document::getAudioSources(); + } + + /** Returns the result of ARA::PlugIn::Document::getMusicalContexts() with the pointers within + cast to ARAMusicalContext*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateMusicalContext(), then + you can use the template parameter to cast the pointers to your subclass of ARAMusicalContext. + */ + template + const std::vector& getMusicalContexts() const noexcept + { + return ARA::PlugIn::Document::getMusicalContexts(); + } + + /** Returns the result of ARA::PlugIn::Document::getRegionSequences() with the pointers within + cast to ARARegionSequence*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateRegionSequence(), then + you can use the template parameter to cast the pointers to your subclass of ARARegionSequence. + */ + template + const std::vector& getRegionSequences() const noexcept + { + return ARA::PlugIn::Document::getRegionSequences(); + } + + size_t getNumChildren() const noexcept override; + + ARAObject* getChild (size_t index) override; + + ARAObject* getParent() override { return nullptr; } + + void visit (ARAObjectVisitor& visitor) override { visitor.visitDocument (*this); } +}; + +/** A base class for listeners that want to know about changes to an ARAMusicalContext object. + + Use ARAMusicalContext::addListener() to register your listener with an ARAMusicalContext. + + @tags{ARA} +*/ +class JUCE_API ARAMusicalContextListener +{ +public: + virtual ~ARAMusicalContextListener() = default; + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN + + /** Called before the musical context's properties are updated. + @param musicalContext The musical context whose properties will be updated. + @param newProperties The musical context properties that will be assigned to \p musicalContext. + */ + virtual void willUpdateMusicalContextProperties (ARAMusicalContext* musicalContext, + ARA::PlugIn::PropertiesPtr newProperties) + { + ignoreUnused (musicalContext, newProperties); + } + + /** Called after the musical context's properties are updated by the host. + @param musicalContext The musical context whose properties were updated. + */ + virtual void didUpdateMusicalContextProperties (ARAMusicalContext* musicalContext) + { + ignoreUnused (musicalContext); + } + + /** Called when the musical context's content (i.e tempo entries or chords) changes. + @param musicalContext The musical context with updated content. + @param scopeFlags The scope of the content update indicating what has changed. + */ + virtual void doUpdateMusicalContextContent (ARAMusicalContext* musicalContext, + ARAContentUpdateScopes scopeFlags) + { + ignoreUnused (musicalContext, scopeFlags); + } + + /** Called after a region sequence is added to the musical context. + @param musicalContext The musical context that \p regionSequence was added to. + @param regionSequence The region sequence that was added to \p musicalContext. + */ + virtual void didAddRegionSequenceToMusicalContext (ARAMusicalContext* musicalContext, + ARARegionSequence* regionSequence) + { + ignoreUnused (musicalContext, regionSequence); + } + + /** Called before a region sequence is removed from the musical context. + @param musicalContext The musical context that \p regionSequence will be removed from. + @param regionSequence The region sequence that will be removed from \p musicalContext. + */ + virtual void willRemoveRegionSequenceFromMusicalContext (ARAMusicalContext* musicalContext, + ARARegionSequence* regionSequence) + { + ignoreUnused (musicalContext, regionSequence); + } + + /** Called after the region sequences are reordered in an ARA MusicalContext + + Region sequences are sorted by their order index - + this callback signals a change in this ordering within the musical context. + + @param musicalContext The musical context with reordered region sequences. + */ + virtual void didReorderRegionSequencesInMusicalContext (ARAMusicalContext* musicalContext) + { + ignoreUnused (musicalContext); + } + + /** Called before the musical context is destroyed. + @param musicalContext The musical context that will be destoyed. + */ + virtual void willDestroyMusicalContext (ARAMusicalContext* musicalContext) + { + ignoreUnused (musicalContext); + } + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END +}; + +//============================================================================== +/** Base class representing an ARA musical context. + + @tags{ARA} +*/ +class JUCE_API ARAMusicalContext : public ARA::PlugIn::MusicalContext, + public ARAListenableModelClass, + public ARAObject +{ +public: + using PropertiesPtr = ARA::PlugIn::PropertiesPtr; + using Listener = ARAMusicalContextListener; + + using ARA::PlugIn::MusicalContext::MusicalContext; + + /** Returns the result of ARA::PlugIn::MusicalContext::getDocument() with the pointer cast + to ARADocument*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateDocument(), then you + can use the template parameter to cast the pointers to your subclass of ARADocument. + */ + template + Document_t* getDocument() const noexcept + { + return ARA::PlugIn::MusicalContext::getDocument(); + } + + /** Returns the result of ARA::PlugIn::MusicalContext::getRegionSequences() with the pointers + within cast to ARARegionSequence*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateRegionSequence(), then you + can use the template parameter to cast the pointers to your subclass of ARARegionSequence. + */ + template + const std::vector& getRegionSequences() const noexcept + { + return ARA::PlugIn::MusicalContext::getRegionSequences(); + } + + size_t getNumChildren() const noexcept override { return 0; } + + ARAObject* getChild (size_t) override { return nullptr; } + + ARAObject* getParent() override { return getDocument(); } + + void visit (ARAObjectVisitor& visitor) override { visitor.visitMusicalContext (*this); } +}; + +/** A base class for listeners that want to know about changes to an ARAPlaybackRegion object. + + Use ARAPlaybackRegion::addListener() to register your listener with an ARAPlaybackRegion. + + @tags{ARA} +*/ +class JUCE_API ARAPlaybackRegionListener +{ +public: + /** Destructor. */ + virtual ~ARAPlaybackRegionListener() = default; + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN + + /** Called before the playback region's properties are updated. + @param playbackRegion The playback region whose properties will be updated. + @param newProperties The playback region properties that will be assigned to \p playbackRegion. + */ + virtual void willUpdatePlaybackRegionProperties (ARAPlaybackRegion* playbackRegion, + ARA::PlugIn::PropertiesPtr newProperties) + { + ignoreUnused (playbackRegion, newProperties); + } + + /** Called after the playback region's properties are updated. + @param playbackRegion The playback region whose properties were updated. + */ + virtual void didUpdatePlaybackRegionProperties (ARAPlaybackRegion* playbackRegion) + { + ignoreUnused (playbackRegion); + } + + /** Called when the playback region's content (i.e. samples or notes) changes. + @param playbackRegion The playback region with updated content. + @param scopeFlags The scope of the content update. + */ + virtual void didUpdatePlaybackRegionContent (ARAPlaybackRegion* playbackRegion, + ARAContentUpdateScopes scopeFlags) + { + ignoreUnused (playbackRegion, scopeFlags); + } + + /** Called before the playback region is destroyed. + @param playbackRegion The playback region that will be destoyed. + */ + virtual void willDestroyPlaybackRegion (ARAPlaybackRegion* playbackRegion) + { + ignoreUnused (playbackRegion); + } + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END +}; + +//============================================================================== +/** Base class representing an ARA playback region. + + @tags{ARA} +*/ +class JUCE_API ARAPlaybackRegion : public ARA::PlugIn::PlaybackRegion, + public ARAListenableModelClass, + public ARAObject +{ +public: + using PropertiesPtr = ARA::PlugIn::PropertiesPtr; + using Listener = ARAPlaybackRegionListener; + + using ARA::PlugIn::PlaybackRegion::PlaybackRegion; + + /** Returns the result of ARA::PlugIn::PlaybackRegion::getAudioModification() with the pointer cast + to ARAAudioModification*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateAudioModification(), then you + can use the template parameter to cast the pointers to your subclass of ARAAudioModification. + */ + template + AudioModification_t* getAudioModification() const noexcept + { + return ARA::PlugIn::PlaybackRegion::getAudioModification(); + } + + /** Returns the result of ARA::PlugIn::PlaybackRegion::getRegionSequence() with the pointer cast + to ARARegionSequence*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateRegionSequence(), then you + can use the template parameter to cast the pointers to your subclass of ARARegionSequence. + */ + template + RegionSequence_t* getRegionSequence() const noexcept + { + return ARA::PlugIn::PlaybackRegion::getRegionSequence(); + } + + size_t getNumChildren() const noexcept override { return 0; } + + ARAObject* getChild (size_t) override { return nullptr; } + + ARAObject* getParent() override; + + void visit (ARAObjectVisitor& visitor) override { visitor.visitPlaybackRegion (*this); } + + /** Used in getTimeRange to indicate whether the head and tail times should be included in the result. + */ + enum class IncludeHeadAndTail { no, yes }; + + /** Returns the playback time range of this playback region. + @param includeHeadAndTail Whether or not the range includes the head and tail + time of all playback regions in the sequence. + */ + Range getTimeRange (IncludeHeadAndTail includeHeadAndTail = IncludeHeadAndTail::no) const; + + /** Returns the playback sample range of this playback region. + @param sampleRate The rate at which the sample position should be calculated from + the time range. + @param includeHeadAndTail Whether or not the range includes the head and tail + time of all playback regions in the sequence. + */ + Range getSampleRange (double sampleRate, IncludeHeadAndTail includeHeadAndTail = IncludeHeadAndTail::no) const; + + /** Get the head length in seconds before the start of the region's playback time. */ + double getHeadTime() const; + + /** Get the tail length in seconds after the end of the region's playback time. */ + double getTailTime() const; + + /** Notify the ARA host and any listeners of a content update initiated by the plug-in. + This must be called by the plug-in model management code on the message thread whenever updating + the internal content representation, such as after the user edited the pitch of a note in the + underlying audio modification. + Listeners will be notified immediately. If \p notifyARAHost is true, a notification to the host + will be enqueued and sent out the next time it polls for updates. + + @param scopeFlags The scope of the content update. + @param notifyARAHost If true, the ARA host will be notified of the content change. + */ + void notifyContentChanged (ARAContentUpdateScopes scopeFlags, bool notifyARAHost); +}; + +/** A base class for listeners that want to know about changes to an ARARegionSequence object. + + Use ARARegionSequence::addListener() to register your listener with an ARARegionSequence. + + @tags{ARA} +*/ +class JUCE_API ARARegionSequenceListener +{ +public: + /** Destructor. */ + virtual ~ARARegionSequenceListener() = default; + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN + + /** Called before the region sequence's properties are updated. + @param regionSequence The region sequence whose properties will be updated. + @param newProperties The region sequence properties that will be assigned to \p regionSequence. + */ + virtual void willUpdateRegionSequenceProperties (ARARegionSequence* regionSequence, + ARA::PlugIn::PropertiesPtr newProperties) + { + ignoreUnused (regionSequence, newProperties); + } + + /** Called after the region sequence's properties are updated. + @param regionSequence The region sequence whose properties were updated. + */ + virtual void didUpdateRegionSequenceProperties (ARARegionSequence* regionSequence) + { + ignoreUnused (regionSequence); + } + + /** Called before a playback region is removed from the region sequence. + @param regionSequence The region sequence that \p playbackRegion will be removed from. + @param playbackRegion The playback region that will be removed from \p regionSequence. + */ + virtual void willRemovePlaybackRegionFromRegionSequence (ARARegionSequence* regionSequence, + ARAPlaybackRegion* playbackRegion) + { + ignoreUnused (regionSequence, playbackRegion); + } + + /** Called after a playback region is added to the region sequence. + @param regionSequence The region sequence that \p playbackRegion was added to. + @param playbackRegion The playback region that was added to \p regionSequence. + */ + virtual void didAddPlaybackRegionToRegionSequence (ARARegionSequence* regionSequence, + ARAPlaybackRegion* playbackRegion) + { + ignoreUnused (regionSequence, playbackRegion); + } + + /** Called before the region sequence is destroyed. + @param regionSequence The region sequence that will be destoyed. + */ + virtual void willDestroyRegionSequence (ARARegionSequence* regionSequence) + { + ignoreUnused (regionSequence); + } + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END +}; + +//============================================================================== +/** Base class representing an ARA region sequence. + + @tags{ARA} +*/ +class JUCE_API ARARegionSequence : public ARA::PlugIn::RegionSequence, + public ARAListenableModelClass, + public ARAObject +{ +public: + using PropertiesPtr = ARA::PlugIn::PropertiesPtr; + using Listener = ARARegionSequenceListener; + + using ARA::PlugIn::RegionSequence::RegionSequence; + + /** Returns the result of ARA::PlugIn::RegionSequence::getDocument() with the pointer cast + to ARADocument*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateDocument(), then you + can use the template parameter to cast the pointers to your subclass of ARADocument. + */ + template + Document_t* getDocument() const noexcept + { + return ARA::PlugIn::RegionSequence::getDocument(); + } + + /** Returns the result of ARA::PlugIn::RegionSequence::getMusicalContext() with the pointer cast + to ARAMusicalContext*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateMusicalContext(), then you + can use the template parameter to cast the pointers to your subclass of ARAMusicalContext. + */ + template + MusicalContext_t* getMusicalContext() const noexcept + { + return ARA::PlugIn::RegionSequence::getMusicalContext(); + } + + /** Returns the result of ARA::PlugIn::RegionSequence::getPlaybackRegions() with the pointers within cast + to ARAPlaybackRegion*. + + If you have overridden ARADocumentControllerSpecialisation::doCreatePlaybackRegion(), then you + can use the template parameter to cast the pointers to your subclass of ARAPlaybackRegion. + */ + template + const std::vector& getPlaybackRegions() const noexcept + { + return ARA::PlugIn::RegionSequence::getPlaybackRegions(); + } + + size_t getNumChildren() const noexcept override; + + ARAObject* getChild (size_t index) override; + + ARAObject* getParent () override { return getDocument(); } + + void visit (ARAObjectVisitor& visitor) override { visitor.visitRegionSequence (*this); } + + /** Returns the playback time range covered by the regions in this sequence. + @param includeHeadAndTail Whether or not the range includes the playback region's head and tail time. + */ + Range getTimeRange (ARAPlaybackRegion::IncludeHeadAndTail includeHeadAndTail = ARAPlaybackRegion::IncludeHeadAndTail::no) const; + + /** If all audio sources used by the playback regions in this region sequence have the same + sample rate, this rate is returned here, otherwise 0.0 is returned. + + If the region sequence has no playback regions, this also returns 0.0. + */ + double getCommonSampleRate() const; +}; + +/** A base class for listeners that want to know about changes to an ARAAudioSource object. + + Use ARAAudioSource::addListener() to register your listener with an ARAAudioSource. + + @tags{ARA} +*/ +class JUCE_API ARAAudioSourceListener +{ +public: + /** Destructor. */ + virtual ~ARAAudioSourceListener() = default; + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN + + /** Called before the audio source's properties are updated. + @param audioSource The audio source whose properties will be updated. + @param newProperties The audio source properties that will be assigned to \p audioSource. + */ + virtual void willUpdateAudioSourceProperties (ARAAudioSource* audioSource, + ARA::PlugIn::PropertiesPtr newProperties) + { + ignoreUnused (audioSource, newProperties); + } + + /** Called after the audio source's properties are updated. + @param audioSource The audio source whose properties were updated. + */ + virtual void didUpdateAudioSourceProperties (ARAAudioSource* audioSource) + { + ignoreUnused (audioSource); + } + + /** Called when the audio source's content (i.e. samples or notes) changes. + @param audioSource The audio source with updated content. + @param scopeFlags The scope of the content update. + */ + virtual void doUpdateAudioSourceContent (ARAAudioSource* audioSource, ARAContentUpdateScopes scopeFlags) + { + ignoreUnused (audioSource, scopeFlags); + } + + /** Called to notify progress when an audio source is being analyzed. + @param audioSource The audio source being analyzed. + @param state Indicates start, intermediate update or completion of the analysis. + @param progress Progress normalized to the 0..1 range. + */ + virtual void didUpdateAudioSourceAnalysisProgress (ARAAudioSource* audioSource, + ARA::ARAAnalysisProgressState state, + float progress) + { + ignoreUnused (audioSource, state, progress); + } + + /** Called before access to an audio source's samples is enabled or disabled. + @param audioSource The audio source whose sample access state will be changed. + @param enable A bool indicating whether or not sample access will be enabled or disabled. + */ + virtual void willEnableAudioSourceSamplesAccess (ARAAudioSource* audioSource, bool enable) + { + ignoreUnused (audioSource, enable); + } + + /** Called after access to an audio source's samples is enabled or disabled. + @param audioSource The audio source whose sample access state was changed. + @param enable A bool indicating whether or not sample access was enabled or disabled. + */ + virtual void didEnableAudioSourceSamplesAccess (ARAAudioSource* audioSource, bool enable) + { + ignoreUnused (audioSource, enable); + } + + /** Called before an audio source is activated or deactivated when being removed / added from the host's undo history. + @param audioSource The audio source that will be activated or deactivated + @param deactivate A bool indicating whether \p audioSource was deactivated or activated. + */ + virtual void willDeactivateAudioSourceForUndoHistory (ARAAudioSource* audioSource, bool deactivate) + { + ignoreUnused (audioSource, deactivate); + } + + /** Called after an audio source is activated or deactivated when being removed / added from the host's undo history. + @param audioSource The audio source that was activated or deactivated + @param deactivate A bool indicating whether \p audioSource was deactivated or activated. + */ + virtual void didDeactivateAudioSourceForUndoHistory (ARAAudioSource* audioSource, bool deactivate) + { + ignoreUnused (audioSource, deactivate); + } + + /** Called after an audio modification is added to the audio source. + @param audioSource The region sequence that \p audioModification was added to. + @param audioModification The playback region that was added to \p audioSource. + */ + virtual void didAddAudioModificationToAudioSource (ARAAudioSource* audioSource, + ARAAudioModification* audioModification) + { + ignoreUnused (audioSource, audioModification); + } + + /** Called before an audio modification is removed from the audio source. + @param audioSource The audio source that \p audioModification will be removed from. + @param audioModification The audio modification that will be removed from \p audioSource. + */ + virtual void willRemoveAudioModificationFromAudioSource (ARAAudioSource* audioSource, + ARAAudioModification* audioModification) + { + ignoreUnused (audioSource, audioModification); + } + + /** Called before the audio source is destroyed. + @param audioSource The audio source that will be destoyed. + */ + virtual void willDestroyAudioSource (ARAAudioSource* audioSource) + { + ignoreUnused (audioSource); + } + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END +}; + +//============================================================================== +/** Base class representing an ARA audio source. + + @tags{ARA} +*/ +class JUCE_API ARAAudioSource : public ARA::PlugIn::AudioSource, + public ARAListenableModelClass, + public ARAObject +{ +public: + using PropertiesPtr = ARA::PlugIn::PropertiesPtr; + using ARAAnalysisProgressState = ARA::ARAAnalysisProgressState; + using Listener = ARAAudioSourceListener; + + using ARA::PlugIn::AudioSource::AudioSource; + + /** Returns the result of ARA::PlugIn::AudioSource::getDocument() with the pointer cast + to ARADocument*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateDocument(), then you + can use the template parameter to cast the pointers to your subclass of ARADocument. + */ + template + Document_t* getDocument() const noexcept + { + return ARA::PlugIn::AudioSource::getDocument(); + } + + /** Returns the result of ARA::PlugIn::AudioSource::getAudioModifications() with the pointers + within cast to ARAAudioModification*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateAudioModification(), + then you can use the template parameter to cast the pointers to your subclass of + ARAAudioModification. + */ + template + const std::vector& getAudioModifications() const noexcept + { + return ARA::PlugIn::AudioSource::getAudioModifications(); + } + + size_t getNumChildren() const noexcept override; + + ARAObject* getChild (size_t index) override; + + ARAObject* getParent() override { return getDocument(); } + + void visit (ARAObjectVisitor& visitor) override { visitor.visitAudioSource (*this); } + + /** Notify the ARA host and any listeners of analysis progress. + Contrary to most ARA functions, this call can be made from any thread. + The implementation will enqueue these notifications and later post them from the message thread. + Calling code must ensure start and completion state are always balanced, + and must send updates in ascending order. + */ + void notifyAnalysisProgressStarted(); + + /** \copydoc notifyAnalysisProgressStarted + @param progress Progress normalized to the 0..1 range. + */ + void notifyAnalysisProgressUpdated (float progress); + + /** \copydoc notifyAnalysisProgressStarted + */ + void notifyAnalysisProgressCompleted(); + + /** Notify the ARA host and any listeners of a content update initiated by the plug-in. + This must be called by the plug-in model management code on the message thread whenever updating + the internal content representation, such as after successfully analyzing a new tempo map. + Listeners will be notified immediately. If \p notifyARAHost is true, a notification to the host + will be enqueued and sent out the next time it polls for updates. + \p notifyARAHost must be false if the update was triggered by the host via doUpdateAudioSourceContent(). + Furthermore, \p notifyARAHost must be false if the updated content is being restored from an archive. + + @param scopeFlags The scope of the content update. + @param notifyARAHost If true, the ARA host will be notified of the content change. + */ + void notifyContentChanged (ARAContentUpdateScopes scopeFlags, bool notifyARAHost); + +public: + friend ARADocumentController; + ARA::PlugIn::AnalysisProgressTracker internalAnalysisProgressTracker; +}; + +/** A base class for listeners that want to know about changes to an ARAAudioModification object. + + Use ARAAudioModification::addListener() to register your listener with an ARAAudioModification. + + @tags{ARA} +*/ +class JUCE_API ARAAudioModificationListener +{ +public: + /** Destructor. */ + virtual ~ARAAudioModificationListener() = default; + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN + + /** Called before the audio modification's properties are updated. + @param audioModification The audio modification whose properties will be updated. + @param newProperties The audio modification properties that will be assigned to \p audioModification. + */ + virtual void willUpdateAudioModificationProperties (ARAAudioModification* audioModification, + ARA::PlugIn::PropertiesPtr newProperties) + { + ignoreUnused (audioModification, newProperties); + } + + /** Called after the audio modification's properties are updated. + @param audioModification The audio modification whose properties were updated. + */ + virtual void didUpdateAudioModificationProperties (ARAAudioModification* audioModification) + { + ignoreUnused (audioModification); + } + + /** Called when the audio modification's content (i.e. samples or notes) changes. + @param audioModification The audio modification with updated content. + @param scopeFlags The scope of the content update. + */ + virtual void didUpdateAudioModificationContent (ARAAudioModification* audioModification, ARAContentUpdateScopes scopeFlags) + { + ignoreUnused (audioModification, scopeFlags); + } + + /** Called before an audio modification is activated or deactivated when being removed / added from the host's undo history. + @param audioModification The audio modification that was activated or deactivated + @param deactivate A bool indicating whether \p audioModification was deactivated or activated. + */ + virtual void willDeactivateAudioModificationForUndoHistory (ARAAudioModification* audioModification, bool deactivate) + { + ignoreUnused (audioModification, deactivate); + } + + /** Called after an audio modification is activated or deactivated when being removed / added from the host's undo history. + @param audioModification The audio modification that was activated or deactivated + @param deactivate A bool indicating whether \p audioModification was deactivated or activated. + */ + virtual void didDeactivateAudioModificationForUndoHistory (ARAAudioModification* audioModification, bool deactivate) + { + ignoreUnused (audioModification, deactivate); + } + + /** Called after a playback region is added to the audio modification. + @param audioModification The audio modification that \p playbackRegion was added to. + @param playbackRegion The playback region that was added to \p audioModification. + */ + virtual void didAddPlaybackRegionToAudioModification (ARAAudioModification* audioModification, + ARAPlaybackRegion* playbackRegion) + { + ignoreUnused (audioModification, playbackRegion); + } + + /** Called before a playback region is removed from the audio modification. + @param audioModification The audio modification that \p playbackRegion will be removed from. + @param playbackRegion The playback region that will be removed from \p audioModification. + */ + virtual void willRemovePlaybackRegionFromAudioModification (ARAAudioModification* audioModification, + ARAPlaybackRegion* playbackRegion) + { + ignoreUnused (audioModification, playbackRegion); + } + + /** Called before the audio modification is destroyed. + @param audioModification The audio modification that will be destoyed. + */ + virtual void willDestroyAudioModification (ARAAudioModification* audioModification) + { + ignoreUnused (audioModification); + } + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END +}; + +//============================================================================== +/** Base class representing an ARA audio modification. + + @tags{ARA} +*/ +class JUCE_API ARAAudioModification : public ARA::PlugIn::AudioModification, + public ARAListenableModelClass, + public ARAObject +{ +public: + using PropertiesPtr = ARA::PlugIn::PropertiesPtr; + using Listener = ARAAudioModificationListener; + + using ARA::PlugIn::AudioModification::AudioModification; + + /** Returns the result of ARA::PlugIn::AudioModification::getAudioSource() with the pointer cast + to ARAAudioSource*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateAudioSource(), then you + can use the template parameter to cast the pointers to your subclass of ARAAudioSource. + */ + template + AudioSource_t* getAudioSource() const noexcept + { + return ARA::PlugIn::AudioModification::getAudioSource(); + } + + /** Returns the result of ARA::PlugIn::AudioModification::getPlaybackRegions() with the + pointers within cast to ARAPlaybackRegion*. + + If you have overridden ARADocumentControllerSpecialisation::doCreatePlaybackRegion(), then + you can use the template parameter to cast the pointers to your subclass of ARAPlaybackRegion. + */ + template + const std::vector& getPlaybackRegions() const noexcept + { + return ARA::PlugIn::AudioModification::getPlaybackRegions(); + } + + size_t getNumChildren() const noexcept override; + + ARAObject* getChild (size_t index) override; + + ARAObject* getParent() override { return getAudioSource(); } + + void visit (ARAObjectVisitor& visitor) override { visitor.visitAudioModification (*this); } + + /** Notify the ARA host and any listeners of a content update initiated by the plug-in. + This must be called by the plug-in model management code on the message thread whenever updating + the internal content representation, such as after the user editing the pitch of a note. + Listeners will be notified immediately. If \p notifyARAHost is true, a notification to the host + will be enqueued and sent out the next time it polls for updates. + \p notifyARAHost must be false if the updated content is being restored from an archive. + + @param scopeFlags The scope of the content update. + @param notifyARAHost If true, the ARA host will be notified of the content change. + */ + void notifyContentChanged (ARAContentUpdateScopes scopeFlags, bool notifyARAHost); +}; + +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.cpp b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.cpp new file mode 100644 index 000000000..f5535412d --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.cpp @@ -0,0 +1,92 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include "juce_ARAPlugInInstanceRoles.h" + +namespace juce +{ + +bool ARARenderer::processBlock (AudioBuffer& buffer, + AudioProcessor::Realtime realtime, + const AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept +{ + ignoreUnused (buffer, realtime, positionInfo); + + // If you hit this assertion then either the caller called the double + // precision version of processBlock on a processor which does not support it + // (i.e. supportsDoublePrecisionProcessing() returns false), or the implementation + // of the ARARenderer forgot to override the double precision version of this method + jassertfalse; + + return false; +} + +//============================================================================== +#if ARA_VALIDATE_API_CALLS +void ARAPlaybackRenderer::addPlaybackRegion (ARA::ARAPlaybackRegionRef playbackRegionRef) noexcept +{ + if (araExtension) + ARA_VALIDATE_API_STATE (! araExtension->isPrepared); + + ARA::PlugIn::PlaybackRenderer::addPlaybackRegion (playbackRegionRef); +} + +void ARAPlaybackRenderer::removePlaybackRegion (ARA::ARAPlaybackRegionRef playbackRegionRef) noexcept +{ + if (araExtension) + ARA_VALIDATE_API_STATE (! araExtension->isPrepared); + + ARA::PlugIn::PlaybackRenderer::removePlaybackRegion (playbackRegionRef); +} +#endif + +//============================================================================== +void ARAEditorView::doNotifySelection (const ARA::PlugIn::ViewSelection* viewSelection) noexcept +{ + listeners.call ([&] (Listener& l) + { + l.onNewSelection (*viewSelection); + }); +} + +void ARAEditorView::doNotifyHideRegionSequences (std::vector const& regionSequences) noexcept +{ + listeners.call ([&] (Listener& l) + { + l.onHideRegionSequences (ARA::vector_cast (regionSequences)); + }); +} + +void ARAEditorView::addListener (Listener* l) +{ + listeners.add (l); +} + +void ARAEditorView::removeListener (Listener* l) +{ + listeners.remove (l); +} + +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h new file mode 100644 index 000000000..c03fb4ee8 --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h @@ -0,0 +1,271 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +namespace juce +{ + +//============================================================================== +/** Base class for a renderer fulfilling either the ARAPlaybackRenderer or the ARAEditorRenderer role. + + Instances of either subclass are constructed by the DocumentController. + + @tags{ARA} +*/ +class JUCE_API ARARenderer +{ +public: + enum class AlwaysNonRealtime { no, yes }; + + virtual ~ARARenderer() = default; + + /** Initialises the renderer for playback. + + @param sampleRate The sample rate that will be used for the data that is sent + to the renderer + @param maximumSamplesPerBlock The maximum number of samples that will be in the blocks + sent to process() method + @param numChannels The number of channels that the process() method will be + expected to handle + @param precision This should be the same as the result of getProcessingPrecision() + for the enclosing AudioProcessor + @param alwaysNonRealtime yes if this renderer is never used in realtime (e.g. if + providing data for views only) + */ + virtual void prepareToPlay (double sampleRate, + int maximumSamplesPerBlock, + int numChannels, + AudioProcessor::ProcessingPrecision precision, + AlwaysNonRealtime alwaysNonRealtime = AlwaysNonRealtime::no) + { + ignoreUnused (sampleRate, maximumSamplesPerBlock, numChannels, precision, alwaysNonRealtime); + } + + /** Frees render resources allocated in prepareToPlay(). */ + virtual void releaseResources() {} + + /** Resets the internal state variables of the renderer. */ + virtual void reset() {} + + /** Renders the output into the given buffer. Returns true if rendering executed without error, + false otherwise. + + @param buffer The output buffer for the rendering. ARAPlaybackRenderers will + replace the sample data, while ARAEditorRenderer will add to it. + @param realtime Indicates whether the call is executed under real time constraints. + The value of this parameter may change from one call to the next, + and if the value is yes, the rendering may fail if the required + samples cannot be obtained in time. + @param positionInfo Current song position, playback state and playback loop location. + There should be no need to access the bpm, timeSig and ppqPosition + members in any ARA renderer since ARA provides that information with + random access in its model graph. + + Returns false if non-ARA fallback rendering is required and true otherwise. + */ + virtual bool processBlock (AudioBuffer& buffer, + AudioProcessor::Realtime realtime, + const AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept = 0; + + /** Renders the output into the given buffer. Returns true if rendering executed without error, + false otherwise. + + @param buffer The output buffer for the rendering. ARAPlaybackRenderers will + replace the sample data, while ARAEditorRenderer will add to it. + @param realtime Indicates whether the call is executed under real time constraints. + The value of this parameter may change from one call to the next, + and if the value is yes, the rendering may fail if the required + samples cannot be obtained in time. + @param positionInfo Current song position, playback state and playback loop location. + There should be no need to access the bpm, timeSig and ppqPosition + members in any ARA renderer since ARA provides that information with + random access in its model graph. + + Returns false if non-ARA fallback rendering is required and true otherwise. + */ + virtual bool processBlock (AudioBuffer& buffer, + AudioProcessor::Realtime realtime, + const AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept; +}; + +//============================================================================== +/** Base class for a renderer fulfilling the ARAPlaybackRenderer role as described in the ARA SDK. + + Instances of this class are constructed by the DocumentController. If you are subclassing + ARAPlaybackRenderer, make sure to call the base class implementation of any overridden function, + except for processBlock. + + @tags{ARA} +*/ +class JUCE_API ARAPlaybackRenderer : public ARA::PlugIn::PlaybackRenderer, + public ARARenderer +{ +public: + using ARA::PlugIn::PlaybackRenderer::PlaybackRenderer; + + bool processBlock (AudioBuffer& buffer, + AudioProcessor::Realtime realtime, + const AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept override + { + ignoreUnused (buffer, realtime, positionInfo); + return false; + } + + // Shadowing templated getters to default to JUCE versions of the returned classes + /** Returns the PlaybackRegions + * + * @tparam PlaybackRegion_t + * @return + */ + template + std::vector const& getPlaybackRegions() const noexcept + { + return ARA::PlugIn::PlaybackRenderer::getPlaybackRegions(); + } + +#if ARA_VALIDATE_API_CALLS + void addPlaybackRegion (ARA::ARAPlaybackRegionRef playbackRegionRef) noexcept override; + void removePlaybackRegion (ARA::ARAPlaybackRegionRef playbackRegionRef) noexcept override; + AudioProcessorARAExtension* araExtension {}; +#endif + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARAPlaybackRenderer) +}; + +//============================================================================== +/** Base class for a renderer fulfilling the ARAEditorRenderer role as described in the ARA SDK. + + Instances of this class are constructed by the DocumentController. If you are subclassing + ARAEditorRenderer, make sure to call the base class implementation of any overridden function, + except for processBlock. + + @tags{ARA} +*/ +class JUCE_API ARAEditorRenderer : public ARA::PlugIn::EditorRenderer, + public ARARenderer +{ +public: + using ARA::PlugIn::EditorRenderer::EditorRenderer; + + // Shadowing templated getters to default to JUCE versions of the returned classes + template + std::vector const& getPlaybackRegions() const noexcept + { + return ARA::PlugIn::EditorRenderer::getPlaybackRegions(); + } + + template + std::vector const& getRegionSequences() const noexcept + { + return ARA::PlugIn::EditorRenderer::getRegionSequences(); + } + + // By default, editor renderers will just let the signal pass through unaltered. + // If you're overriding this to implement actual audio preview, remember to check + // isNonRealtime of the process context - typically preview is limited to realtime. + bool processBlock (AudioBuffer& buffer, + AudioProcessor::Realtime isNonRealtime, + const AudioPlayHead::CurrentPositionInfo& positionInfo) noexcept override + { + ignoreUnused (buffer, isNonRealtime, positionInfo); + return true; + } + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARAEditorRenderer) +}; + +//============================================================================== +/** Base class for a renderer fulfilling the ARAEditorView role as described in the ARA SDK. + + Instances of this class are constructed by the DocumentController. If you are subclassing + ARAEditorView, make sure to call the base class implementation of overridden functions. + + @tags{ARA} +*/ +class JUCE_API ARAEditorView : public ARA::PlugIn::EditorView +{ +public: + using ARA::PlugIn::EditorView::EditorView; + + // Shadowing templated getters to default to JUCE versions of the returned classes + template + std::vector const& getHiddenRegionSequences() const noexcept + { + return ARA::PlugIn::EditorView::getHiddenRegionSequences(); + } + + // Base class implementation must be called if overridden + void doNotifySelection (const ARA::PlugIn::ViewSelection* currentSelection) noexcept override; + + // Base class implementation must be called if overridden + void doNotifyHideRegionSequences (std::vector const& regionSequences) noexcept override; + + /** A base class for listeners that want to know about changes to an ARAEditorView object. + + Use ARAEditorView::addListener() to register your listener with an ARAEditorView. + */ + class JUCE_API Listener + { + public: + /** Destructor. */ + virtual ~Listener() = default; + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN + + /** Called when the editor view's selection changes. + @param viewSelection The current selection state + */ + virtual void onNewSelection (const ARA::PlugIn::ViewSelection& viewSelection) + { + ignoreUnused (viewSelection); + } + + /** Called when region sequences are flagged as hidden in the host UI. + @param regionSequences A vector containing all hidden region sequences. + */ + virtual void onHideRegionSequences (std::vector const& regionSequences) + { + ignoreUnused (regionSequences); + } + + ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END + }; + + /** \copydoc ARAListenableModelClass::addListener */ + void addListener (Listener* l); + + /** \copydoc ARAListenableModelClass::removeListener */ + void removeListener (Listener* l); + +private: + ListenerList listeners; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARAEditorView) +}; + +} diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.cpp b/source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.cpp new file mode 100644 index 000000000..ed9140269 --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.cpp @@ -0,0 +1,32 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if JucePlugin_Enable_ARA +#include "juce_ARADocumentControllerCommon.cpp" +#include "juce_ARADocumentController.cpp" +#include "juce_ARAModelObjects.cpp" +#include "juce_ARAPlugInInstanceRoles.cpp" +#include "juce_AudioProcessor_ARAExtensions.cpp" +#endif diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.h b/source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.h new file mode 100644 index 000000000..e30cbbe3d --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.h @@ -0,0 +1,85 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if JucePlugin_Enable_ARA + +// Include ARA SDK headers +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wgnu-zero-variadic-macro-arguments", + "-Wunused-parameter") +JUCE_BEGIN_IGNORE_WARNINGS_MSVC (6387) + +#include + +JUCE_END_IGNORE_WARNINGS_GCC_LIKE +JUCE_END_IGNORE_WARNINGS_MSVC + +namespace juce +{ + +using ARAViewSelection = ARA::PlugIn::ViewSelection; +using ARAContentUpdateScopes = ARA::ContentUpdateScopes; +using ARARestoreObjectsFilter = ARA::PlugIn::RestoreObjectsFilter; +using ARAStoreObjectsFilter = ARA::PlugIn::StoreObjectsFilter; + +/** Converts an ARA::ARAUtf8String to a JUCE String. */ +inline String convertARAString (ARA::ARAUtf8String str) +{ + return String (CharPointer_UTF8 (str)); +} + +/** Converts a potentially NULL ARA::ARAUtf8String to a JUCE String. + + Returns the JUCE equivalent of the provided string if it's not nullptr, and the fallback string + otherwise. +*/ +inline String convertOptionalARAString (ARA::ARAUtf8String str, const String& fallbackString = String()) +{ + return (str != nullptr) ? convertARAString (str) : fallbackString; +} + +/** Converts an ARA::ARAColor* to a JUCE Colour. */ +inline Colour convertARAColour (const ARA::ARAColor* colour) +{ + return Colour::fromFloatRGBA (colour->r, colour->g, colour->b, 1.0f); +} + +/** Converts a potentially NULL ARA::ARAColor* to a JUCE Colour. + + Returns the JUCE equivalent of the provided colour if it's not nullptr, and the fallback colour + otherwise. +*/ +inline Colour convertOptionalARAColour (const ARA::ARAColor* colour, const Colour& fallbackColour = Colour()) +{ + return (colour != nullptr) ? convertARAColour (colour) : fallbackColour; +} + +} // namespace juce + +#include "juce_ARAModelObjects.h" +#include "juce_ARADocumentController.h" +#include "juce_AudioProcessor_ARAExtensions.h" +#include "juce_ARAPlugInInstanceRoles.h" + +#endif diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp b/source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp new file mode 100644 index 000000000..a8471b9cf --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp @@ -0,0 +1,156 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include "juce_AudioProcessor_ARAExtensions.h" + +namespace juce +{ + +//============================================================================== +bool AudioProcessorARAExtension::getTailLengthSecondsForARA (double& tailLength) const +{ + if (! isBoundToARA()) + return false; + + tailLength = 0.0; + + if (auto playbackRenderer = getPlaybackRenderer()) + for (const auto& playbackRegion : playbackRenderer->getPlaybackRegions()) + tailLength = jmax (tailLength, playbackRegion->getTailTime()); + + return true; +} + +bool AudioProcessorARAExtension::prepareToPlayForARA (double sampleRate, + int samplesPerBlock, + int numChannels, + AudioProcessor::ProcessingPrecision precision) +{ +#if ARA_VALIDATE_API_CALLS + isPrepared = true; +#endif + + if (! isBoundToARA()) + return false; + + if (auto playbackRenderer = getPlaybackRenderer()) + playbackRenderer->prepareToPlay (sampleRate, samplesPerBlock, numChannels, precision); + + if (auto editorRenderer = getEditorRenderer()) + editorRenderer->prepareToPlay (sampleRate, samplesPerBlock, numChannels, precision); + + return true; +} + +bool AudioProcessorARAExtension::releaseResourcesForARA() +{ +#if ARA_VALIDATE_API_CALLS + isPrepared = false; +#endif + + if (! isBoundToARA()) + return false; + + if (auto playbackRenderer = getPlaybackRenderer()) + playbackRenderer->releaseResources(); + + if (auto editorRenderer = getEditorRenderer()) + editorRenderer->releaseResources(); + + return true; +} + +bool AudioProcessorARAExtension::processBlockForARA (AudioBuffer& buffer, + AudioProcessor::Realtime realtime, + const AudioPlayHead::CurrentPositionInfo& positionInfo) +{ + // validate that the host has prepared us before processing + ARA_VALIDATE_API_STATE (isPrepared); + + if (! isBoundToARA()) + return false; + + // Render our ARA playback regions for this buffer. + if (auto playbackRenderer = getPlaybackRenderer()) + playbackRenderer->processBlock (buffer, realtime, positionInfo); + + // Render our ARA editor regions and sequences for this buffer. + // This example does not support editor rendering and thus uses the default implementation, + // which is a no-op and could be omitted in actual plug-ins to optimize performance. + if (auto editorRenderer = getEditorRenderer()) + editorRenderer->processBlock (buffer, realtime, positionInfo); + + return true; +} + +bool AudioProcessorARAExtension::processBlockForARA (AudioBuffer& buffer, + juce::AudioProcessor::Realtime realtime, + AudioPlayHead* playhead) +{ + AudioPlayHead::CurrentPositionInfo positionInfo; + + if (! isBoundToARA() || ! playhead || ! playhead->getCurrentPosition (positionInfo)) + positionInfo.resetToDefault(); + + return processBlockForARA (buffer, realtime, positionInfo); +} + +//============================================================================== +void AudioProcessorARAExtension::didBindToARA() noexcept +{ + // validate that the ARA binding is not established by the host while prepared to play +#if ARA_VALIDATE_API_CALLS + ARA_VALIDATE_API_STATE (! isPrepared); + if (auto playbackRenderer = getPlaybackRenderer()) + playbackRenderer->araExtension = this; +#endif + +#if (! JUCE_DISABLE_ASSERTIONS) + // validate proper subclassing of the instance role classes + if (auto playbackRenderer = getPlaybackRenderer()) + jassert (dynamic_cast (playbackRenderer) != nullptr); + if (auto editorRenderer = getEditorRenderer()) + jassert (dynamic_cast (editorRenderer) != nullptr); + if (auto editorView = getEditorView()) + jassert (dynamic_cast (editorView) != nullptr); +#endif +} + +//============================================================================== + +AudioProcessorEditorARAExtension::AudioProcessorEditorARAExtension (AudioProcessor* audioProcessor) + : araProcessorExtension (dynamic_cast (audioProcessor)) +{ + if (isARAEditorView()) + getARAEditorView()->setEditorOpen (true); +} + +AudioProcessorEditorARAExtension::~AudioProcessorEditorARAExtension() +{ + if (isARAEditorView()) + getARAEditorView()->setEditorOpen (false); +} + +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h b/source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h new file mode 100644 index 000000000..c3669e29f --- /dev/null +++ b/source/modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h @@ -0,0 +1,204 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +namespace juce +{ + +class AudioProcessor; +class ARAPlaybackRenderer; +class ARAEditorRenderer; +class ARAEditorView; + +//============================================================================== +/** Extension class meant to be subclassed by the plugin's implementation of @see AudioProcessor. + + Subclassing AudioProcessorARAExtension allows access to the three possible plugin instance + roles as defined by the ARA SDK. Hosts can assign any subset of roles to each plugin instance. + + @tags{ARA} +*/ +class JUCE_API AudioProcessorARAExtension : public ARA::PlugIn::PlugInExtension +{ +public: + AudioProcessorARAExtension() = default; + + //============================================================================== + /** Returns the result of ARA::PlugIn::PlugInExtension::getPlaybackRenderer() with the pointer + cast to ARAPlaybackRenderer*. + + If you have overridden ARADocumentControllerSpecialisation::doCreatePlaybackRenderer(), + then you can use the template parameter to cast the pointers to your subclass of + ARAPlaybackRenderer. + */ + template + PlaybackRenderer_t* getPlaybackRenderer() const noexcept + { + return ARA::PlugIn::PlugInExtension::getPlaybackRenderer(); + } + + /** Returns the result of ARA::PlugIn::PlugInExtension::getEditorRenderer() with the pointer + cast to ARAEditorRenderer*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateEditorRenderer(), + then you can use the template parameter to cast the pointers to your subclass of + ARAEditorRenderer. + */ + template + EditorRenderer_t* getEditorRenderer() const noexcept + { + return ARA::PlugIn::PlugInExtension::getEditorRenderer(); + } + + /** Returns the result of ARA::PlugIn::PlugInExtension::getEditorView() with the pointer + cast to ARAEditorView*. + + If you have overridden ARADocumentControllerSpecialisation::doCreateEditorView(), + then you can use the template parameter to cast the pointers to your subclass of + ARAEditorView. + */ + template + EditorView_t* getEditorView() const noexcept + { + return ARA::PlugIn::PlugInExtension::getEditorView(); + } + + //============================================================================== + /** Returns true if plugin instance fulfills the ARAPlaybackRenderer role. */ + bool isPlaybackRenderer() const noexcept + { + return ARA::PlugIn::PlugInExtension::getPlaybackRenderer() != nullptr; + } + + /** Returns true if plugin instance fulfills the ARAEditorRenderer role. */ + bool isEditorRenderer() const noexcept + { + return ARA::PlugIn::PlugInExtension::getEditorRenderer() != nullptr; + } + + /** Returns true if plugin instance fulfills the ARAEditorView role. */ + bool isEditorView() const noexcept + { + return ARA::PlugIn::PlugInExtension::getEditorView() != nullptr; + } + + //============================================================================== +#if ARA_VALIDATE_API_CALLS + bool isPrepared { false }; +#endif + +protected: + /** Implementation helper for AudioProcessor::getTailLengthSeconds(). + + If bound to ARA, this traverses the instance roles to retrieve the respective tail time + and returns true. Otherwise returns false and leaves tailLength unmodified. + */ + bool getTailLengthSecondsForARA (double& tailLength) const; + + /** Implementation helper for AudioProcessor::prepareToPlay(). + + If bound to ARA, this traverses the instance roles to prepare them for play and returns + true. Otherwise returns false and does nothing. + */ + bool prepareToPlayForARA (double sampleRate, + int samplesPerBlock, + int numChannels, + AudioProcessor::ProcessingPrecision precision); + + /** Implementation helper for AudioProcessor::releaseResources(). + + If bound to ARA, this traverses the instance roles to let them release resources and returns + true. Otherwise returns false and does nothing. + */ + bool releaseResourcesForARA(); + + /** Implementation helper for AudioProcessor::processBlock(). + + If bound to ARA, this traverses the instance roles to let them process the block and returns + true. Otherwise returns false and does nothing. + + Use this overload if your rendering code already has a current positionInfo available. + */ + bool processBlockForARA (AudioBuffer& buffer, + AudioProcessor::Realtime realtime, + const AudioPlayHead::CurrentPositionInfo& positionInfo); + + /** Implementation helper for AudioProcessor::processBlock(). + + If bound to ARA, this traverses the instance roles to let them process the block and returns + true. Otherwise returns false and does nothing. + + Use this overload if your rendering code does not have a current positionInfo available. + */ + bool processBlockForARA (AudioBuffer& buffer, AudioProcessor::Realtime isNonRealtime, AudioPlayHead* playhead); + + //============================================================================== + /** Optional hook for derived classes to perform any additional initialization that may be needed. + + If overriding this, make sure you call the base class implementation from your override. + */ + void didBindToARA() noexcept override; + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioProcessorARAExtension) +}; + +//============================================================================== +/** Extension class meant to be subclassed by the plugin's implementation of @see AudioProcessorEditor. + + Subclassing AudioProcessorARAExtension allows access to the ARAEditorView instance role as + described by the ARA SDK. + + @tags{ARA} +*/ +class JUCE_API AudioProcessorEditorARAExtension +{ +public: + /** Constructor. */ + explicit AudioProcessorEditorARAExtension (AudioProcessor* audioProcessor); + + /** \copydoc AudioProcessorARAExtension::getEditorView */ + template + EditorView_t* getARAEditorView() const noexcept + { + return (this->araProcessorExtension != nullptr) ? this->araProcessorExtension->getEditorView() + : nullptr; + } + + /** \copydoc AudioProcessorARAExtension::isEditorView */ + bool isARAEditorView() const noexcept { return getARAEditorView() != nullptr; } + +protected: + /** Destructor. */ + ~AudioProcessorEditorARAExtension(); + +private: + AudioProcessorARAExtension* araProcessorExtension; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioProcessorEditorARAExtension) +}; + +} // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp b/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp index 73f3e7a98..479111218 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.h b/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.h index 9dd11d015..f16945f77 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.h +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterBool.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp b/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp index e082df6f9..3e0875939 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h b/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h index e6b6b7369..f3fdd2d64 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp b/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp index d3e03ed7a..a9f84d3a6 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h b/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h index 8abb46a09..c6adbe78f 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp b/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp index 7e93ea3a4..356ca0363 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.h b/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.h index 5eae08e33..965dac6a4 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.h +++ b/source/modules/juce_audio_processors/utilities/juce_AudioParameterInt.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp index c3e93328e..848358d07 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h index bd9890513..a75834c8b 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h +++ b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp index a7e8c8af1..1d59658ab 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -466,6 +473,7 @@ void AudioProcessorValueTreeState::timerCallback() } //============================================================================== +#if ! JUCE_AUDIOPROCESSOR_NO_GUI template std::unique_ptr makeAttachment (const AudioProcessorValueTreeState& stateToUse, const String& parameterID, @@ -498,6 +506,7 @@ AudioProcessorValueTreeState::ButtonAttachment::ButtonAttachment (AudioProcessor : attachment (makeAttachment (stateToUse, parameterID, button)) { } +#endif //============================================================================== //============================================================================== diff --git a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h index 3942f3345..4e33e2a67 100644 --- a/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h +++ b/source/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -519,6 +526,7 @@ public: friend class AudioProcessorValueTreeState::ParameterAdapter; }; + #if ! JUCE_AUDIOPROCESSOR_NO_GUI //============================================================================== /** An object of this class maintains a connection between a Slider and a parameter in an AudioProcessorValueTreeState. @@ -586,6 +594,7 @@ public: std::unique_ptr attachment; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ButtonAttachment) }; + #endif private: //============================================================================== diff --git a/source/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h b/source/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h index 5b484f4e4..6bfdd5059 100644 --- a/source/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h +++ b/source/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -30,7 +37,7 @@ namespace Steinberg #endif //============================================================================== -#if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES) +#if TARGET_OS_IPHONE struct OpaqueAudioComponentInstance; typedef struct OpaqueAudioComponentInstance* AudioComponentInstance; #else @@ -108,6 +115,13 @@ struct ExtensionsVisitor virtual AEffect* getAEffectPtr() const noexcept = 0; }; + /** Can be used to retrieve information about a plugin that provides ARA extensions. */ + struct ARAClient + { + virtual ~ARAClient() = default; + virtual void createARAFactoryAsync (std::function) const = 0; + }; + virtual ~ExtensionsVisitor() = default; /** Will be called if there is no platform specific information available. */ @@ -121,6 +135,9 @@ struct ExtensionsVisitor /** Called with AU-specific information. */ virtual void visitAudioUnitClient (const AudioUnitClient&) {} + + /** Called with ARA-specific information. */ + virtual void visitARAClient (const ARAClient&) {} }; } // namespace juce diff --git a/source/modules/juce_audio_processors/utilities/juce_FlagCache.h b/source/modules/juce_audio_processors/utilities/juce_FlagCache.h index 1a1ebeba5..cd808dcd3 100644 --- a/source/modules/juce_audio_processors/utilities/juce_FlagCache.h +++ b/source/modules/juce_audio_processors/utilities/juce_FlagCache.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp b/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp index 0528f9d82..b23e63989 100644 --- a/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h b/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h index ac8e92a8e..a755fb2de 100644 --- a/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h +++ b/source/modules/juce_audio_processors/utilities/juce_NativeScaleFactorNotifier.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp b/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp index d79a302a7..73edfe010 100644 --- a/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.h b/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.h index 217cfcecb..c86cd469f 100644 --- a/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.h +++ b/source/modules/juce_audio_processors/utilities/juce_ParameterAttachments.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp b/source/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp index f51fed0d3..d03d4f792 100644 --- a/source/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -63,6 +70,7 @@ bool PluginHostType::isInAAXAudioSuite (AudioProcessor& processor) return false; } +#if ! JUCE_AUDIOPROCESSOR_NO_GUI Image PluginHostType::getHostIcon (int size) const { ignoreUnused (size); @@ -79,6 +87,7 @@ Image PluginHostType::getHostIcon (int size) const return Image(); } +#endif const char* PluginHostType::getHostDescription() const noexcept { diff --git a/source/modules/juce_audio_processors/utilities/juce_PluginHostType.h b/source/modules/juce_audio_processors/utilities/juce_PluginHostType.h index f83ccd3f4..e5ec0a33a 100644 --- a/source/modules/juce_audio_processors/utilities/juce_PluginHostType.h +++ b/source/modules/juce_audio_processors/utilities/juce_PluginHostType.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -200,8 +207,10 @@ public: bool isInterAppAudioConnected() const; /** Switches to the host application when Inter-App Audio is used on iOS. */ void switchToHostApplication() const; + #if ! JUCE_AUDIOPROCESSOR_NO_GUI /** Gets the host app's icon when Inter-App Audio is used on iOS. */ Image getHostIcon (int size) const; + #endif //============================================================================== /** Returns the complete absolute path of the host application executable. */ diff --git a/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp b/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp index b8f84bbf1..7e2d6aca1 100644 --- a/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp +++ b/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h b/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h index 9551c5c83..1fad305d9 100644 --- a/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h +++ b/source/modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h b/source/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h index 523c48418..9d70828f3 100644 --- a/source/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h +++ b/source/modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h b/source/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h index e5b4a40a5..d5a4ea5e0 100644 --- a/source/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h +++ b/source/modules/juce_audio_processors/utilities/juce_VSTCallbackHandler.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_core/containers/juce_Array.h b/source/modules/juce_core/containers/juce_Array.h index 010cbbc30..05f957997 100644 --- a/source/modules/juce_core/containers/juce_Array.h +++ b/source/modules/juce_core/containers/juce_Array.h @@ -829,9 +829,10 @@ public: If the item isn't found, no action is taken. @param valueToRemove the object to try to remove + @returns the index of the removed item, or -1 if the item isn't found @see remove, removeRange, removeIf */ - void removeFirstMatchingValue (ParameterType valueToRemove) + int removeFirstMatchingValue (ParameterType valueToRemove) { const ScopedLockType lock (getLock()); auto* e = values.begin(); @@ -841,9 +842,11 @@ public: if (valueToRemove == e[i]) { removeInternal (i); - break; + return i; } } + + return -1; } /** Removes items from the array. diff --git a/source/modules/juce_core/containers/juce_ListenerList.cpp b/source/modules/juce_core/containers/juce_ListenerList.cpp new file mode 100644 index 000000000..a7c9dd8d3 --- /dev/null +++ b/source/modules/juce_core/containers/juce_ListenerList.cpp @@ -0,0 +1,321 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + The code included in this file is provided under the terms of the ISC license + http://www.isc.org/downloads/software-support-policy/isc-license. Permission + To use, copy, modify, and/or distribute this software for any purpose with or + without fee is hereby granted provided that the above copyright notice and + this permission notice appear in all copies. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +#if JUCE_UNIT_TESTS + +class ListenerListTests : public UnitTest +{ +public: + //============================================================================== + class TestListener + { + public: + explicit TestListener (std::function cb) : callback (std::move (cb)) {} + + void doCallback() + { + ++numCalls; + callback(); + } + + int getNumCalls() const { return numCalls; } + + private: + int numCalls = 0; + std::function callback; + }; + + class TestObject + { + public: + void addListener (std::function cb) + { + listeners.push_back (std::make_unique (std::move (cb))); + listenerList.add (listeners.back().get()); + } + + void removeListener (int i) { listenerList.remove (listeners[(size_t) i].get()); } + + void callListeners() + { + ++callLevel; + listenerList.call ([] (auto& l) { l.doCallback(); }); + --callLevel; + } + + int getNumListeners() const { return (int) listeners.size(); } + + auto& getListener (int i) { return *listeners[(size_t) i]; } + + int getCallLevel() const + { + return callLevel; + } + + bool wereAllNonRemovedListenersCalled (int numCalls) const + { + return std::all_of (std::begin (listeners), + std::end (listeners), + [&] (auto& listener) + { + return (! listenerList.contains (listener.get())) || listener->getNumCalls() == numCalls; + }); + } + + private: + std::vector> listeners; + ListenerList listenerList; + int callLevel = 0; + }; + + //============================================================================== + ListenerListTests() : UnitTest ("ListenerList", UnitTestCategories::containers) {} + + void runTest() override + { + // This is a test that the pre-iterator adjustment implementation should pass too + beginTest ("All non-removed listeners should be called - removing an already called listener"); + { + TestObject test; + + for (int i = 0; i < 20; ++i) + { + test.addListener ([i, &test] + { + if (i == 5) + test.removeListener (6); + }); + } + + test.callListeners(); + expect (test.wereAllNonRemovedListenersCalled (1)); + } + + // Iterator adjustment is necessary for passing this + beginTest ("All non-removed listeners should be called - removing a yet uncalled listener"); + { + TestObject test; + + for (int i = 0; i < 20; ++i) + { + test.addListener ([i, &test] + { + if (i == 5) + test.removeListener (4); + }); + } + + test.callListeners(); + expect (test.wereAllNonRemovedListenersCalled (1)); + } + + // This test case demonstrates why we have to call --it.index instead of it.next() + beginTest ("All non-removed listeners should be called - one callback removes multiple listeners"); + { + TestObject test; + + for (int i = 0; i < 20; ++i) + { + test.addListener ([i, &test] + { + if (i == 19) + { + test.removeListener (19); + test.removeListener (0); + } + }); + } + + test.callListeners(); + expect (test.wereAllNonRemovedListenersCalled (1)); + } + + beginTest ("All non-removed listeners should be called - removing listeners randomly"); + { + auto random = getRandom(); + + for (auto run = 0; run < 10; ++run) + { + const auto numListeners = random.nextInt ({ 10, 100 }); + const auto listenersThatRemoveListeners = chooseUnique (random, + numListeners, + random.nextInt ({ 0, numListeners / 2 })); + + // The listener in position [key] should remove listeners in [value] + std::map> removals; + + for (auto i : listenersThatRemoveListeners) + { + // Random::nextInt ({1, 1}); triggers an assertion + removals[i] = chooseUnique (random, + numListeners, + random.nextInt ({ 1, std::max (2, numListeners / 10) })); + } + + TestObject test; + + for (int i = 0; i < numListeners; ++i) + { + test.addListener ([i, &removals, &test] + { + const auto iter = removals.find (i); + + if (iter == removals.end()) + return; + + for (auto j : iter->second) + { + test.removeListener (j); + } + }); + } + + test.callListeners(); + expect (test.wereAllNonRemovedListenersCalled (1)); + } + } + + // Iterator adjustment is not necessary for passing this + beginTest ("All non-removed listeners should be called - add listener during iteration"); + { + TestObject test; + const auto numStartingListeners = 20; + + for (int i = 0; i < numStartingListeners; ++i) + { + test.addListener ([i, &test] + { + if (i == 5 || i == 6) + test.addListener ([] {}); + }); + } + + test.callListeners(); + + // Only the Listeners added before the test can be expected to have been called + bool success = true; + + for (int i = 0; i < numStartingListeners; ++i) + success = success && test.getListener (i).getNumCalls() == 1; + + // Listeners added during the iteration must not be called in that iteration + for (int i = numStartingListeners; i < test.getNumListeners(); ++i) + success = success && test.getListener (i).getNumCalls() == 0; + + expect (success); + } + + beginTest ("All non-removed listeners should be called - nested ListenerList::call()"); + { + TestObject test; + + for (int i = 0; i < 20; ++i) + { + test.addListener ([i, &test] + { + const auto callLevel = test.getCallLevel(); + + if (i == 6 && callLevel == 1) + { + test.callListeners(); + } + + if (i == 5) + { + if (callLevel == 1) + test.removeListener (4); + else if (callLevel == 2) + test.removeListener (6); + } + }); + } + + test.callListeners(); + expect (test.wereAllNonRemovedListenersCalled (2)); + } + + beginTest ("All non-removed listeners should be called - random ListenerList::call()"); + { + const auto numListeners = 20; + auto random = getRandom(); + + for (int run = 0; run < 10; ++run) + { + TestObject test; + auto numCalls = 0; + + auto listenersToRemove = chooseUnique (random, numListeners, numListeners / 2); + + for (int i = 0; i < numListeners; ++i) + { + // Capturing numListeners is a warning on MacOS, not capturing it is an error on Windows + test.addListener ([&] + { + const auto callLevel = test.getCallLevel(); + + if (callLevel < 4 && random.nextFloat() < 0.05f) + { + ++numCalls; + test.callListeners(); + } + + if (random.nextFloat() < 0.5f) + { + const auto listenerToRemove = random.nextInt ({ 0, numListeners }); + + if (listenersToRemove.erase (listenerToRemove) > 0) + test.removeListener (listenerToRemove); + } + }); + } + + while (listenersToRemove.size() > 0) + { + test.callListeners(); + ++numCalls; + } + + expect (test.wereAllNonRemovedListenersCalled (numCalls)); + } + } + } + +private: + static std::set chooseUnique (Random& random, int max, int numChosen) + { + std::set result; + + while ((int) result.size() < numChosen) + result.insert (random.nextInt ({ 0, max })); + + return result; + } +}; + +static ListenerListTests listenerListTests; + +#endif + +} // namespace juce diff --git a/source/modules/juce_core/containers/juce_ListenerList.h b/source/modules/juce_core/containers/juce_ListenerList.h index 665e5c08a..595e37793 100644 --- a/source/modules/juce_core/containers/juce_ListenerList.h +++ b/source/modules/juce_core/containers/juce_ListenerList.h @@ -47,10 +47,11 @@ namespace juce listeners.call ([] (MyListenerType& l) { l.myCallbackMethod (1234, true); }); @endcode - If you add or remove listeners from the list during one of the callbacks - i.e. while - it's in the middle of iterating the listeners, then it's guaranteed that no listeners - will be mistakenly called after they've been removed, but it may mean that some of the - listeners could be called more than once, or not at all, depending on the list's order. + It is guaranteed that every Listener is called during an iteration if it's inside the + ListenerList before the iteration starts and isn't removed until its end. This guarantee + holds even if some Listeners are removed or new ones are added during the iteration. + + Listeners added during an iteration are guaranteed to be not called in that iteration. Sometimes, there's a chance that invoking one of the callbacks might result in the list itself being deleted while it's still iterating - to survive this situation, you can @@ -73,7 +74,13 @@ public: ListenerList() = default; /** Destructor. */ - ~ListenerList() = default; + ~ListenerList() + { + WrappedIterator::forEach (activeIterators, [&] (auto& iter) + { + iter.invalidate(); + }); + } //============================================================================== /** Adds a listener to the list. @@ -95,7 +102,16 @@ public: void remove (ListenerClass* listenerToRemove) { jassert (listenerToRemove != nullptr); // Listeners can't be null pointers! - listeners.removeFirstMatchingValue (listenerToRemove); + + typename ArrayType::ScopedLockType lock (listeners.getLock()); + + const auto index = listeners.removeFirstMatchingValue (listenerToRemove); + + WrappedIterator::forEach (activeIterators, [&] (auto& iter) + { + if (0 <= index && index < iter.get().index) + --iter.get().index; + }); } /** Returns the number of registered listeners. */ @@ -120,8 +136,8 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next();) - callback (*iter.getListener()); + for (WrappedIterator iter (*this, activeIterators); iter.get().next();) + callback (*iter.get().getListener()); } /** Calls a member function with 1 parameter, on all but the specified listener in the list. @@ -132,9 +148,9 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next();) + for (WrappedIterator iter (*this, activeIterators); iter.get().next();) { - auto* l = iter.getListener(); + auto* l = iter.get().getListener(); if (l != listenerToExclude) callback (*l); @@ -149,8 +165,10 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next (bailOutChecker);) - callback (*iter.getListener()); + for (WrappedIterator iter (*this, activeIterators); iter.get().next (bailOutChecker);) + { + callback (*iter.get().getListener()); + } } /** Calls a member function, with 1 parameter, on all but the specified listener in the list @@ -164,9 +182,9 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next (bailOutChecker);) + for (WrappedIterator iter (*this, activeIterators); iter.get().next (bailOutChecker);) { - auto* l = iter.getListener(); + auto* l = iter.get().getListener(); if (l != listenerToExclude) callback (*l); @@ -187,15 +205,12 @@ public: //============================================================================== /** Iterates the listeners in a ListenerList. */ - template struct Iterator { - Iterator (const ListType& listToIterate) noexcept + explicit Iterator (const ListenerList& listToIterate) noexcept : list (listToIterate), index (listToIterate.size()) {} - ~Iterator() = default; - //============================================================================== bool next() noexcept { @@ -211,21 +226,23 @@ public: return index >= 0; } + template bool next (const BailOutCheckerType& bailOutChecker) noexcept { return (! bailOutChecker.shouldBailOut()) && next(); } - typename ListType::ListenerType* getListener() const noexcept + ListenerClass* getListener() const noexcept { return list.getListeners().getUnchecked (index); } - //============================================================================== private: - const ListType& list; + const ListenerList& list; int index; + friend ListenerList; + JUCE_DECLARE_NON_COPYABLE (Iterator) }; @@ -260,7 +277,7 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next();) + for (Iterator iter (*this); iter.next();) (iter.getListener()->*callbackFunction) (static_cast::type> (args)...); } @@ -271,7 +288,7 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next();) + for (Iterator iter (*this); iter.next();) if (iter.getListener() != listenerToExclude) (iter.getListener()->*callbackFunction) (static_cast::type> (args)...); } @@ -283,7 +300,7 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next (bailOutChecker);) + for (Iterator iter (*this); iter.next (bailOutChecker);) (iter.getListener()->*callbackFunction) (static_cast::type> (args)...); } @@ -295,15 +312,49 @@ public: { typename ArrayType::ScopedLockType lock (listeners.getLock()); - for (Iterator iter (*this); iter.next (bailOutChecker);) + for (Iterator iter (*this); iter.next (bailOutChecker);) if (iter.getListener() != listenerToExclude) (iter.getListener()->*callbackFunction) (static_cast::type> (args)...); } #endif private: + class WrappedIterator + { + public: + WrappedIterator (const ListenerList& listToIterate, WrappedIterator*& listHeadIn) + : it (listToIterate), listHead (listHeadIn), next (listHead) + { + listHead = this; + } + + ~WrappedIterator() + { + if (valid) + listHead = next; + } + + auto& get() noexcept { return it; } + + template + static void forEach (WrappedIterator* wrapped, Callback&& cb) + { + for (auto* p = wrapped; p != nullptr; p = p->next) + cb (*p); + } + + void invalidate() noexcept { valid = false; } + + private: + Iterator it; + WrappedIterator*& listHead; + WrappedIterator* next = nullptr; + bool valid = true; + }; + //============================================================================== ArrayType listeners; + WrappedIterator* activeIterators = nullptr; JUCE_DECLARE_NON_COPYABLE (ListenerList) }; diff --git a/source/modules/juce_core/files/juce_File.h b/source/modules/juce_core/files/juce_File.h index 8a82a4a83..baa816c8b 100644 --- a/source/modules/juce_core/files/juce_File.h +++ b/source/modules/juce_core/files/juce_File.h @@ -20,17 +20,13 @@ ============================================================================== */ -#if ! defined (DOXYGEN) && (JUCE_MAC || JUCE_IOS) - #if __LP64__ - using OSType = unsigned int; - #else - using OSType = unsigned long; - #endif -#endif - namespace juce { +#if ! DOXYGEN && (JUCE_MAC || JUCE_IOS) + using OSType = unsigned int; +#endif + //============================================================================== /** Represents a local file or directory. diff --git a/source/modules/juce_core/juce_core.cpp b/source/modules/juce_core/juce_core.cpp index aa1f72ff6..e0d1187d3 100644 --- a/source/modules/juce_core/juce_core.cpp +++ b/source/modules/juce_core/juce_core.cpp @@ -128,6 +128,7 @@ //============================================================================== #include "containers/juce_AbstractFifo.cpp" #include "containers/juce_ArrayBase.cpp" +#include "containers/juce_ListenerList.cpp" #include "containers/juce_NamedValueSet.cpp" #include "containers/juce_OwnedArray.cpp" #include "containers/juce_PropertySet.cpp" diff --git a/source/modules/juce_core/threads/juce_ReadWriteLock.h b/source/modules/juce_core/threads/juce_ReadWriteLock.h index 14705b2ee..a26d6df2a 100644 --- a/source/modules/juce_core/threads/juce_ReadWriteLock.h +++ b/source/modules/juce_core/threads/juce_ReadWriteLock.h @@ -74,7 +74,7 @@ public: thread has it locked for writing, then this will fail and return false. @returns true if the lock is successfully gained. - @see exitRead, ScopedReadLock + @see exitRead, ScopedTryReadLock */ bool tryEnterRead() const noexcept; @@ -106,7 +106,7 @@ public: to obtain the lock. @returns true if the lock is successfully gained. - @see enterWrite + @see enterWrite, ScopedTryWriteLock */ bool tryEnterWrite() const noexcept; diff --git a/source/modules/juce_core/threads/juce_ScopedReadLock.h b/source/modules/juce_core/threads/juce_ScopedReadLock.h index 97c2fd1c4..b2d7e18ce 100644 --- a/source/modules/juce_core/threads/juce_ScopedReadLock.h +++ b/source/modules/juce_core/threads/juce_ScopedReadLock.h @@ -81,4 +81,90 @@ private: JUCE_DECLARE_NON_COPYABLE (ScopedReadLock) }; +//============================================================================== +/** + Automatically locks and unlocks a ReadWriteLock object. + + Use one of these as a local variable to control access to a ReadWriteLock. + + e.g. @code + + ReadWriteLock myLock; + + for (;;) + { + const ScopedTryReadLock myScopedTryLock (myLock); + + // Unlike using a ScopedReadLock, this may fail to actually get the lock, so you + // should test this with the isLocked() method before doing your thread-unsafe + // action. + + if (myScopedTryLock.isLocked()) + { + ...do some stuff... + } + else + { + ..our attempt at locking failed because a write lock has already been issued.. + } + + // myLock gets unlocked here (if it was locked). + } + @endcode + + @see ReadWriteLock, ScopedTryWriteLock + + @tags{Core} +*/ +class JUCE_API ScopedTryReadLock +{ +public: + //============================================================================== + /** Creates a ScopedTryReadLock and calls ReadWriteLock::tryEnterRead() as soon as it is + created. When the ScopedTryReadLock object is destructed, the ReadWriteLock will be unlocked + (if it was successfully acquired). + + Make sure this object is created and destructed by the same thread, otherwise there are no + guarantees what will happen! Best just to use it as a local stack object, rather than creating + one with the new() operator. + */ + explicit ScopedTryReadLock (ReadWriteLock& lockIn) + : ScopedTryReadLock (lockIn, true) {} + + /** Creates a ScopedTryReadLock. + + If acquireLockOnInitialisation is true then as soon as it is created, this will call + ReadWriteLock::tryEnterRead(), and when the ScopedTryReadLock object is destructed, the + ReadWriteLock will be unlocked (if it was successfully acquired). + + Make sure this object is created and destructed by the same thread, otherwise there are no + guarantees what will happen! Best just to use it as a local stack object, rather than creating + one with the new() operator. + */ + ScopedTryReadLock (ReadWriteLock& lockIn, bool acquireLockOnInitialisation) noexcept + : lock (lockIn), lockWasSuccessful (acquireLockOnInitialisation && lock.tryEnterRead()) {} + + /** Destructor. + + The ReadWriteLock's exitRead() method will be called when the destructor is called. + + Make sure this object is created and destructed by the same thread, otherwise there are no + guarantees what will happen! + */ + ~ScopedTryReadLock() noexcept { if (lockWasSuccessful) lock.exitRead(); } + + /** Returns true if the mutex was successfully locked. */ + bool isLocked() const noexcept { return lockWasSuccessful; } + + /** Retry gaining the lock by calling tryEnter on the underlying lock. */ + bool retryLock() noexcept { return lockWasSuccessful = lock.tryEnterRead(); } + +private: + //============================================================================== + ReadWriteLock& lock; + bool lockWasSuccessful; + + JUCE_DECLARE_NON_COPYABLE (ScopedTryReadLock) +}; + } // namespace juce diff --git a/source/modules/juce_core/threads/juce_ScopedWriteLock.h b/source/modules/juce_core/threads/juce_ScopedWriteLock.h index b3eb5e355..5f7290e70 100644 --- a/source/modules/juce_core/threads/juce_ScopedWriteLock.h +++ b/source/modules/juce_core/threads/juce_ScopedWriteLock.h @@ -81,4 +81,90 @@ private: JUCE_DECLARE_NON_COPYABLE (ScopedWriteLock) }; +//============================================================================== +/** + Automatically locks and unlocks a ReadWriteLock object. + + Use one of these as a local variable to control access to a ReadWriteLock. + + e.g. @code + + ReadWriteLock myLock; + + for (;;) + { + const ScopedTryWriteLock myScopedTryLock (myLock); + + // Unlike using a ScopedWriteLock, this may fail to actually get the lock, so you + // should test this with the isLocked() method before doing your thread-unsafe + // action. + + if (myScopedTryLock.isLocked()) + { + ...do some stuff... + } + else + { + ..our attempt at locking failed because some other thread has already locked the object.. + } + + // myLock gets unlocked here (if it was locked). + } + @endcode + + @see ReadWriteLock, ScopedTryWriteLock + + @tags{Core} +*/ +class JUCE_API ScopedTryWriteLock +{ +public: + //============================================================================== + /** Creates a ScopedTryWriteLock and calls ReadWriteLock::tryEnterWrite() immediately. + When the ScopedTryWriteLock object is destructed, the ReadWriteLock will be unlocked + (if it was successfully acquired). + + Make sure this object is created and destructed by the same thread, otherwise there are no + guarantees what will happen! Best just to use it as a local stack object, rather than creating + one with the new() operator. + */ + ScopedTryWriteLock (ReadWriteLock& lockIn) noexcept + : ScopedTryWriteLock (lockIn, true) {} + + /** Creates a ScopedTryWriteLock. + + If acquireLockOnInitialisation is true then as soon as it is created, this will call + ReadWriteLock::tryEnterWrite(), and when the ScopedTryWriteLock object is destructed, the + ReadWriteLock will be unlocked (if it was successfully acquired). + + Make sure this object is created and destructed by the same thread, otherwise there are no + guarantees what will happen! Best just to use it as a local stack object, rather than creating + one with the new() operator. + */ + ScopedTryWriteLock (ReadWriteLock& lockIn, bool acquireLockOnInitialisation) noexcept + : lock (lockIn), lockWasSuccessful (acquireLockOnInitialisation && lock.tryEnterWrite()) {} + + /** Destructor. + + The ReadWriteLock's exitWrite() method will be called when the destructor is called. + + Make sure this object is created and destructed by the same thread, + otherwise there are no guarantees what will happen! + */ + ~ScopedTryWriteLock() noexcept { if (lockWasSuccessful) lock.exitWrite(); } + + /** Returns true if the mutex was successfully locked. */ + bool isLocked() const noexcept { return lockWasSuccessful; } + + /** Retry gaining the lock by calling tryEnter on the underlying lock. */ + bool retryLock() noexcept { return lockWasSuccessful = lock.tryEnterWrite(); } + +private: + //============================================================================== + ReadWriteLock& lock; + bool lockWasSuccessful; + + JUCE_DECLARE_NON_COPYABLE (ScopedTryWriteLock) +}; + } diff --git a/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp b/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp index ecfc7c64e..f23719d5c 100644 --- a/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp +++ b/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h b/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h index 883325542..1253deba1 100644 --- a/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h +++ b/source/modules/juce_data_structures/app_properties/juce_ApplicationProperties.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp b/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp index c46258ff6..205f9e4c5 100644 --- a/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp +++ b/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.h b/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.h index f65c54d4b..f48a33021 100644 --- a/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.h +++ b/source/modules/juce_data_structures/app_properties/juce_PropertiesFile.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/juce_data_structures.cpp b/source/modules/juce_data_structures/juce_data_structures.cpp index a872f093c..4b482629c 100644 --- a/source/modules/juce_data_structures/juce_data_structures.cpp +++ b/source/modules/juce_data_structures/juce_data_structures.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/juce_data_structures.h b/source/modules/juce_data_structures/juce_data_structures.h index fbd0c0ba1..3974b0e8e 100644 --- a/source/modules/juce_data_structures/juce_data_structures.h +++ b/source/modules/juce_data_structures/juce_data_structures.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/undomanager/juce_UndoManager.cpp b/source/modules/juce_data_structures/undomanager/juce_UndoManager.cpp index 53a5b8a42..ccd89d815 100644 --- a/source/modules/juce_data_structures/undomanager/juce_UndoManager.cpp +++ b/source/modules/juce_data_structures/undomanager/juce_UndoManager.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/undomanager/juce_UndoManager.h b/source/modules/juce_data_structures/undomanager/juce_UndoManager.h index e28296ef7..c99c2a318 100644 --- a/source/modules/juce_data_structures/undomanager/juce_UndoManager.h +++ b/source/modules/juce_data_structures/undomanager/juce_UndoManager.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/undomanager/juce_UndoableAction.h b/source/modules/juce_data_structures/undomanager/juce_UndoableAction.h index 52cfc7bec..51e495ab0 100644 --- a/source/modules/juce_data_structures/undomanager/juce_UndoableAction.h +++ b/source/modules/juce_data_structures/undomanager/juce_UndoableAction.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_CachedValue.cpp b/source/modules/juce_data_structures/values/juce_CachedValue.cpp index 9bad80cba..c056a8614 100644 --- a/source/modules/juce_data_structures/values/juce_CachedValue.cpp +++ b/source/modules/juce_data_structures/values/juce_CachedValue.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_CachedValue.h b/source/modules/juce_data_structures/values/juce_CachedValue.h index 9640fb1d2..0ce17a863 100644 --- a/source/modules/juce_data_structures/values/juce_CachedValue.h +++ b/source/modules/juce_data_structures/values/juce_CachedValue.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_Value.cpp b/source/modules/juce_data_structures/values/juce_Value.cpp index afa177ebf..4b5c5fe63 100644 --- a/source/modules/juce_data_structures/values/juce_Value.cpp +++ b/source/modules/juce_data_structures/values/juce_Value.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_Value.h b/source/modules/juce_data_structures/values/juce_Value.h index 13cac04a6..94f6d1eda 100644 --- a/source/modules/juce_data_structures/values/juce_Value.h +++ b/source/modules/juce_data_structures/values/juce_Value.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -107,7 +114,8 @@ public: */ void referTo (const Value& valueToReferTo); - /** Returns true if this value and the other one are references to the same value. + /** Returns true if this object and the other one use the same underlying + ValueSource object. */ bool refersToSameSourceAs (const Value& other) const; diff --git a/source/modules/juce_data_structures/values/juce_ValueTree.cpp b/source/modules/juce_data_structures/values/juce_ValueTree.cpp index 7eb93bd4c..241a558ee 100644 --- a/source/modules/juce_data_structures/values/juce_ValueTree.cpp +++ b/source/modules/juce_data_structures/values/juce_ValueTree.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_ValueTree.h b/source/modules/juce_data_structures/values/juce_ValueTree.h index 94d145a79..d262e09c4 100644 --- a/source/modules/juce_data_structures/values/juce_ValueTree.h +++ b/source/modules/juce_data_structures/values/juce_ValueTree.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault.h b/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault.h index bee229d78..c5a14a56d 100644 --- a/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault.h +++ b/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault_test.cpp b/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault_test.cpp index 5a27f4f3b..0009f6a9a 100644 --- a/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault_test.cpp +++ b/source/modules/juce_data_structures/values/juce_ValueTreePropertyWithDefault_test.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp b/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp index 980ca858e..22606f722 100644 --- a/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp +++ b/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h b/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h index f4898c07a..6d20ffdb8 100644 --- a/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h +++ b/source/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_Colour.cpp b/source/modules/juce_graphics/colour/juce_Colour.cpp index 0052d7c93..38d2d8b04 100644 --- a/source/modules/juce_graphics/colour/juce_Colour.cpp +++ b/source/modules/juce_graphics/colour/juce_Colour.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_Colour.h b/source/modules/juce_graphics/colour/juce_Colour.h index 5a083e369..b8e10580d 100644 --- a/source/modules/juce_graphics/colour/juce_Colour.h +++ b/source/modules/juce_graphics/colour/juce_Colour.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_ColourGradient.cpp b/source/modules/juce_graphics/colour/juce_ColourGradient.cpp index 1f7cfc3f2..a9dc3af68 100644 --- a/source/modules/juce_graphics/colour/juce_ColourGradient.cpp +++ b/source/modules/juce_graphics/colour/juce_ColourGradient.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_ColourGradient.h b/source/modules/juce_graphics/colour/juce_ColourGradient.h index 9359c3f85..c38f5251f 100644 --- a/source/modules/juce_graphics/colour/juce_ColourGradient.h +++ b/source/modules/juce_graphics/colour/juce_ColourGradient.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_Colours.cpp b/source/modules/juce_graphics/colour/juce_Colours.cpp index 7e5094476..3dff46488 100644 --- a/source/modules/juce_graphics/colour/juce_Colours.cpp +++ b/source/modules/juce_graphics/colour/juce_Colours.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_Colours.h b/source/modules/juce_graphics/colour/juce_Colours.h index 473d88670..434b2b169 100644 --- a/source/modules/juce_graphics/colour/juce_Colours.h +++ b/source/modules/juce_graphics/colour/juce_Colours.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_FillType.cpp b/source/modules/juce_graphics/colour/juce_FillType.cpp index a30b89354..932a9917c 100644 --- a/source/modules/juce_graphics/colour/juce_FillType.cpp +++ b/source/modules/juce_graphics/colour/juce_FillType.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_FillType.h b/source/modules/juce_graphics/colour/juce_FillType.h index 3b9d797e3..75fbbb573 100644 --- a/source/modules/juce_graphics/colour/juce_FillType.h +++ b/source/modules/juce_graphics/colour/juce_FillType.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/colour/juce_PixelFormats.h b/source/modules/juce_graphics/colour/juce_PixelFormats.h index 7228cdcb9..29f685dc8 100644 --- a/source/modules/juce_graphics/colour/juce_PixelFormats.h +++ b/source/modules/juce_graphics/colour/juce_PixelFormats.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/contexts/juce_GraphicsContext.cpp b/source/modules/juce_graphics/contexts/juce_GraphicsContext.cpp index c23815d1c..4cf700771 100644 --- a/source/modules/juce_graphics/contexts/juce_GraphicsContext.cpp +++ b/source/modules/juce_graphics/contexts/juce_GraphicsContext.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/contexts/juce_GraphicsContext.h b/source/modules/juce_graphics/contexts/juce_GraphicsContext.h index b9e3a79c4..71cfec535 100644 --- a/source/modules/juce_graphics/contexts/juce_GraphicsContext.h +++ b/source/modules/juce_graphics/contexts/juce_GraphicsContext.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h index e092b982f..e34a42fe6 100644 --- a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h +++ b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp index 26256280f..bcd64c5c9 100644 --- a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp +++ b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h index 0cb8b1fe7..2ce23137a 100644 --- a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h +++ b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp index 9150ffcb1..53897c085 100644 --- a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp +++ b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h index 39bfca89f..0d4e5fe6f 100644 --- a/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h +++ b/source/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/effects/juce_DropShadowEffect.cpp b/source/modules/juce_graphics/effects/juce_DropShadowEffect.cpp index eaa402008..1f430aaad 100644 --- a/source/modules/juce_graphics/effects/juce_DropShadowEffect.cpp +++ b/source/modules/juce_graphics/effects/juce_DropShadowEffect.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/effects/juce_DropShadowEffect.h b/source/modules/juce_graphics/effects/juce_DropShadowEffect.h index 81c9ead80..061b84f34 100644 --- a/source/modules/juce_graphics/effects/juce_DropShadowEffect.h +++ b/source/modules/juce_graphics/effects/juce_DropShadowEffect.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/effects/juce_GlowEffect.cpp b/source/modules/juce_graphics/effects/juce_GlowEffect.cpp index a0557bba5..23005355f 100644 --- a/source/modules/juce_graphics/effects/juce_GlowEffect.cpp +++ b/source/modules/juce_graphics/effects/juce_GlowEffect.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/effects/juce_GlowEffect.h b/source/modules/juce_graphics/effects/juce_GlowEffect.h index dc3f8db0c..7237668ed 100644 --- a/source/modules/juce_graphics/effects/juce_GlowEffect.h +++ b/source/modules/juce_graphics/effects/juce_GlowEffect.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/effects/juce_ImageEffectFilter.h b/source/modules/juce_graphics/effects/juce_ImageEffectFilter.h index ad12378da..07116548e 100644 --- a/source/modules/juce_graphics/effects/juce_ImageEffectFilter.h +++ b/source/modules/juce_graphics/effects/juce_ImageEffectFilter.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_AttributedString.cpp b/source/modules/juce_graphics/fonts/juce_AttributedString.cpp index b7b916505..f128c5d37 100644 --- a/source/modules/juce_graphics/fonts/juce_AttributedString.cpp +++ b/source/modules/juce_graphics/fonts/juce_AttributedString.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_AttributedString.h b/source/modules/juce_graphics/fonts/juce_AttributedString.h index 8242e0d60..44494771d 100644 --- a/source/modules/juce_graphics/fonts/juce_AttributedString.h +++ b/source/modules/juce_graphics/fonts/juce_AttributedString.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_CustomTypeface.cpp b/source/modules/juce_graphics/fonts/juce_CustomTypeface.cpp index 36f71c8cb..11d37b084 100644 --- a/source/modules/juce_graphics/fonts/juce_CustomTypeface.cpp +++ b/source/modules/juce_graphics/fonts/juce_CustomTypeface.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_CustomTypeface.h b/source/modules/juce_graphics/fonts/juce_CustomTypeface.h index b71c2811e..75653f034 100644 --- a/source/modules/juce_graphics/fonts/juce_CustomTypeface.h +++ b/source/modules/juce_graphics/fonts/juce_CustomTypeface.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_Font.cpp b/source/modules/juce_graphics/fonts/juce_Font.cpp index 6b1ebdbc9..b6a6ec00a 100644 --- a/source/modules/juce_graphics/fonts/juce_Font.cpp +++ b/source/modules/juce_graphics/fonts/juce_Font.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_Font.h b/source/modules/juce_graphics/fonts/juce_Font.h index 399444889..8b4e96010 100644 --- a/source/modules/juce_graphics/fonts/juce_Font.h +++ b/source/modules/juce_graphics/fonts/juce_Font.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp b/source/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp index 3135a062d..648acfcc2 100644 --- a/source/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp +++ b/source/modules/juce_graphics/fonts/juce_GlyphArrangement.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_GlyphArrangement.h b/source/modules/juce_graphics/fonts/juce_GlyphArrangement.h index 11643b553..3ec14752c 100644 --- a/source/modules/juce_graphics/fonts/juce_GlyphArrangement.h +++ b/source/modules/juce_graphics/fonts/juce_GlyphArrangement.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_TextLayout.cpp b/source/modules/juce_graphics/fonts/juce_TextLayout.cpp index 4d8964bb3..817d5ec32 100644 --- a/source/modules/juce_graphics/fonts/juce_TextLayout.cpp +++ b/source/modules/juce_graphics/fonts/juce_TextLayout.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_TextLayout.h b/source/modules/juce_graphics/fonts/juce_TextLayout.h index de4841dc5..7e7e98235 100644 --- a/source/modules/juce_graphics/fonts/juce_TextLayout.h +++ b/source/modules/juce_graphics/fonts/juce_TextLayout.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_Typeface.cpp b/source/modules/juce_graphics/fonts/juce_Typeface.cpp index abc3968a4..cc1fef470 100644 --- a/source/modules/juce_graphics/fonts/juce_Typeface.cpp +++ b/source/modules/juce_graphics/fonts/juce_Typeface.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/fonts/juce_Typeface.h b/source/modules/juce_graphics/fonts/juce_Typeface.h index bc5b816ed..b5baec6d4 100644 --- a/source/modules/juce_graphics/fonts/juce_Typeface.h +++ b/source/modules/juce_graphics/fonts/juce_Typeface.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_AffineTransform.cpp b/source/modules/juce_graphics/geometry/juce_AffineTransform.cpp index 3b4919bcd..d2aa599b3 100644 --- a/source/modules/juce_graphics/geometry/juce_AffineTransform.cpp +++ b/source/modules/juce_graphics/geometry/juce_AffineTransform.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_AffineTransform.h b/source/modules/juce_graphics/geometry/juce_AffineTransform.h index e6fc1521f..bd61c2a90 100644 --- a/source/modules/juce_graphics/geometry/juce_AffineTransform.h +++ b/source/modules/juce_graphics/geometry/juce_AffineTransform.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_BorderSize.h b/source/modules/juce_graphics/geometry/juce_BorderSize.h index dfda42c83..bbf7593d3 100644 --- a/source/modules/juce_graphics/geometry/juce_BorderSize.h +++ b/source/modules/juce_graphics/geometry/juce_BorderSize.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -138,6 +145,16 @@ public: other.right + right }; } + /** Multiplies each member of the border by a scalar. */ + template + BorderSize multipliedBy (ScalarType scalar) const noexcept + { + return { static_cast (scalar * top), + static_cast (scalar * left), + static_cast (scalar * bottom), + static_cast (scalar * right) }; + } + //============================================================================== bool operator== (const BorderSize& other) const noexcept { return tie() == other.tie(); } bool operator!= (const BorderSize& other) const noexcept { return tie() != other.tie(); } diff --git a/source/modules/juce_graphics/geometry/juce_EdgeTable.cpp b/source/modules/juce_graphics/geometry/juce_EdgeTable.cpp index cd08b825a..7b6605380 100644 --- a/source/modules/juce_graphics/geometry/juce_EdgeTable.cpp +++ b/source/modules/juce_graphics/geometry/juce_EdgeTable.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_EdgeTable.h b/source/modules/juce_graphics/geometry/juce_EdgeTable.h index 8e268c3c1..f78e6fda1 100644 --- a/source/modules/juce_graphics/geometry/juce_EdgeTable.h +++ b/source/modules/juce_graphics/geometry/juce_EdgeTable.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_Line.h b/source/modules/juce_graphics/geometry/juce_Line.h index 0c737f4fc..940b09559 100644 --- a/source/modules/juce_graphics/geometry/juce_Line.h +++ b/source/modules/juce_graphics/geometry/juce_Line.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_Parallelogram.h b/source/modules/juce_graphics/geometry/juce_Parallelogram.h index d2e1007d0..3913dc1a9 100644 --- a/source/modules/juce_graphics/geometry/juce_Parallelogram.h +++ b/source/modules/juce_graphics/geometry/juce_Parallelogram.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_Path.cpp b/source/modules/juce_graphics/geometry/juce_Path.cpp index aa6c6f1d3..5026a75d0 100644 --- a/source/modules/juce_graphics/geometry/juce_Path.cpp +++ b/source/modules/juce_graphics/geometry/juce_Path.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_Path.h b/source/modules/juce_graphics/geometry/juce_Path.h index 5f5af3587..62dd72a18 100644 --- a/source/modules/juce_graphics/geometry/juce_Path.h +++ b/source/modules/juce_graphics/geometry/juce_Path.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_PathIterator.cpp b/source/modules/juce_graphics/geometry/juce_PathIterator.cpp index 6e64377f5..1239de232 100644 --- a/source/modules/juce_graphics/geometry/juce_PathIterator.cpp +++ b/source/modules/juce_graphics/geometry/juce_PathIterator.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_PathIterator.h b/source/modules/juce_graphics/geometry/juce_PathIterator.h index 6e4ccf105..b6a14c062 100644 --- a/source/modules/juce_graphics/geometry/juce_PathIterator.h +++ b/source/modules/juce_graphics/geometry/juce_PathIterator.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_PathStrokeType.cpp b/source/modules/juce_graphics/geometry/juce_PathStrokeType.cpp index 3bb4d6cf3..fae0391ab 100644 --- a/source/modules/juce_graphics/geometry/juce_PathStrokeType.cpp +++ b/source/modules/juce_graphics/geometry/juce_PathStrokeType.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_PathStrokeType.h b/source/modules/juce_graphics/geometry/juce_PathStrokeType.h index 90b1e6b17..0b49c756d 100644 --- a/source/modules/juce_graphics/geometry/juce_PathStrokeType.h +++ b/source/modules/juce_graphics/geometry/juce_PathStrokeType.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_Point.h b/source/modules/juce_graphics/geometry/juce_Point.h index 9c0597d4c..da183d1e1 100644 --- a/source/modules/juce_graphics/geometry/juce_Point.h +++ b/source/modules/juce_graphics/geometry/juce_Point.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_Rectangle.h b/source/modules/juce_graphics/geometry/juce_Rectangle.h index cbc0653f8..db7b479d0 100644 --- a/source/modules/juce_graphics/geometry/juce_Rectangle.h +++ b/source/modules/juce_graphics/geometry/juce_Rectangle.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_RectangleList.h b/source/modules/juce_graphics/geometry/juce_RectangleList.h index cb569c0fb..8e106cd40 100644 --- a/source/modules/juce_graphics/geometry/juce_RectangleList.h +++ b/source/modules/juce_graphics/geometry/juce_RectangleList.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/geometry/juce_Rectangle_test.cpp b/source/modules/juce_graphics/geometry/juce_Rectangle_test.cpp index 6a896dded..0ac97aeec 100644 --- a/source/modules/juce_graphics/geometry/juce_Rectangle_test.cpp +++ b/source/modules/juce_graphics/geometry/juce_Rectangle_test.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/image_formats/juce_GIFLoader.cpp b/source/modules/juce_graphics/image_formats/juce_GIFLoader.cpp index c5e7f10c0..f2cd0d86b 100644 --- a/source/modules/juce_graphics/image_formats/juce_GIFLoader.cpp +++ b/source/modules/juce_graphics/image_formats/juce_GIFLoader.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp b/source/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp index 82d5a286b..00f0251dd 100644 --- a/source/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp +++ b/source/modules/juce_graphics/image_formats/juce_JPEGLoader.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/image_formats/juce_PNGLoader.cpp b/source/modules/juce_graphics/image_formats/juce_PNGLoader.cpp index 69d122d08..137e47ce4 100644 --- a/source/modules/juce_graphics/image_formats/juce_PNGLoader.cpp +++ b/source/modules/juce_graphics/image_formats/juce_PNGLoader.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_Image.cpp b/source/modules/juce_graphics/images/juce_Image.cpp index efe6a83d4..e054ad551 100644 --- a/source/modules/juce_graphics/images/juce_Image.cpp +++ b/source/modules/juce_graphics/images/juce_Image.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_Image.h b/source/modules/juce_graphics/images/juce_Image.h index a869317b2..830ee6826 100644 --- a/source/modules/juce_graphics/images/juce_Image.h +++ b/source/modules/juce_graphics/images/juce_Image.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_ImageCache.cpp b/source/modules/juce_graphics/images/juce_ImageCache.cpp index f33a8113a..b1731eb57 100644 --- a/source/modules/juce_graphics/images/juce_ImageCache.cpp +++ b/source/modules/juce_graphics/images/juce_ImageCache.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_ImageCache.h b/source/modules/juce_graphics/images/juce_ImageCache.h index e3eae3312..2d74f94d6 100644 --- a/source/modules/juce_graphics/images/juce_ImageCache.h +++ b/source/modules/juce_graphics/images/juce_ImageCache.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp b/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp index 19e2e6b57..3b6063cd9 100644 --- a/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp +++ b/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.h b/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.h index 4fe3215e8..717a83cda 100644 --- a/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.h +++ b/source/modules/juce_graphics/images/juce_ImageConvolutionKernel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_ImageFileFormat.cpp b/source/modules/juce_graphics/images/juce_ImageFileFormat.cpp index e789f7354..31e825cca 100644 --- a/source/modules/juce_graphics/images/juce_ImageFileFormat.cpp +++ b/source/modules/juce_graphics/images/juce_ImageFileFormat.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_ImageFileFormat.h b/source/modules/juce_graphics/images/juce_ImageFileFormat.h index 397dbe30b..8fcd09d8d 100644 --- a/source/modules/juce_graphics/images/juce_ImageFileFormat.h +++ b/source/modules/juce_graphics/images/juce_ImageFileFormat.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/images/juce_ScaledImage.h b/source/modules/juce_graphics/images/juce_ScaledImage.h index b8aa2d47e..fac214536 100644 --- a/source/modules/juce_graphics/images/juce_ScaledImage.h +++ b/source/modules/juce_graphics/images/juce_ScaledImage.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/juce_graphics.cpp b/source/modules/juce_graphics/juce_graphics.cpp index b0e58ba2c..d852554be 100644 --- a/source/modules/juce_graphics/juce_graphics.cpp +++ b/source/modules/juce_graphics/juce_graphics.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/juce_graphics.h b/source/modules/juce_graphics/juce_graphics.h index 0d135293d..f0d4846de 100644 --- a/source/modules/juce_graphics/juce_graphics.h +++ b/source/modules/juce_graphics/juce_graphics.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_RenderingHelpers.h b/source/modules/juce_graphics/native/juce_RenderingHelpers.h index 2f33f809b..716236a7f 100644 --- a/source/modules/juce_graphics/native/juce_RenderingHelpers.h +++ b/source/modules/juce_graphics/native/juce_RenderingHelpers.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_android_Fonts.cpp b/source/modules/juce_graphics/native/juce_android_Fonts.cpp index ed1ea3d3f..2c82913b2 100644 --- a/source/modules/juce_graphics/native/juce_android_Fonts.cpp +++ b/source/modules/juce_graphics/native/juce_android_Fonts.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_android_GraphicsContext.cpp b/source/modules/juce_graphics/native/juce_android_GraphicsContext.cpp index 09a1204de..4a745e2bf 100644 --- a/source/modules/juce_graphics/native/juce_android_GraphicsContext.cpp +++ b/source/modules/juce_graphics/native/juce_android_GraphicsContext.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_android_IconHelpers.cpp b/source/modules/juce_graphics/native/juce_android_IconHelpers.cpp index dec72eaef..019da9d3b 100644 --- a/source/modules/juce_graphics/native/juce_android_IconHelpers.cpp +++ b/source/modules/juce_graphics/native/juce_android_IconHelpers.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_freetype_Fonts.cpp b/source/modules/juce_graphics/native/juce_freetype_Fonts.cpp index 1a86ea84b..2c34fa9e0 100644 --- a/source/modules/juce_graphics/native/juce_freetype_Fonts.cpp +++ b/source/modules/juce_graphics/native/juce_freetype_Fonts.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_linux_Fonts.cpp b/source/modules/juce_graphics/native/juce_linux_Fonts.cpp index e79f13586..d5e9cc13e 100644 --- a/source/modules/juce_graphics/native/juce_linux_Fonts.cpp +++ b/source/modules/juce_graphics/native/juce_linux_Fonts.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -156,7 +163,7 @@ private: if (name.containsIgnoreCase (choice.name)) return Characteristics { name }.withStyle (choice.style); - return Characteristics { *names.begin() }; + return Characteristics { names[0] }; } static Characteristics getDefaultSansSerifFontCharacteristics() @@ -211,10 +218,13 @@ Typeface::Ptr Font::getDefaultTypefaceForFont (const Font& font) Font f (font); - const auto characteristics = defaultInfo.getRealFontCharacteristics (font.getTypefaceName()); + const auto name = font.getTypefaceName(); + const auto characteristics = defaultInfo.getRealFontCharacteristics (name); f.setTypefaceName (characteristics.name); - if (font.getTypefaceStyle() == Font::getDefaultStyle()) + const auto styles = findAllTypefaceStyles (name); + + if (! styles.contains (font.getTypefaceStyle())) f.setTypefaceStyle (characteristics.style); return Typeface::createSystemTypefaceFor (f); diff --git a/source/modules/juce_graphics/native/juce_linux_IconHelpers.cpp b/source/modules/juce_graphics/native/juce_linux_IconHelpers.cpp index dec72eaef..019da9d3b 100644 --- a/source/modules/juce_graphics/native/juce_linux_IconHelpers.cpp +++ b/source/modules/juce_graphics/native/juce_linux_IconHelpers.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h b/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h index 586cc0a2d..aa323fa63 100644 --- a/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h +++ b/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm b/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm index 84bc55092..e190577b6 100644 --- a/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm +++ b/source/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h b/source/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h index 234d1be7c..4ccee76af 100644 --- a/source/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h +++ b/source/modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_mac_Fonts.mm b/source/modules/juce_graphics/native/juce_mac_Fonts.mm index 66e3b84cb..ed96d2a80 100644 --- a/source/modules/juce_graphics/native/juce_mac_Fonts.mm +++ b/source/modules/juce_graphics/native/juce_mac_Fonts.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_mac_IconHelpers.cpp b/source/modules/juce_graphics/native/juce_mac_IconHelpers.cpp index d2f61cd1c..ce4aa20c6 100644 --- a/source/modules/juce_graphics/native/juce_mac_IconHelpers.cpp +++ b/source/modules/juce_graphics/native/juce_mac_IconHelpers.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp b/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp index f35be9d9a..b5e3340f9 100644 --- a/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp +++ b/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h b/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h index 7129a968e..a407a77a5 100644 --- a/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h +++ b/source/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp b/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp index 124c8ba24..b82b4c535 100644 --- a/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp +++ b/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp b/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp index bd739c45d..da59341e6 100644 --- a/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp +++ b/source/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_win32_Fonts.cpp b/source/modules/juce_graphics/native/juce_win32_Fonts.cpp index 709f4e498..b7d4afe24 100644 --- a/source/modules/juce_graphics/native/juce_win32_Fonts.cpp +++ b/source/modules/juce_graphics/native/juce_win32_Fonts.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/native/juce_win32_IconHelpers.cpp b/source/modules/juce_graphics/native/juce_win32_IconHelpers.cpp index dec72eaef..019da9d3b 100644 --- a/source/modules/juce_graphics/native/juce_win32_IconHelpers.cpp +++ b/source/modules/juce_graphics/native/juce_win32_IconHelpers.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/placement/juce_Justification.h b/source/modules/juce_graphics/placement/juce_Justification.h index e8d7d8b45..4a8b79ad7 100644 --- a/source/modules/juce_graphics/placement/juce_Justification.h +++ b/source/modules/juce_graphics/placement/juce_Justification.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/placement/juce_RectanglePlacement.cpp b/source/modules/juce_graphics/placement/juce_RectanglePlacement.cpp index c66e543e3..9459bfbca 100644 --- a/source/modules/juce_graphics/placement/juce_RectanglePlacement.cpp +++ b/source/modules/juce_graphics/placement/juce_RectanglePlacement.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_graphics/placement/juce_RectanglePlacement.h b/source/modules/juce_graphics/placement/juce_RectanglePlacement.h index ef2bf2563..862d916f8 100644 --- a/source/modules/juce_graphics/placement/juce_RectanglePlacement.h +++ b/source/modules/juce_graphics/placement/juce_RectanglePlacement.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityActions.h b/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityActions.h index ba4b7e017..a9bc64d3b 100644 --- a/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityActions.h +++ b/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityActions.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityEvent.h b/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityEvent.h index c91d34d9f..159f11e0b 100644 --- a/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityEvent.h +++ b/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityEvent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityRole.h b/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityRole.h index 7f6b3b561..d80c5a1e9 100644 --- a/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityRole.h +++ b/source/modules/juce_gui_basics/accessibility/enums/juce_AccessibilityRole.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityCellInterface.h b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityCellInterface.h index 3842fa1db..049c39722 100644 --- a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityCellInterface.h +++ b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityCellInterface.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTableInterface.h b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTableInterface.h index ce60ac429..4f7f79449 100644 --- a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTableInterface.h +++ b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTableInterface.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTextInterface.h b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTextInterface.h index 24c7985f2..2099bb062 100644 --- a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTextInterface.h +++ b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTextInterface.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityValueInterface.h b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityValueInterface.h index b34811840..d77ba5eaf 100644 --- a/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityValueInterface.h +++ b/source/modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityValueInterface.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp b/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp index 978113513..7588bdd14 100644 --- a/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp +++ b/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.h b/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.h index 60cce699c..5cab7a705 100644 --- a/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.h +++ b/source/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/accessibility/juce_AccessibilityState.h b/source/modules/juce_gui_basics/accessibility/juce_AccessibilityState.h index 11fbb59e5..247a6c83c 100644 --- a/source/modules/juce_gui_basics/accessibility/juce_AccessibilityState.h +++ b/source/modules/juce_gui_basics/accessibility/juce_AccessibilityState.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/application/juce_Application.cpp b/source/modules/juce_gui_basics/application/juce_Application.cpp index 986a86d93..5e0844ba5 100644 --- a/source/modules/juce_gui_basics/application/juce_Application.cpp +++ b/source/modules/juce_gui_basics/application/juce_Application.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/application/juce_Application.h b/source/modules/juce_gui_basics/application/juce_Application.h index 4bf02eb13..169775494 100644 --- a/source/modules/juce_gui_basics/application/juce_Application.h +++ b/source/modules/juce_gui_basics/application/juce_Application.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp b/source/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp index 328570efb..3c272b545 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_ArrowButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ArrowButton.h b/source/modules/juce_gui_basics/buttons/juce_ArrowButton.h index 2173f0a83..70bb37765 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ArrowButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_ArrowButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_Button.cpp b/source/modules/juce_gui_basics/buttons/juce_Button.cpp index c4326a3e3..b66b88c2a 100644 --- a/source/modules/juce_gui_basics/buttons/juce_Button.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_Button.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_Button.h b/source/modules/juce_gui_basics/buttons/juce_Button.h index 2366f9e27..ce849023b 100644 --- a/source/modules/juce_gui_basics/buttons/juce_Button.h +++ b/source/modules/juce_gui_basics/buttons/juce_Button.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp b/source/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp index 1f6f97628..7c4ef9bc4 100644 --- a/source/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_DrawableButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_DrawableButton.h b/source/modules/juce_gui_basics/buttons/juce_DrawableButton.h index 4680f9eff..8503a5687 100644 --- a/source/modules/juce_gui_basics/buttons/juce_DrawableButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_DrawableButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp b/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp index e6d09b9af..1fdd25a23 100644 --- a/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h b/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h index 87ecade10..e4b676946 100644 --- a/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_HyperlinkButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ImageButton.cpp b/source/modules/juce_gui_basics/buttons/juce_ImageButton.cpp index bd414eadb..2d462fd5c 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ImageButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_ImageButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ImageButton.h b/source/modules/juce_gui_basics/buttons/juce_ImageButton.h index 698660a49..56f632222 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ImageButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_ImageButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp b/source/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp index 4e9743fe9..15c773b11 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ShapeButton.h b/source/modules/juce_gui_basics/buttons/juce_ShapeButton.h index f3d24117c..13f5c73e1 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ShapeButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_ShapeButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_TextButton.cpp b/source/modules/juce_gui_basics/buttons/juce_TextButton.cpp index 285df68b8..213b482f7 100644 --- a/source/modules/juce_gui_basics/buttons/juce_TextButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_TextButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_TextButton.h b/source/modules/juce_gui_basics/buttons/juce_TextButton.h index 2de70974f..770294bb9 100644 --- a/source/modules/juce_gui_basics/buttons/juce_TextButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_TextButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp b/source/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp index d5b91d022..0461ea12d 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_ToggleButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ToggleButton.h b/source/modules/juce_gui_basics/buttons/juce_ToggleButton.h index 738ea9762..d01488c7c 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ToggleButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_ToggleButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp b/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp index 79e7bb081..27c94dd9f 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp +++ b/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.h b/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.h index e6eefd6e1..ead752e0b 100644 --- a/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.h +++ b/source/modules/juce_gui_basics/buttons/juce_ToolbarButton.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h index c1339be9d..850fa3869 100644 --- a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h +++ b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandID.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp index 20d3bb45a..b00b9f077 100644 --- a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp +++ b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h index cf4e97604..ebd0d4690 100644 --- a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h +++ b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp index 0ba644a1d..bfa089b38 100644 --- a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp +++ b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h index 746378049..985951b6a 100644 --- a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h +++ b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp index f4daae246..ce51d068e 100644 --- a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp +++ b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h index 104faeadc..0c6c2045a 100644 --- a/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h +++ b/source/modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp b/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp index 738c44565..84e8a56a0 100644 --- a/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp +++ b/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h b/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h index 048b82a84..c5f62b03e 100644 --- a/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h +++ b/source/modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_CachedComponentImage.h b/source/modules/juce_gui_basics/components/juce_CachedComponentImage.h index 75465d1b2..9808a3827 100644 --- a/source/modules/juce_gui_basics/components/juce_CachedComponentImage.h +++ b/source/modules/juce_gui_basics/components/juce_CachedComponentImage.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_Component.cpp b/source/modules/juce_gui_basics/components/juce_Component.cpp index 601b92b76..e2a42bab0 100644 --- a/source/modules/juce_gui_basics/components/juce_Component.cpp +++ b/source/modules/juce_gui_basics/components/juce_Component.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -745,6 +752,16 @@ void Component::addToDesktop (int styleWanted, void* nativeWindowToAttachTo) peer->setConstrainer (currentConstrainer); repaint(); + + #if JUCE_LINUX + // Creating the peer Image on Linux will change the reported position of the window. If + // the Image creation is interleaved with the coming configureNotifyEvents the window + // will appear in the wrong position. To avoid this, we force the Image creation here, + // before handling any of the configureNotifyEvents. The Linux implementation of + // performAnyPendingRepaintsNow() will force update the peer position if necessary. + peer->performAnyPendingRepaintsNow(); + #endif + internalHierarchyChanged(); if (auto* handler = getAccessibilityHandler()) diff --git a/source/modules/juce_gui_basics/components/juce_Component.h b/source/modules/juce_gui_basics/components/juce_Component.h index e71596898..24529bf53 100644 --- a/source/modules/juce_gui_basics/components/juce_Component.h +++ b/source/modules/juce_gui_basics/components/juce_Component.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_ComponentListener.cpp b/source/modules/juce_gui_basics/components/juce_ComponentListener.cpp index a3ca0e84b..f93e89c31 100644 --- a/source/modules/juce_gui_basics/components/juce_ComponentListener.cpp +++ b/source/modules/juce_gui_basics/components/juce_ComponentListener.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_ComponentListener.h b/source/modules/juce_gui_basics/components/juce_ComponentListener.h index 05708f81d..f4253e197 100644 --- a/source/modules/juce_gui_basics/components/juce_ComponentListener.h +++ b/source/modules/juce_gui_basics/components/juce_ComponentListener.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_ComponentTraverser.h b/source/modules/juce_gui_basics/components/juce_ComponentTraverser.h index a26d4dba3..a5d4e3a65 100644 --- a/source/modules/juce_gui_basics/components/juce_ComponentTraverser.h +++ b/source/modules/juce_gui_basics/components/juce_ComponentTraverser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_FocusTraverser.cpp b/source/modules/juce_gui_basics/components/juce_FocusTraverser.cpp index 73ef8ab36..188c33d6e 100644 --- a/source/modules/juce_gui_basics/components/juce_FocusTraverser.cpp +++ b/source/modules/juce_gui_basics/components/juce_FocusTraverser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_FocusTraverser.h b/source/modules/juce_gui_basics/components/juce_FocusTraverser.h index ac76cdbaf..5efae3317 100644 --- a/source/modules/juce_gui_basics/components/juce_FocusTraverser.h +++ b/source/modules/juce_gui_basics/components/juce_FocusTraverser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp b/source/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp index 810003425..5d1287a7c 100644 --- a/source/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp +++ b/source/modules/juce_gui_basics/components/juce_ModalComponentManager.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/components/juce_ModalComponentManager.h b/source/modules/juce_gui_basics/components/juce_ModalComponentManager.h index 0978da57f..37b6ea1f5 100644 --- a/source/modules/juce_gui_basics/components/juce_ModalComponentManager.h +++ b/source/modules/juce_gui_basics/components/juce_ModalComponentManager.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/desktop/juce_Desktop.cpp b/source/modules/juce_gui_basics/desktop/juce_Desktop.cpp index c12cd9076..8054f49cf 100644 --- a/source/modules/juce_gui_basics/desktop/juce_Desktop.cpp +++ b/source/modules/juce_gui_basics/desktop/juce_Desktop.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/desktop/juce_Desktop.h b/source/modules/juce_gui_basics/desktop/juce_Desktop.h index f33ca1a9e..45388b32a 100644 --- a/source/modules/juce_gui_basics/desktop/juce_Desktop.h +++ b/source/modules/juce_gui_basics/desktop/juce_Desktop.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/desktop/juce_Displays.cpp b/source/modules/juce_gui_basics/desktop/juce_Displays.cpp index a5d297ff8..cff16433c 100644 --- a/source/modules/juce_gui_basics/desktop/juce_Displays.cpp +++ b/source/modules/juce_gui_basics/desktop/juce_Displays.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/desktop/juce_Displays.h b/source/modules/juce_gui_basics/desktop/juce_Displays.h index a0846dc69..aecf834ee 100644 --- a/source/modules/juce_gui_basics/desktop/juce_Displays.h +++ b/source/modules/juce_gui_basics/desktop/juce_Displays.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_Drawable.cpp b/source/modules/juce_gui_basics/drawables/juce_Drawable.cpp index 34d1b7479..2f2143505 100644 --- a/source/modules/juce_gui_basics/drawables/juce_Drawable.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_Drawable.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_Drawable.h b/source/modules/juce_gui_basics/drawables/juce_Drawable.h index 5cdf17b4b..9215a9631 100644 --- a/source/modules/juce_gui_basics/drawables/juce_Drawable.h +++ b/source/modules/juce_gui_basics/drawables/juce_Drawable.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp b/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp index ee75c2d8e..a0836c0a1 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.h b/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.h index ea3a70e9c..9e4d53fde 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.h +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableComposite.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp b/source/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp index 3bee28432..04b2e7ebc 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableImage.h b/source/modules/juce_gui_basics/drawables/juce_DrawableImage.h index b803e6ff4..6e1bb162a 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableImage.h +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableImage.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp b/source/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp index 6058ba68b..d7a36a83f 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_DrawablePath.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawablePath.h b/source/modules/juce_gui_basics/drawables/juce_DrawablePath.h index 207cca9ce..523db9f39 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawablePath.h +++ b/source/modules/juce_gui_basics/drawables/juce_DrawablePath.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp b/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp index e31fe9971..6c8fbab77 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h b/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h index 568cedec6..98883a03e 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableRectangle.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp b/source/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp index 67e0ff01b..54e541312 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableShape.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableShape.h b/source/modules/juce_gui_basics/drawables/juce_DrawableShape.h index f169527cc..b4ddb9eeb 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableShape.h +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableShape.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableText.cpp b/source/modules/juce_gui_basics/drawables/juce_DrawableText.cpp index ebfc522fb..361aad61e 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableText.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableText.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_DrawableText.h b/source/modules/juce_gui_basics/drawables/juce_DrawableText.h index c30dc36db..76ba450d4 100644 --- a/source/modules/juce_gui_basics/drawables/juce_DrawableText.h +++ b/source/modules/juce_gui_basics/drawables/juce_DrawableText.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/drawables/juce_SVGParser.cpp b/source/modules/juce_gui_basics/drawables/juce_SVGParser.cpp index 331416bec..7b4d83cc2 100644 --- a/source/modules/juce_gui_basics/drawables/juce_SVGParser.cpp +++ b/source/modules/juce_gui_basics/drawables/juce_SVGParser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp b/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp index 30279592e..9887b1c36 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.h b/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.h index e951be95e..1edc79f31 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_ContentSharer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp index 2f4eb53fb..f336a0022 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h index 75bad0a37..a57f9b2c2 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp index 8756f9e96..134e45119 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h index eb19ad732..c1668637b 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp b/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp index d5df29355..39f337f4c 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h index 7c67c54ee..e70857bc0 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h b/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h index 9c53dc306..7bd30cc5b 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp b/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp index 81e03b8d4..10224c49e 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.h b/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.h index 167c1a273..4bae64c91 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileChooser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp b/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp index 4d0285473..814c73ad3 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h b/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h index 526ee7f30..904dac3c3 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp b/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp index 22bcef2ec..8e83749c1 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h index b5c692293..b5bfe529a 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileListComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h index 5c60d96b2..8fc28cea6 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp b/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp index 5e0e9d30f..65ceb66a3 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h index f453fdb59..557453d20 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp b/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp index 7b8b8c07c..f5f1e6438 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h index 1cfd8ffb1..b021bc758 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp b/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp index 038379a96..3d3c4b130 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h index e3b1d9621..4c8e75d1f 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp b/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp index 0ade91dd9..30094dc29 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp +++ b/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h b/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h index 8ee7e275a..2c354a73e 100644 --- a/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h +++ b/source/modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/juce_gui_basics.cpp b/source/modules/juce_gui_basics/juce_gui_basics.cpp index bd19f7bec..19319a17a 100644 --- a/source/modules/juce_gui_basics/juce_gui_basics.cpp +++ b/source/modules/juce_gui_basics/juce_gui_basics.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -44,10 +51,6 @@ #import #import - #if JUCE_SUPPORT_CARBON - #import // still needed for SetSystemUIMode() - #endif - #elif JUCE_IOS #if JUCE_PUSH_NOTIFICATIONS && defined (__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 #import @@ -63,6 +66,7 @@ #include #include #include + #include #if JUCE_MSVC #include @@ -79,6 +83,7 @@ #pragma comment(lib, "vfw32.lib") #pragma comment(lib, "imm32.lib") #pragma comment(lib, "comctl32.lib") + #pragma comment(lib, "dxgi.lib") #if JUCE_OPENGL #pragma comment(lib, "OpenGL32.Lib") diff --git a/source/modules/juce_gui_basics/juce_gui_basics.h b/source/modules/juce_gui_basics/juce_gui_basics.h index 8878ae4c6..28097d128 100644 --- a/source/modules/juce_gui_basics/juce_gui_basics.h +++ b/source/modules/juce_gui_basics/juce_gui_basics.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -36,10 +43,11 @@ minimumCppStandard: 14 dependencies: juce_graphics juce_data_structures - OSXFrameworks: Carbon Cocoa QuartzCore + OSXFrameworks: Cocoa QuartzCore WeakOSXFrameworks: Metal MetalKit iOSFrameworks: CoreServices UIKit WeakiOSFrameworks: Metal MetalKit + mingwLibs: dxgi END_JUCE_MODULE_DECLARATION diff --git a/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp b/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp index b2ae0e611..919f5f53a 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp +++ b/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.h b/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.h index ed267cd32..a3975560d 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.h +++ b/source/modules/juce_gui_basics/keyboard/juce_CaretComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp b/source/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp index 2f7dd53c2..e8938c1e3 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp +++ b/source/modules/juce_gui_basics/keyboard/juce_KeyListener.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_KeyListener.h b/source/modules/juce_gui_basics/keyboard/juce_KeyListener.h index 9a0b99d2a..da33a7ea9 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_KeyListener.h +++ b/source/modules/juce_gui_basics/keyboard/juce_KeyListener.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp b/source/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp index 1c1cf70cd..95645ec45 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp +++ b/source/modules/juce_gui_basics/keyboard/juce_KeyPress.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_KeyPress.h b/source/modules/juce_gui_basics/keyboard/juce_KeyPress.h index bb8dd0b72..82d988965 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_KeyPress.h +++ b/source/modules/juce_gui_basics/keyboard/juce_KeyPress.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp b/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp index 2ddce8c52..0aab730be 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp +++ b/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h b/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h index f987b9fff..c8b781760 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h +++ b/source/modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp b/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp index 17bd555aa..280150408 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp +++ b/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h b/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h index 1b4411422..5270459e4 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h +++ b/source/modules/juce_gui_basics/keyboard/juce_ModifierKeys.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h b/source/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h index a2ed24578..2a8ce34da 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h +++ b/source/modules/juce_gui_basics/keyboard/juce_SystemClipboard.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h b/source/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h index cc16778b6..4976bb943 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h +++ b/source/modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h b/source/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h index 0d8c78533..c89f0390a 100644 --- a/source/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h +++ b/source/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_AnimatedPosition.h b/source/modules/juce_gui_basics/layout/juce_AnimatedPosition.h index 0306ecd0c..20d9f9f67 100644 --- a/source/modules/juce_gui_basics/layout/juce_AnimatedPosition.h +++ b/source/modules/juce_gui_basics/layout/juce_AnimatedPosition.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h b/source/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h index 0cac5551d..107138c77 100644 --- a/source/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h +++ b/source/modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp b/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp index a18fc962b..3095bde9b 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.h b/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.h index b4ee3ddd2..ecbed0f9f 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.h +++ b/source/modules/juce_gui_basics/layout/juce_ComponentAnimator.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp b/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp index ac3aec1d9..7c4988003 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h b/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h index 577224f5c..2a00d93e6 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h +++ b/source/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp b/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp index a9019dd1f..a3c002cbe 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.h b/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.h index dc9fdd4ce..daff94ccb 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.h +++ b/source/modules/juce_gui_basics/layout/juce_ComponentBuilder.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp b/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp index 1c0e75fe6..c943bea96 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h b/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h index 61c2238ef..fac4c27e9 100644 --- a/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h +++ b/source/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp b/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp index 8ce2ae222..bb1fabc38 100644 --- a/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h b/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h index d7f89061b..db959f34d 100644 --- a/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h +++ b/source/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_FlexBox.cpp b/source/modules/juce_gui_basics/layout/juce_FlexBox.cpp index 2cf36ef5f..9a7a2469a 100644 --- a/source/modules/juce_gui_basics/layout/juce_FlexBox.cpp +++ b/source/modules/juce_gui_basics/layout/juce_FlexBox.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_FlexBox.h b/source/modules/juce_gui_basics/layout/juce_FlexBox.h index 4a5f84673..8cbdac5dd 100644 --- a/source/modules/juce_gui_basics/layout/juce_FlexBox.h +++ b/source/modules/juce_gui_basics/layout/juce_FlexBox.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_FlexItem.h b/source/modules/juce_gui_basics/layout/juce_FlexItem.h index 819e0e3ee..1dfd59a69 100644 --- a/source/modules/juce_gui_basics/layout/juce_FlexItem.h +++ b/source/modules/juce_gui_basics/layout/juce_FlexItem.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_Grid.cpp b/source/modules/juce_gui_basics/layout/juce_Grid.cpp index 994051bfa..36a397f50 100644 --- a/source/modules/juce_gui_basics/layout/juce_Grid.cpp +++ b/source/modules/juce_gui_basics/layout/juce_Grid.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_Grid.h b/source/modules/juce_gui_basics/layout/juce_Grid.h index 927c659b6..ce261d219 100644 --- a/source/modules/juce_gui_basics/layout/juce_Grid.h +++ b/source/modules/juce_gui_basics/layout/juce_Grid.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_GridItem.cpp b/source/modules/juce_gui_basics/layout/juce_GridItem.cpp index 17776f0b0..c1c6b4662 100644 --- a/source/modules/juce_gui_basics/layout/juce_GridItem.cpp +++ b/source/modules/juce_gui_basics/layout/juce_GridItem.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_GridItem.h b/source/modules/juce_gui_basics/layout/juce_GridItem.h index 5d0e76b14..314d65392 100644 --- a/source/modules/juce_gui_basics/layout/juce_GridItem.h +++ b/source/modules/juce_gui_basics/layout/juce_GridItem.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_GroupComponent.cpp b/source/modules/juce_gui_basics/layout/juce_GroupComponent.cpp index 9bf5f2189..e7944b7be 100644 --- a/source/modules/juce_gui_basics/layout/juce_GroupComponent.cpp +++ b/source/modules/juce_gui_basics/layout/juce_GroupComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_GroupComponent.h b/source/modules/juce_gui_basics/layout/juce_GroupComponent.h index 9cb0edfde..e45b15f92 100644 --- a/source/modules/juce_gui_basics/layout/juce_GroupComponent.h +++ b/source/modules/juce_gui_basics/layout/juce_GroupComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp b/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp index 96d39a798..255d3306c 100644 --- a/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp +++ b/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h b/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h index 42c73e31c..52ed93118 100644 --- a/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h +++ b/source/modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp b/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp index 5b0bcb41b..36fcbf343 100644 --- a/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h b/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h index 89cbb11d5..bdab8b985 100644 --- a/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h +++ b/source/modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp b/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp index a5b696757..83535a078 100644 --- a/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h b/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h index 9c38358d3..01e938821 100644 --- a/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h +++ b/source/modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp b/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp index bcdf44edd..8629e5fc1 100644 --- a/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h b/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h index f217247ba..e3fc26de9 100644 --- a/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h +++ b/source/modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ScrollBar.cpp b/source/modules/juce_gui_basics/layout/juce_ScrollBar.cpp index 2c4b1b8c5..4d5052bd0 100644 --- a/source/modules/juce_gui_basics/layout/juce_ScrollBar.cpp +++ b/source/modules/juce_gui_basics/layout/juce_ScrollBar.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_ScrollBar.h b/source/modules/juce_gui_basics/layout/juce_ScrollBar.h index 3c03336d2..a6d94185a 100644 --- a/source/modules/juce_gui_basics/layout/juce_ScrollBar.h +++ b/source/modules/juce_gui_basics/layout/juce_ScrollBar.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_SidePanel.cpp b/source/modules/juce_gui_basics/layout/juce_SidePanel.cpp index 6580a6c11..758b5d96a 100644 --- a/source/modules/juce_gui_basics/layout/juce_SidePanel.cpp +++ b/source/modules/juce_gui_basics/layout/juce_SidePanel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_SidePanel.h b/source/modules/juce_gui_basics/layout/juce_SidePanel.h index 3e9960588..59395f10d 100644 --- a/source/modules/juce_gui_basics/layout/juce_SidePanel.h +++ b/source/modules/juce_gui_basics/layout/juce_SidePanel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp index 1796baabe..4505a179f 100644 --- a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp +++ b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h index aca67d9c3..fa53c71ac 100644 --- a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h +++ b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp index c601d39fd..82dd81b70 100644 --- a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp +++ b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h index 18a114249..249755a21 100644 --- a/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h +++ b/source/modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp b/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp index d18059e18..30c65f1e9 100644 --- a/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp +++ b/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h b/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h index 3ced45bc3..a6b7e3f8c 100644 --- a/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h +++ b/source/modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp b/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp index c2a5e8979..ee0485d0d 100644 --- a/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp +++ b/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h b/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h index 1172f4d21..c4ab1a434 100644 --- a/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h +++ b/source/modules/juce_gui_basics/layout/juce_TabbedButtonBar.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp b/source/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp index e3d4ea190..b19bc3d30 100644 --- a/source/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp +++ b/source/modules/juce_gui_basics/layout/juce_TabbedComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_TabbedComponent.h b/source/modules/juce_gui_basics/layout/juce_TabbedComponent.h index 8203c4792..83528440d 100644 --- a/source/modules/juce_gui_basics/layout/juce_TabbedComponent.h +++ b/source/modules/juce_gui_basics/layout/juce_TabbedComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/layout/juce_Viewport.cpp b/source/modules/juce_gui_basics/layout/juce_Viewport.cpp index 750882697..c30276326 100644 --- a/source/modules/juce_gui_basics/layout/juce_Viewport.cpp +++ b/source/modules/juce_gui_basics/layout/juce_Viewport.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -83,7 +90,7 @@ struct Viewport::DragToScrollListener : private MouseListener, if (e.source == scrollSource && ! doesMouseEventComponentBlockViewportDrag (e.eventComponent)) { - auto totalOffset = e.getOffsetFromDragStart().toFloat(); + auto totalOffset = e.getEventRelativeTo (&viewport).getOffsetFromDragStart().toFloat(); if (! isDragging && totalOffset.getDistanceFromOrigin() > 8.0f && viewportWouldScrollOnEvent (&viewport, e.source)) { diff --git a/source/modules/juce_gui_basics/layout/juce_Viewport.h b/source/modules/juce_gui_basics/layout/juce_Viewport.h index 41f20de6c..071f4be64 100644 --- a/source/modules/juce_gui_basics/layout/juce_Viewport.h +++ b/source/modules/juce_gui_basics/layout/juce_Viewport.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp index a0734b50f..af5af2129 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h index 2ea348b37..d609e3c4d 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp index 638f7aa79..004d68455 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h index ed4c60611..08de34e0d 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp index 75318ae96..d0e86e63b 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h index 187bc2977..073eb7207 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp index d8e57bef6..0ec5d7d25 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h index e2d35b353..88e896c7c 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp index 8f4ba1565..bd87b26a9 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h index d8c8939ec..f2072f198 100644 --- a/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h +++ b/source/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp b/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp index 68699b191..dc9f961a8 100644 --- a/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp +++ b/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h b/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h index a1885e141..71218ed19 100644 --- a/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h +++ b/source/modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp b/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp index c1d5a9818..99bec2c98 100644 --- a/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp +++ b/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.h b/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.h index e4fb01db2..602e7bf0a 100644 --- a/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.h +++ b/source/modules/juce_gui_basics/menus/juce_MenuBarComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp b/source/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp index 01e2442f5..d56dae64b 100644 --- a/source/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp +++ b/source/modules/juce_gui_basics/menus/juce_MenuBarModel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/menus/juce_MenuBarModel.h b/source/modules/juce_gui_basics/menus/juce_MenuBarModel.h index 9ec575217..89c98961f 100644 --- a/source/modules/juce_gui_basics/menus/juce_MenuBarModel.h +++ b/source/modules/juce_gui_basics/menus/juce_MenuBarModel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/source/modules/juce_gui_basics/menus/juce_PopupMenu.cpp index 2a357bd4f..f4dbd2898 100644 --- a/source/modules/juce_gui_basics/menus/juce_PopupMenu.cpp +++ b/source/modules/juce_gui_basics/menus/juce_PopupMenu.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -509,10 +516,14 @@ struct MenuWindow : public Component auto resultID = options.hasWatchedComponentBeenDeleted() ? 0 : getResultItemID (item); exitModalState (resultID); - exitingModalState = true; - if (makeInvisible && deletionChecker != nullptr) - setVisible (false); + if (deletionChecker != nullptr) + { + exitingModalState = true; + + if (makeInvisible) + setVisible (false); + } if (resultID != 0 && item != nullptr diff --git a/source/modules/juce_gui_basics/menus/juce_PopupMenu.h b/source/modules/juce_gui_basics/menus/juce_PopupMenu.h index f66ebd9eb..be05c9af2 100644 --- a/source/modules/juce_gui_basics/menus/juce_PopupMenu.h +++ b/source/modules/juce_gui_basics/menus/juce_PopupMenu.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp b/source/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp index 2e19c6ef2..009657d66 100644 --- a/source/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp +++ b/source/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/misc/juce_BubbleComponent.h b/source/modules/juce_gui_basics/misc/juce_BubbleComponent.h index 0c8c32c5b..43700942f 100644 --- a/source/modules/juce_gui_basics/misc/juce_BubbleComponent.h +++ b/source/modules/juce_gui_basics/misc/juce_BubbleComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/misc/juce_DropShadower.cpp b/source/modules/juce_gui_basics/misc/juce_DropShadower.cpp index fe2187186..44604f2cf 100644 --- a/source/modules/juce_gui_basics/misc/juce_DropShadower.cpp +++ b/source/modules/juce_gui_basics/misc/juce_DropShadower.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -86,8 +93,7 @@ public: ParentVisibilityChangedListener (Component& r, ComponentListener& l) : root (&r), listener (&l) { - if (auto* firstParent = root->getParentComponent()) - updateParentHierarchy (firstParent); + updateParentHierarchy(); if ((SystemStats::getOperatingSystemType() & SystemStats::Windows) != 0) { @@ -103,16 +109,16 @@ public: comp->removeComponentListener (this); } - void componentVisibilityChanged (Component&) override + void componentVisibilityChanged (Component& component) override { - listener->componentVisibilityChanged (*root); + if (root != &component) + listener->componentVisibilityChanged (*root); } void componentParentHierarchyChanged (Component& component) override { if (root == &component) - if (auto* firstParent = root->getParentComponent()) - updateParentHierarchy (firstParent); + updateParentHierarchy(); } bool isWindowOnVirtualDesktop() const noexcept { return isOnVirtualDesktop; } @@ -133,13 +139,13 @@ private: WeakReference ref; }; - void updateParentHierarchy (Component* rootComponent) + void updateParentHierarchy() { const auto lastSeenComponents = std::exchange (observedComponents, [&] { std::set result; - for (auto node = rootComponent; node != nullptr; node = node->getParentComponent()) + for (auto node = root; node != nullptr; node = node->getParentComponent()) result.emplace (*node); return result; diff --git a/source/modules/juce_gui_basics/misc/juce_DropShadower.h b/source/modules/juce_gui_basics/misc/juce_DropShadower.h index 54207a09d..816b78527 100644 --- a/source/modules/juce_gui_basics/misc/juce_DropShadower.h +++ b/source/modules/juce_gui_basics/misc/juce_DropShadower.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/misc/juce_FocusOutline.cpp b/source/modules/juce_gui_basics/misc/juce_FocusOutline.cpp index 93e8169bd..ad30f2658 100644 --- a/source/modules/juce_gui_basics/misc/juce_FocusOutline.cpp +++ b/source/modules/juce_gui_basics/misc/juce_FocusOutline.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/misc/juce_FocusOutline.h b/source/modules/juce_gui_basics/misc/juce_FocusOutline.h index 872ef41b7..fa1fc4117 100644 --- a/source/modules/juce_gui_basics/misc/juce_FocusOutline.h +++ b/source/modules/juce_gui_basics/misc/juce_FocusOutline.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp b/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp index afc2503a3..c36306d2f 100644 --- a/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp +++ b/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -22,12 +29,12 @@ namespace juce /* ============================================================================== - In accordance with the terms of the JUCE 6 End-Use License Agreement, the + In accordance with the terms of the JUCE 7 End-Use License Agreement, the JUCE Code in SECTION A cannot be removed, changed or otherwise rendered ineffective unless you have a JUCE Indie or Pro license, or are using JUCE under the GPL v3 license. - End User License Agreement: www.juce.com/juce-6-licence + End User License Agreement: www.juce.com/juce-7-licence ============================================================================== */ diff --git a/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.h b/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.h index 89a34508a..4d52410f9 100644 --- a/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.h +++ b/source/modules/juce_gui_basics/misc/juce_JUCESplashScreen.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -19,12 +26,12 @@ /* ============================================================================== - In accordance with the terms of the JUCE 6 End-Use License Agreement, the + In accordance with the terms of the JUCE 7 End-Use License Agreement, the JUCE Code in SECTION A cannot be removed, changed or otherwise rendered ineffective unless you have a JUCE Indie or Pro license, or are using JUCE under the GPL v3 license. - End User License Agreement: www.juce.com/juce-6-licence + End User License Agreement: www.juce.com/juce-7-licence ============================================================================== */ diff --git a/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp b/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp index 74b7d32d2..813bd9318 100644 --- a/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp +++ b/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.h b/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.h index 4e2f3f81a..d4abd2312 100644 --- a/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.h +++ b/source/modules/juce_gui_basics/mouse/juce_ComponentDragger.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp b/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp index 057f8d877..73b182bc2 100644 --- a/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp +++ b/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h b/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h index 443c91531..ed5d48aaf 100644 --- a/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h +++ b/source/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h b/source/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h index 723e6d74e..8a8ead168 100644 --- a/source/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h +++ b/source/modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h b/source/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h index 7f6a947d5..fc1eca91b 100644 --- a/source/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h +++ b/source/modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_LassoComponent.h b/source/modules/juce_gui_basics/mouse/juce_LassoComponent.h index f0f484e2a..383ba5388 100644 --- a/source/modules/juce_gui_basics/mouse/juce_LassoComponent.h +++ b/source/modules/juce_gui_basics/mouse/juce_LassoComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp b/source/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp index 7a6c239ce..0be0e0c4e 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp +++ b/source/modules/juce_gui_basics/mouse/juce_MouseCursor.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseCursor.h b/source/modules/juce_gui_basics/mouse/juce_MouseCursor.h index 06fcbef48..2db3a5dfd 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseCursor.h +++ b/source/modules/juce_gui_basics/mouse/juce_MouseCursor.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp b/source/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp index 20333ae85..6a450950a 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp +++ b/source/modules/juce_gui_basics/mouse/juce_MouseEvent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseEvent.h b/source/modules/juce_gui_basics/mouse/juce_MouseEvent.h index 754f32dbc..12ec11f14 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseEvent.h +++ b/source/modules/juce_gui_basics/mouse/juce_MouseEvent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp b/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp index af37d2779..ae47b79fe 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp +++ b/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h b/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h index d49785ba7..1f4842370 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h +++ b/source/modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp b/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp index 2c13ec813..24d0e63a0 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp +++ b/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.h b/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.h index dd8e88237..945295b04 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.h +++ b/source/modules/juce_gui_basics/mouse/juce_MouseInputSource.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseListener.cpp b/source/modules/juce_gui_basics/mouse/juce_MouseListener.cpp index 707224b12..228cc96a5 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseListener.cpp +++ b/source/modules/juce_gui_basics/mouse/juce_MouseListener.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_MouseListener.h b/source/modules/juce_gui_basics/mouse/juce_MouseListener.h index 361f32474..5094ab336 100644 --- a/source/modules/juce_gui_basics/mouse/juce_MouseListener.h +++ b/source/modules/juce_gui_basics/mouse/juce_MouseListener.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_PointerState.h b/source/modules/juce_gui_basics/mouse/juce_PointerState.h index 9e791e37c..2b516792b 100644 --- a/source/modules/juce_gui_basics/mouse/juce_PointerState.h +++ b/source/modules/juce_gui_basics/mouse/juce_PointerState.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h b/source/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h index 6d30dd813..f670992b4 100644 --- a/source/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h +++ b/source/modules/juce_gui_basics/mouse/juce_SelectedItemSet.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h b/source/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h index 9779daf6c..074de9b0c 100644 --- a/source/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h +++ b/source/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/mouse/juce_TooltipClient.h b/source/modules/juce_gui_basics/mouse/juce_TooltipClient.h index 05f9c3875..a0976b455 100644 --- a/source/modules/juce_gui_basics/mouse/juce_TooltipClient.h +++ b/source/modules/juce_gui_basics/mouse/juce_TooltipClient.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h b/source/modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h index b3aaa5b31..97bc65be6 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_android_Accessibility.cpp b/source/modules/juce_gui_basics/native/accessibility/juce_android_Accessibility.cpp index eedfb3dfa..06b5a198c 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_android_Accessibility.cpp +++ b/source/modules/juce_gui_basics/native/accessibility/juce_android_Accessibility.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_ios_Accessibility.mm b/source/modules/juce_gui_basics/native/accessibility/juce_ios_Accessibility.mm index ab9a8d355..e1a5d1d17 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_ios_Accessibility.mm +++ b/source/modules/juce_gui_basics/native/accessibility/juce_ios_Accessibility.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm b/source/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm index 9b19c8429..bf3c38c95 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm +++ b/source/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_mac_AccessibilitySharedCode.mm b/source/modules/juce_gui_basics/native/accessibility/juce_mac_AccessibilitySharedCode.mm index 9206b80be..6eb5b6929 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_mac_AccessibilitySharedCode.mm +++ b/source/modules/juce_gui_basics/native/accessibility/juce_mac_AccessibilitySharedCode.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp b/source/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp index fbc8bc47f..88d68d95c 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp b/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp index 63f3c84bd..de17aae67 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h index a415c38b1..a00e6badd 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_AccessibilityElement.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h index 45547c100..b03fe8cd8 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_ComInterfaces.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h index 130353d06..de1772f0c 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAExpandCollapseProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h index 1430cc3ad..251a3c5a8 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridItemProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h index c4d420fc8..6359f74bc 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAGridProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAHelpers.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAHelpers.h index e9fe86dd5..a234fceb9 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAHelpers.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAHelpers.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAInvokeProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAInvokeProvider.h index aa9d2605a..e991abb61 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAInvokeProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAInvokeProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviderBase.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviderBase.h index a6cd52332..35bfe1a33 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviderBase.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviderBase.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviders.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviders.h index 6c7218d58..06bede9d9 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviders.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAProviders.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIARangeValueProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIARangeValueProvider.h index 834afe3ad..4b0c743aa 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIARangeValueProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIARangeValueProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIASelectionProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIASelectionProvider.h index 84dd8de8e..dc0427a84 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIASelectionProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIASelectionProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATextProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATextProvider.h index f5e7c2301..c4a312cbd 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATextProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATextProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAToggleProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAToggleProvider.h index da1549ee6..072631591 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAToggleProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAToggleProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATransformProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATransformProvider.h index abeeacd1e..4ecdecfeb 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATransformProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIATransformProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAValueProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAValueProvider.h index 08fd5e9d9..095595704 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAValueProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAValueProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAWindowProvider.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAWindowProvider.h index 4a25ac8b3..d3abd8cdf 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAWindowProvider.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_UIAWindowProvider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/accessibility/juce_win32_WindowsUIAWrapper.h b/source/modules/juce_gui_basics/native/accessibility/juce_win32_WindowsUIAWrapper.h index 669bd6d18..9b7cf8789 100644 --- a/source/modules/juce_gui_basics/native/accessibility/juce_win32_WindowsUIAWrapper.h +++ b/source/modules/juce_gui_basics/native/accessibility/juce_win32_WindowsUIAWrapper.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_MultiTouchMapper.h b/source/modules/juce_gui_basics/native/juce_MultiTouchMapper.h index 3c430453d..e55020969 100644 --- a/source/modules/juce_gui_basics/native/juce_MultiTouchMapper.h +++ b/source/modules/juce_gui_basics/native/juce_MultiTouchMapper.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.h b/source/modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.h index 949dfb956..af607a5b0 100644 --- a/source/modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.h +++ b/source/modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_android_ContentSharer.cpp b/source/modules/juce_gui_basics/native/juce_android_ContentSharer.cpp index a4b0e2877..3b15aa569 100644 --- a/source/modules/juce_gui_basics/native/juce_android_ContentSharer.cpp +++ b/source/modules/juce_gui_basics/native/juce_android_ContentSharer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_android_FileChooser.cpp b/source/modules/juce_gui_basics/native/juce_android_FileChooser.cpp index ee7b2455c..7c9a4e4f6 100644 --- a/source/modules/juce_gui_basics/native/juce_android_FileChooser.cpp +++ b/source/modules/juce_gui_basics/native/juce_android_FileChooser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_android_Windowing.cpp b/source/modules/juce_gui_basics/native/juce_android_Windowing.cpp index 09f63334a..6f0172b71 100644 --- a/source/modules/juce_gui_basics/native/juce_android_Windowing.cpp +++ b/source/modules/juce_gui_basics/native/juce_android_Windowing.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -933,7 +940,7 @@ public: if (! isTimerRunning()) startTimer (500); - } + } //============================================================================== void handlePaintCallback (jobject canvas, jobject paint) diff --git a/source/modules/juce_gui_basics/native/juce_common_MimeTypes.cpp b/source/modules/juce_gui_basics/native/juce_common_MimeTypes.cpp index 57a3bb397..006075af6 100644 --- a/source/modules/juce_gui_basics/native/juce_common_MimeTypes.cpp +++ b/source/modules/juce_gui_basics/native/juce_common_MimeTypes.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp b/source/modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp index 323b030c7..f15365b64 100644 --- a/source/modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp +++ b/source/modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_ios_FileChooser.mm b/source/modules/juce_gui_basics/native/juce_ios_FileChooser.mm index 475791e6a..5da0b68ea 100644 --- a/source/modules/juce_gui_basics/native/juce_ios_FileChooser.mm +++ b/source/modules/juce_gui_basics/native/juce_ios_FileChooser.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm b/source/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm index 765ecebe2..3f293b5ad 100644 --- a/source/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm +++ b/source/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_ios_Windowing.mm b/source/modules/juce_gui_basics/native/juce_ios_Windowing.mm index c2d2d2a4a..434b39e6f 100644 --- a/source/modules/juce_gui_basics/native/juce_ios_Windowing.mm +++ b/source/modules/juce_gui_basics/native/juce_ios_Windowing.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp b/source/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp index 3cf9d34e1..24950ac22 100644 --- a/source/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp +++ b/source/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_linux_Windowing.cpp b/source/modules/juce_gui_basics/native/juce_linux_Windowing.cpp index defc3dcd7..7eb7176e1 100644 --- a/source/modules/juce_gui_basics/native/juce_linux_Windowing.cpp +++ b/source/modules/juce_gui_basics/native/juce_linux_Windowing.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -85,14 +92,8 @@ public: } //============================================================================== - void setBounds (const Rectangle& newBounds, bool isNowFullScreen) override + void forceSetBounds (const Rectangle& correctedNewBounds, bool isNowFullScreen) { - const auto correctedNewBounds = newBounds.withSize (jmax (1, newBounds.getWidth()), - jmax (1, newBounds.getHeight())); - - if (bounds == correctedNewBounds && fullScreen == isNowFullScreen) - return; - bounds = correctedNewBounds; updateScaleFactorFromNewBounds (bounds, false); @@ -113,6 +114,15 @@ public: } } + void setBounds (const Rectangle& newBounds, bool isNowFullScreen) override + { + const auto correctedNewBounds = newBounds.withSize (jmax (1, newBounds.getWidth()), + jmax (1, newBounds.getHeight())); + + if (bounds != correctedNewBounds || fullScreen != isNowFullScreen) + forceSetBounds (correctedNewBounds, isNowFullScreen); + } + Point getScreenPosition (bool physical) const { auto physicalParentPosition = XWindowSystem::getInstance()->getPhysicalParentScreenPosition(); @@ -370,7 +380,13 @@ public: else if (! windowBorder || ((*windowBorder).getTopAndBottom() == 0 && (*windowBorder).getLeftAndRight() == 0)) { - windowBorder = XWindowSystem::getInstance()->getBorderSize (windowH); + windowBorder = [&]() + { + if (auto unscaledBorderSize = XWindowSystem::getInstance()->getBorderSize (windowH)) + return OptionalBorderSize { (*unscaledBorderSize).multipliedBy (1.0 / currentScaleFactor) }; + + return OptionalBorderSize {}; + }(); } } @@ -430,12 +446,31 @@ private: if (! totalArea.isEmpty()) { - if (image.isNull() || image.getWidth() < totalArea.getWidth() + const auto wasImageNull = image.isNull(); + + if (wasImageNull || image.getWidth() < totalArea.getWidth() || image.getHeight() < totalArea.getHeight()) { image = XWindowSystem::getInstance()->createImage (isSemiTransparentWindow, totalArea.getWidth(), totalArea.getHeight(), useARGBImagesForRendering); + if (wasImageNull) + { + // After calling createImage() XWindowSystem::getWindowBounds() will return + // changed coordinates that look like the result of some position + // defaulting mechanism. If we handle a configureNotifyEvent after + // createImage() and before we would issue new, valid coordinates, we will + // apply these default, unwanted coordinates to our window. To avoid that + // we immediately send another positioning message to guarantee that the + // next configureNotifyEvent will read valid values. + // + // This issue only occurs right after peer creation, when the image is + // null. Updating when only the width or height is changed would lead to + // incorrect behaviour. + peer.forceSetBounds (ScalingHelpers::scaledScreenPosToUnscaled (peer.component, + peer.component.getBoundsInParent()), + peer.isFullScreen()); + } } startTimer (repaintTimerPeriod); diff --git a/source/modules/juce_gui_basics/native/juce_mac_CGMetalLayerRenderer.h b/source/modules/juce_gui_basics/native/juce_mac_CGMetalLayerRenderer.h index 10f5e4d42..9b266e784 100644 --- a/source/modules/juce_gui_basics/native/juce_mac_CGMetalLayerRenderer.h +++ b/source/modules/juce_gui_basics/native/juce_mac_CGMetalLayerRenderer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_mac_FileChooser.mm b/source/modules/juce_gui_basics/native/juce_mac_FileChooser.mm index 275ee4e67..81d8b6d7e 100644 --- a/source/modules/juce_gui_basics/native/juce_mac_FileChooser.mm +++ b/source/modules/juce_gui_basics/native/juce_mac_FileChooser.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_mac_MainMenu.mm b/source/modules/juce_gui_basics/native/juce_mac_MainMenu.mm index 58f9ef561..38f89b782 100644 --- a/source/modules/juce_gui_basics/native/juce_mac_MainMenu.mm +++ b/source/modules/juce_gui_basics/native/juce_mac_MainMenu.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm b/source/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm index f8f215a20..4d5370085 100644 --- a/source/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm +++ b/source/modules/juce_gui_basics/native/juce_mac_MouseCursor.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm index 1fed43c3d..434df96ce 100644 --- a/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm +++ b/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -1387,35 +1394,7 @@ public: // has a Z label). Therefore, we need to query the current keyboard // layout to figure out what character the key would have produced // if the shift key was not pressed - String unmodified; - - #if JUCE_SUPPORT_CARBON - if (auto currentKeyboard = CFUniquePtr (TISCopyCurrentKeyboardInputSource())) - { - if (auto layoutData = (CFDataRef) TISGetInputSourceProperty (currentKeyboard, - kTISPropertyUnicodeKeyLayoutData)) - { - if (auto* layoutPtr = (const UCKeyboardLayout*) CFDataGetBytePtr (layoutData)) - { - UInt32 keysDown = 0; - UniChar buffer[4]; - UniCharCount actual; - - if (UCKeyTranslate (layoutPtr, [ev keyCode], kUCKeyActionDown, 0, LMGetKbdType(), - kUCKeyTranslateNoDeadKeysBit, &keysDown, sizeof (buffer) / sizeof (UniChar), - &actual, buffer) == 0) - unmodified = String (CharPointer_UTF16 (reinterpret_cast (buffer)), 4); - } - } - } - - // did the above layout conversion fail - if (unmodified.isEmpty()) - #endif - { - unmodified = nsStringToJuce ([ev charactersIgnoringModifiers]); - } - + String unmodified = nsStringToJuce ([ev charactersIgnoringModifiers]); auto keyCode = (int) unmodified[0]; if (keyCode == 0x19) // (backwards-tab) @@ -1630,7 +1609,7 @@ public: void textInputRequired (Point, TextInputTarget&) override {} - void dismissPendingTextInput() override + void closeInputMethodContext() override { stringBeingComposed.clear(); const auto* inputContext = [NSTextInputContext currentInputContext]; diff --git a/source/modules/juce_gui_basics/native/juce_mac_Windowing.mm b/source/modules/juce_gui_basics/native/juce_mac_Windowing.mm index 5afbe241c..f8bcabbc0 100644 --- a/source/modules/juce_gui_basics/native/juce_mac_Windowing.mm +++ b/source/modules/juce_gui_basics/native/juce_mac_Windowing.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp b/source/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp index 962f77f8a..e64459fa7 100644 --- a/source/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp +++ b/source/modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp b/source/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp index ce42c0093..70ca644e7 100644 --- a/source/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp +++ b/source/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_win32_ScopedThreadDPIAwarenessSetter.h b/source/modules/juce_gui_basics/native/juce_win32_ScopedThreadDPIAwarenessSetter.h index 25966d0f6..2684295c2 100644 --- a/source/modules/juce_gui_basics/native/juce_win32_ScopedThreadDPIAwarenessSetter.h +++ b/source/modules/juce_gui_basics/native/juce_win32_ScopedThreadDPIAwarenessSetter.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/source/modules/juce_gui_basics/native/juce_win32_Windowing.cpp index a62f8521e..764bdb055 100644 --- a/source/modules/juce_gui_basics/native/juce_win32_Windowing.cpp +++ b/source/modules/juce_gui_basics/native/juce_win32_Windowing.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -1476,8 +1483,252 @@ private: WindowsDeleteStringFuncPtr deleteHString; }; +//============================================================================== +static HMONITOR getMonitorFromOutput (ComSmartPtr output) +{ + DXGI_OUTPUT_DESC desc = {}; + return (FAILED (output->GetDesc (&desc)) || ! desc.AttachedToDesktop) + ? nullptr + : desc.Monitor; +} + +struct VBlankListener +{ + virtual void onVBlank() = 0; +}; + +//============================================================================== +class VSyncThread : private Thread, + private AsyncUpdater +{ +public: + VSyncThread (ComSmartPtr out, + HMONITOR mon, + VBlankListener& listener) + : Thread ("VSyncThread"), + output (out), + monitor (mon) + { + listeners.push_back (listener); + startThread (10); + } + + ~VSyncThread() override + { + stopThread (-1); + cancelPendingUpdate(); + } + + void updateMonitor() + { + monitor = getMonitorFromOutput (output); + } + + HMONITOR getMonitor() const noexcept { return monitor; } + + void addListener (VBlankListener& listener) + { + listeners.push_back (listener); + } + + bool removeListener (const VBlankListener& listener) + { + auto it = std::find_if (listeners.cbegin(), + listeners.cend(), + [&listener] (const auto& l) { return &(l.get()) == &listener; }); + + if (it != listeners.cend()) + { + listeners.erase (it); + return true; + } + + return false; + } + + bool hasNoListeners() const noexcept + { + return listeners.empty(); + } + + bool hasListener (const VBlankListener& listener) const noexcept + { + return std::any_of (listeners.cbegin(), + listeners.cend(), + [&listener] (const auto& l) { return &(l.get()) == &listener; }); + } + +private: + //============================================================================== + void run() override + { + while (! threadShouldExit()) + { + if (output->WaitForVBlank() == S_OK) + triggerAsyncUpdate(); + else + Thread::sleep (1); + } + } + + void handleAsyncUpdate() override + { + for (auto& listener : listeners) + listener.get().onVBlank(); + } + + //============================================================================== + ComSmartPtr output; + HMONITOR monitor = nullptr; + std::vector> listeners; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VSyncThread) + JUCE_DECLARE_NON_MOVEABLE (VSyncThread) +}; + +//============================================================================== +class VBlankDispatcher : public DeletedAtShutdown +{ +public: + void updateDisplay (VBlankListener& listener, HMONITOR monitor) + { + if (monitor == nullptr) + { + removeListener (listener); + return; + } + + auto threadWithListener = threads.end(); + auto threadWithMonitor = threads.end(); + + for (auto it = threads.begin(); it != threads.end(); ++it) + { + if ((*it)->hasListener (listener)) + threadWithListener = it; + + if ((*it)->getMonitor() == monitor) + threadWithMonitor = it; + + if (threadWithListener != threads.end() + && threadWithMonitor != threads.end()) + { + if (threadWithListener == threadWithMonitor) + return; + + (*threadWithMonitor)->addListener (listener); + + // This may invalidate iterators, so be careful! + removeListener (threadWithListener, listener); + return; + } + } + + if (threadWithMonitor != threads.end()) + { + (*threadWithMonitor)->addListener (listener); + return; + } + + if (threadWithListener != threads.end()) + removeListener (threadWithListener, listener); + + for (auto adapter : adapters) + { + UINT i = 0; + ComSmartPtr output; + + while (adapter->EnumOutputs (i, output.resetAndGetPointerAddress()) != DXGI_ERROR_NOT_FOUND) + { + if (getMonitorFromOutput (output) == monitor) + { + threads.emplace_back (std::make_unique (output, monitor, listener)); + return; + } + + ++i; + } + } + } + + void removeListener (const VBlankListener& listener) + { + for (auto it = threads.begin(); it != threads.end(); ++it) + if (removeListener (it, listener)) + return; + } + + void reconfigureDisplays() + { + adapters.clear(); + + ComSmartPtr factory; + JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token") + CreateDXGIFactory (__uuidof (IDXGIFactory), (void**)factory.resetAndGetPointerAddress()); + JUCE_END_IGNORE_WARNINGS_GCC_LIKE + + UINT i = 0; + ComSmartPtr adapter; + + while (factory->EnumAdapters (i, adapter.resetAndGetPointerAddress()) != DXGI_ERROR_NOT_FOUND) + { + adapters.push_back (adapter); + ++i; + } + + for (auto& thread : threads) + thread->updateMonitor(); + + threads.erase (std::remove_if (threads.begin(), + threads.end(), + [] (const auto& thread) { return thread->getMonitor() == nullptr; }), + threads.end()); + } + + JUCE_DECLARE_SINGLETON_SINGLETHREADED (VBlankDispatcher, true) + +private: + //============================================================================== + using Threads = std::vector>; + + VBlankDispatcher() + { + reconfigureDisplays(); + } + + ~VBlankDispatcher() override + { + threads.clear(); + clearSingletonInstance(); + } + + // This may delete the corresponding thread and invalidate iterators, + // so be careful! + bool removeListener (Threads::iterator it, const VBlankListener& listener) + { + if ((*it)->removeListener (listener)) + { + if ((*it)->hasNoListeners()) + threads.erase (it); + + return true; + } + + return false; + } + + //============================================================================== + std::vector> adapters; + Threads threads; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VBlankDispatcher) + JUCE_DECLARE_NON_MOVEABLE (VBlankDispatcher) +}; + +JUCE_IMPLEMENT_SINGLETON (VBlankDispatcher) + //============================================================================== class HWNDComponentPeer : public ComponentPeer, + private VBlankListener, private Timer #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client , public ModifierKeyReceiver @@ -1517,10 +1768,15 @@ public: return ModifierKeys::currentModifiers; }; + + if (updateCurrentMonitor()) + VBlankDispatcher::getInstance()->updateDisplay (*this, currentMonitor); } ~HWNDComponentPeer() override { + VBlankDispatcher::getInstance()->removeListener (*this); + // do this first to avoid messages arriving for this window before it's destroyed JuceWindowIdentifier::setAsJUCEWindow (hwnd, false); @@ -1876,9 +2132,14 @@ public: OnScreenKeyboard::getInstance()->activate(); } - void dismissPendingTextInput() override + void closeInputMethodContext() override { imeHandler.handleSetContext (hwnd, false); + } + + void dismissPendingTextInput() override + { + closeInputMethodContext(); if (uwpViewSettings.isTabletModeActivatedForWindow (hwnd)) OnScreenKeyboard::getInstance()->deactivate(); @@ -1886,14 +2147,26 @@ public: void repaint (const Rectangle& area) override { - auto r = RECTFromRectangle ((area.toDouble() * getPlatformScaleFactor()).getSmallestIntegerContainer()); - InvalidateRect (hwnd, &r, FALSE); + deferredRepaints.add ((area.toDouble() * getPlatformScaleFactor()).getSmallestIntegerContainer()); + } + + void dispatchDeferredRepaints() + { + for (auto deferredRect : deferredRepaints) + { + auto r = RECTFromRectangle (deferredRect); + InvalidateRect (hwnd, &r, FALSE); + } + + deferredRepaints.clear(); } void performAnyPendingRepaintsNow() override { if (component.isVisible()) { + dispatchDeferredRepaints(); + WeakReference localRef (&component); MSG m; @@ -1903,6 +2176,12 @@ public: } } + //============================================================================== + void onVBlank() override + { + dispatchDeferredRepaints(); + } + //============================================================================== static HWNDComponentPeer* getOwnerOfWindow (HWND h) noexcept { @@ -2153,6 +2432,7 @@ private: double scaleFactor = 1.0; bool inDpiChange = 0, inHandlePositionChanged = 0; + HMONITOR currentMonitor = nullptr; bool isAccessibilityActive = false; @@ -3476,6 +3756,12 @@ private: return 0; } + bool updateCurrentMonitor() + { + auto monitor = MonitorFromWindow (hwnd, MONITOR_DEFAULTTONULL); + return std::exchange (currentMonitor, monitor) != monitor; + } + bool handlePositionChanged() { auto pos = getCurrentMousePos(); @@ -3493,6 +3779,9 @@ private: handleMovedOrResized(); + if (updateCurrentMonitor()) + VBlankDispatcher::getInstance()->updateDisplay (*this, currentMonitor); + return ! dontRepaint; // to allow non-accelerated openGL windows to draw themselves correctly. } @@ -3646,6 +3935,11 @@ private: setWindowPos (hwnd, ScalingHelpers::scaledScreenPosToUnscaled (component, Desktop::getInstance().getDisplays() .getDisplayForRect (component.getScreenBounds())->userArea), SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER | SWP_NOSENDCHANGING); + + auto* dispatcher = VBlankDispatcher::getInstance(); + dispatcher->reconfigureDisplays(); + updateCurrentMonitor(); + dispatcher->updateDisplay (*this, currentMonitor); } //============================================================================== @@ -4407,6 +4701,8 @@ private: IMEHandler imeHandler; bool shouldIgnoreModalDismiss = false; + RectangleList deferredRepaints; + //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (HWNDComponentPeer) }; diff --git a/source/modules/juce_gui_basics/native/x11/juce_linux_X11_DragAndDrop.cpp b/source/modules/juce_gui_basics/native/x11/juce_linux_X11_DragAndDrop.cpp index 54b120a2f..3d07128b4 100644 --- a/source/modules/juce_gui_basics/native/x11/juce_linux_X11_DragAndDrop.cpp +++ b/source/modules/juce_gui_basics/native/x11/juce_linux_X11_DragAndDrop.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.cpp b/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.cpp index 50af46c4f..4b2e24eed 100644 --- a/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.cpp +++ b/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.h b/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.h index 039fa0829..74d70fa67 100644 --- a/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.h +++ b/source/modules/juce_gui_basics/native/x11/juce_linux_X11_Symbols.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp b/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp index f3cf5c276..ac7de0013 100644 --- a/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp +++ b/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.h b/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.h index f23a02d1b..0659adbec 100644 --- a/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.h +++ b/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_MarkerList.cpp b/source/modules/juce_gui_basics/positioning/juce_MarkerList.cpp index 56f442f68..0cfee9f6d 100644 --- a/source/modules/juce_gui_basics/positioning/juce_MarkerList.cpp +++ b/source/modules/juce_gui_basics/positioning/juce_MarkerList.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_MarkerList.h b/source/modules/juce_gui_basics/positioning/juce_MarkerList.h index ebd1ad24a..ea52e28e0 100644 --- a/source/modules/juce_gui_basics/positioning/juce_MarkerList.h +++ b/source/modules/juce_gui_basics/positioning/juce_MarkerList.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp index 4115484d8..30af07bc3 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h index 8417ac443..35287fd6f 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp index 6ffca88e9..be1322b28 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h index 4fa8b2a2e..0df29a7d5 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp b/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp index 8eead3eb6..64bac8a53 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h b/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h index 874300420..586581e9c 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp b/source/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp index 326df61cb..e37a5c669 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp +++ b/source/modules/juce_gui_basics/positioning/juce_RelativePoint.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativePoint.h b/source/modules/juce_gui_basics/positioning/juce_RelativePoint.h index 4bab2a09a..5bd097a3a 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativePoint.h +++ b/source/modules/juce_gui_basics/positioning/juce_RelativePoint.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp b/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp index ef869446c..04748c849 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp +++ b/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.h b/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.h index 89bda9af3..78d249d56 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.h +++ b/source/modules/juce_gui_basics/positioning/juce_RelativePointPath.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp b/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp index 6a74bd4fb..a8ce138af 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h b/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h index 0d804664c..51f4fbacf 100644 --- a/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h +++ b/source/modules/juce_gui_basics/positioning/juce_RelativeRectangle.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp b/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp index 502fcee0f..b180eb79c 100644 --- a/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp +++ b/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h b/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h index 7af37755a..06ca6cd25 100644 --- a/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h +++ b/source/modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp b/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp index 9eb41a9b5..5db8b9542 100644 --- a/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp +++ b/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h b/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h index a3e9cda69..eb258b8d4 100644 --- a/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h +++ b/source/modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp b/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp index bf08c6d6d..eaa5baed2 100644 --- a/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp +++ b/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h b/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h index 209c2d3fb..67ce49db4 100644 --- a/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h +++ b/source/modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp b/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp index 94f718f64..77e51fa5f 100644 --- a/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp +++ b/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h b/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h index 67b9b52be..8a2e764c3 100644 --- a/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h +++ b/source/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp b/source/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp index dfc04a40e..6fc0eb3f7 100644 --- a/source/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp +++ b/source/modules/juce_gui_basics/properties/juce_PropertyComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_PropertyComponent.h b/source/modules/juce_gui_basics/properties/juce_PropertyComponent.h index d2d0241fd..e637c81ea 100644 --- a/source/modules/juce_gui_basics/properties/juce_PropertyComponent.h +++ b/source/modules/juce_gui_basics/properties/juce_PropertyComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp b/source/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp index 189c31f69..65741ad9c 100644 --- a/source/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp +++ b/source/modules/juce_gui_basics/properties/juce_PropertyPanel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_PropertyPanel.h b/source/modules/juce_gui_basics/properties/juce_PropertyPanel.h index 77fcfbf23..4ffd6f141 100644 --- a/source/modules/juce_gui_basics/properties/juce_PropertyPanel.h +++ b/source/modules/juce_gui_basics/properties/juce_PropertyPanel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp b/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp index b7f629895..8ceca7e06 100644 --- a/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp +++ b/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h b/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h index 71771ccf7..3a3354ee5 100644 --- a/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h +++ b/source/modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp b/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp index 5021bbd60..27663aa17 100644 --- a/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp +++ b/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h b/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h index fc07fcb96..16d88ef32 100644 --- a/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h +++ b/source/modules/juce_gui_basics/properties/juce_TextPropertyComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ComboBox.cpp b/source/modules/juce_gui_basics/widgets/juce_ComboBox.cpp index df1bea0e4..e0ff54a41 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ComboBox.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_ComboBox.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ComboBox.h b/source/modules/juce_gui_basics/widgets/juce_ComboBox.h index 9719f694a..49171024f 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ComboBox.h +++ b/source/modules/juce_gui_basics/widgets/juce_ComboBox.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp b/source/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp index 8caa5679f..56d56d103 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_ImageComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ImageComponent.h b/source/modules/juce_gui_basics/widgets/juce_ImageComponent.h index 93e99eb92..56a1432f1 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ImageComponent.h +++ b/source/modules/juce_gui_basics/widgets/juce_ImageComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_Label.cpp b/source/modules/juce_gui_basics/widgets/juce_Label.cpp index 53cfce8ed..29726544f 100644 --- a/source/modules/juce_gui_basics/widgets/juce_Label.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_Label.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_Label.h b/source/modules/juce_gui_basics/widgets/juce_Label.h index 88106d7c9..875cae0e7 100644 --- a/source/modules/juce_gui_basics/widgets/juce_Label.h +++ b/source/modules/juce_gui_basics/widgets/juce_Label.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ListBox.cpp b/source/modules/juce_gui_basics/widgets/juce_ListBox.cpp index 7f3bd2453..b2c8f8c1e 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ListBox.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_ListBox.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -537,16 +544,20 @@ ListBox::~ListBox() viewport.reset(); } +void ListBox::assignModelPtr (ListBoxModel* const newModel) +{ + model = newModel; + + #if ! JUCE_DISABLE_ASSERTIONS + weakModelPtr = model != nullptr ? model->sharedState : nullptr; + #endif +} + void ListBox::setModel (ListBoxModel* const newModel) { if (model != newModel) { - model = newModel; - - #if ! JUCE_DISABLE_ASSERTIONS - weakModelPtr = model != nullptr ? model->sharedState : nullptr; - #endif - + assignModelPtr (newModel); repaint(); updateContent(); } diff --git a/source/modules/juce_gui_basics/widgets/juce_ListBox.h b/source/modules/juce_gui_basics/widgets/juce_ListBox.h index c6488fb30..cb2907e13 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ListBox.h +++ b/source/modules/juce_gui_basics/widgets/juce_ListBox.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -613,6 +620,7 @@ private: std::weak_ptr weakModelPtr; #endif + void assignModelPtr (ListBoxModel*); void checkModelPtrIsValid() const; std::unique_ptr createAccessibilityHandler() override; bool hasAccessibleHeaderComponent() const; diff --git a/source/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp b/source/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp index 15ebc4cea..7c956e1cf 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_ProgressBar.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ProgressBar.h b/source/modules/juce_gui_basics/widgets/juce_ProgressBar.h index 817d4a0c8..ea7bc35b2 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ProgressBar.h +++ b/source/modules/juce_gui_basics/widgets/juce_ProgressBar.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_Slider.cpp b/source/modules/juce_gui_basics/widgets/juce_Slider.cpp index aa8262d7e..2573befcd 100644 --- a/source/modules/juce_gui_basics/widgets/juce_Slider.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_Slider.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_Slider.h b/source/modules/juce_gui_basics/widgets/juce_Slider.h index 3004bacf4..630d5efde 100644 --- a/source/modules/juce_gui_basics/widgets/juce_Slider.h +++ b/source/modules/juce_gui_basics/widgets/juce_Slider.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp b/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp index 72e89709e..6a787d953 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -31,7 +38,7 @@ public: void paint (Graphics& g) override { - g.drawImageAt (image, 0, 0); + g.drawImage (image, getLocalBounds().toFloat()); } Image image; @@ -687,7 +694,7 @@ void TableHeaderComponent::beginDrag (const MouseEvent& e) auto temp = columnIdBeingDragged; columnIdBeingDragged = 0; - dragOverlayComp.reset (new DragOverlayComp (createComponentSnapshot (columnRect, false))); + dragOverlayComp.reset (new DragOverlayComp (createComponentSnapshot (columnRect, false, 2.0f))); addAndMakeVisible (dragOverlayComp.get()); columnIdBeingDragged = temp; diff --git a/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h b/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h index 4209684cd..8a6034de5 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h +++ b/source/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_TableListBox.cpp b/source/modules/juce_gui_basics/widgets/juce_TableListBox.cpp index e33d1c477..f513b3c57 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TableListBox.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_TableListBox.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -339,7 +346,7 @@ private: TableListBox::TableListBox (const String& name, TableListBoxModel* const m) : ListBox (name, nullptr), model (m) { - ListBox::model = this; + ListBox::assignModelPtr (this); setHeader (std::make_unique
(*this)); } diff --git a/source/modules/juce_gui_basics/widgets/juce_TableListBox.h b/source/modules/juce_gui_basics/widgets/juce_TableListBox.h index cce195eac..141fdd2d3 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TableListBox.h +++ b/source/modules/juce_gui_basics/widgets/juce_TableListBox.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/source/modules/juce_gui_basics/widgets/juce_TextEditor.cpp index f9a46d3d5..9e57b899a 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TextEditor.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_TextEditor.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -1831,7 +1838,7 @@ void TextEditor::mouseDown (const MouseEvent& e) e.mods.isShiftDown()); if (auto* peer = getPeer()) - peer->dismissPendingTextInput(); + peer->closeInputMethodContext(); } else { @@ -1954,7 +1961,7 @@ bool TextEditor::moveCaretWithTransaction (const int newPos, const bool selectin moveCaretTo (newPos, selecting); if (auto* peer = getPeer()) - peer->dismissPendingTextInput(); + peer->closeInputMethodContext(); return true; } diff --git a/source/modules/juce_gui_basics/widgets/juce_TextEditor.h b/source/modules/juce_gui_basics/widgets/juce_TextEditor.h index 27c404f2c..8b1fbc25a 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TextEditor.h +++ b/source/modules/juce_gui_basics/widgets/juce_TextEditor.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_Toolbar.cpp b/source/modules/juce_gui_basics/widgets/juce_Toolbar.cpp index e6e6e56b4..f32a5a69d 100644 --- a/source/modules/juce_gui_basics/widgets/juce_Toolbar.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_Toolbar.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_Toolbar.h b/source/modules/juce_gui_basics/widgets/juce_Toolbar.h index 4989dafe5..eceb42556 100644 --- a/source/modules/juce_gui_basics/widgets/juce_Toolbar.h +++ b/source/modules/juce_gui_basics/widgets/juce_Toolbar.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp index 2ff44b075..7b6290fac 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h index 5bb3dac32..862d537c8 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h +++ b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h index deabf1c1e..981c9491a 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h +++ b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp index 6fcb04bb3..d727cd013 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h index cf7f54fb7..10e545885 100644 --- a/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h +++ b/source/modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_TreeView.cpp b/source/modules/juce_gui_basics/widgets/juce_TreeView.cpp index a26cdac34..e5941ae43 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TreeView.cpp +++ b/source/modules/juce_gui_basics/widgets/juce_TreeView.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/widgets/juce_TreeView.h b/source/modules/juce_gui_basics/widgets/juce_TreeView.h index 49b2cce23..51b3f64ec 100644 --- a/source/modules/juce_gui_basics/widgets/juce_TreeView.h +++ b/source/modules/juce_gui_basics/widgets/juce_TreeView.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_AlertWindow.cpp b/source/modules/juce_gui_basics/windows/juce_AlertWindow.cpp index 8cd6f283a..14de42fa2 100644 --- a/source/modules/juce_gui_basics/windows/juce_AlertWindow.cpp +++ b/source/modules/juce_gui_basics/windows/juce_AlertWindow.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_AlertWindow.h b/source/modules/juce_gui_basics/windows/juce_AlertWindow.h index d61c1575e..2e4b0e9b6 100644 --- a/source/modules/juce_gui_basics/windows/juce_AlertWindow.h +++ b/source/modules/juce_gui_basics/windows/juce_AlertWindow.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_CallOutBox.cpp b/source/modules/juce_gui_basics/windows/juce_CallOutBox.cpp index 01faf3c25..db1a8d488 100644 --- a/source/modules/juce_gui_basics/windows/juce_CallOutBox.cpp +++ b/source/modules/juce_gui_basics/windows/juce_CallOutBox.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_CallOutBox.h b/source/modules/juce_gui_basics/windows/juce_CallOutBox.h index 1d853a3ee..bc547d2d5 100644 --- a/source/modules/juce_gui_basics/windows/juce_CallOutBox.h +++ b/source/modules/juce_gui_basics/windows/juce_CallOutBox.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp b/source/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp index 4558e5d0b..9a4dc009a 100644 --- a/source/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp +++ b/source/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -267,7 +274,12 @@ TextInputTarget* ComponentPeer::findCurrentTextInputTarget() return nullptr; } -void ComponentPeer::dismissPendingTextInput() {} +void ComponentPeer::closeInputMethodContext() {} + +void ComponentPeer::dismissPendingTextInput() +{ + closeInputMethodContext(); +} //============================================================================== void ComponentPeer::handleBroughtToFront() diff --git a/source/modules/juce_gui_basics/windows/juce_ComponentPeer.h b/source/modules/juce_gui_basics/windows/juce_ComponentPeer.h index 7733756c7..3c0640c3a 100644 --- a/source/modules/juce_gui_basics/windows/juce_ComponentPeer.h +++ b/source/modules/juce_gui_basics/windows/juce_ComponentPeer.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE @@ -356,7 +363,16 @@ public: */ virtual void textInputRequired (Point position, TextInputTarget&) = 0; - /** If there's some kind of OS input-method in progress, this should dismiss it. */ + /** If there's a currently active input-method context - i.e. characters are being + composed using multiple keystrokes - this should commit the current state of the + context to the text and clear the context. + */ + virtual void closeInputMethodContext(); + + /** If there's some kind of OS input-method in progress, this should dismiss it. + + Overrides of this function should call closeInputMethodContext(). + */ virtual void dismissPendingTextInput(); /** Returns the currently focused TextInputTarget, or null if none is found. */ diff --git a/source/modules/juce_gui_basics/windows/juce_DialogWindow.cpp b/source/modules/juce_gui_basics/windows/juce_DialogWindow.cpp index 007047557..c866ff208 100644 --- a/source/modules/juce_gui_basics/windows/juce_DialogWindow.cpp +++ b/source/modules/juce_gui_basics/windows/juce_DialogWindow.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_DialogWindow.h b/source/modules/juce_gui_basics/windows/juce_DialogWindow.h index 8f01f421d..ad94a08ee 100644 --- a/source/modules/juce_gui_basics/windows/juce_DialogWindow.h +++ b/source/modules/juce_gui_basics/windows/juce_DialogWindow.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp b/source/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp index 35a04f1cc..a92af63c2 100644 --- a/source/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp +++ b/source/modules/juce_gui_basics/windows/juce_DocumentWindow.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_DocumentWindow.h b/source/modules/juce_gui_basics/windows/juce_DocumentWindow.h index 7a7ecbfe4..a74aa82db 100644 --- a/source/modules/juce_gui_basics/windows/juce_DocumentWindow.h +++ b/source/modules/juce_gui_basics/windows/juce_DocumentWindow.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_MessageBoxOptions.h b/source/modules/juce_gui_basics/windows/juce_MessageBoxOptions.h index fd11ccb04..3a4dc59d8 100644 --- a/source/modules/juce_gui_basics/windows/juce_MessageBoxOptions.h +++ b/source/modules/juce_gui_basics/windows/juce_MessageBoxOptions.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_NativeMessageBox.h b/source/modules/juce_gui_basics/windows/juce_NativeMessageBox.h index 62df2613c..033d1a8bf 100644 --- a/source/modules/juce_gui_basics/windows/juce_NativeMessageBox.h +++ b/source/modules/juce_gui_basics/windows/juce_NativeMessageBox.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp b/source/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp index dea49aa70..db28b93a9 100644 --- a/source/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp +++ b/source/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_ResizableWindow.h b/source/modules/juce_gui_basics/windows/juce_ResizableWindow.h index 310767c0f..d6469c35d 100644 --- a/source/modules/juce_gui_basics/windows/juce_ResizableWindow.h +++ b/source/modules/juce_gui_basics/windows/juce_ResizableWindow.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp b/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp index 120b2613d..4ec6b765f 100644 --- a/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp +++ b/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h b/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h index 0b8ac908f..0e6c3c42e 100644 --- a/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h +++ b/source/modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp b/source/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp index babde9c57..6668448de 100644 --- a/source/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp +++ b/source/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_TooltipWindow.h b/source/modules/juce_gui_basics/windows/juce_TooltipWindow.h index 6039bad89..fb6972584 100644 --- a/source/modules/juce_gui_basics/windows/juce_TooltipWindow.h +++ b/source/modules/juce_gui_basics/windows/juce_TooltipWindow.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp b/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp index ac84cacbf..a4f00bf8c 100644 --- a/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp +++ b/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.h b/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.h index 89c9477bb..4cd5aefe0 100644 --- a/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.h +++ b/source/modules/juce_gui_basics/windows/juce_TopLevelWindow.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp b/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp index f34f97089..d0e74c1f3 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp +++ b/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h b/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h index 34d322676..5780b6747 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h +++ b/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h b/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h index 9e6461f75..6843f14c4 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h +++ b/source/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp b/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp index add5703f5..0d0f23589 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp +++ b/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.h b/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.h index 98f38d355..998fc95c3 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.h +++ b/source/modules/juce_gui_extra/code_editor/juce_CodeDocument.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp b/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp index 4a38f26c7..f903d908d 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp +++ b/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h b/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h index eb4d78402..19f36dafb 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h +++ b/source/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h b/source/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h index 211467e84..67656c4a9 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h +++ b/source/modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp b/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp index 36cebfcd2..f046c4f76 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp +++ b/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h b/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h index d33f38e99..7e37c5ffe 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h +++ b/source/modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp b/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp index aab5a64c3..edde13e96 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp +++ b/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h b/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h index 1927dee71..0dae2dfb6 100644 --- a/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h +++ b/source/modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp b/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp index 5640a1717..d41832d7a 100644 --- a/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp +++ b/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.h b/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.h index 22256b235..277a1c840 100644 --- a/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.h +++ b/source/modules/juce_gui_extra/documents/juce_FileBasedDocument.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h b/source/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h index 790653a72..bb99430f5 100644 --- a/source/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h +++ b/source/modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h b/source/modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h index 503523658..d2211e1a8 100644 --- a/source/modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h +++ b/source/modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/embedding/juce_HWNDComponent.h b/source/modules/juce_gui_extra/embedding/juce_HWNDComponent.h index 019b877de..9376e04d6 100644 --- a/source/modules/juce_gui_extra/embedding/juce_HWNDComponent.h +++ b/source/modules/juce_gui_extra/embedding/juce_HWNDComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/embedding/juce_NSViewComponent.h b/source/modules/juce_gui_extra/embedding/juce_NSViewComponent.h index 78b5855d6..98760295e 100644 --- a/source/modules/juce_gui_extra/embedding/juce_NSViewComponent.h +++ b/source/modules/juce_gui_extra/embedding/juce_NSViewComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/embedding/juce_UIViewComponent.h b/source/modules/juce_gui_extra/embedding/juce_UIViewComponent.h index 9c4d7d00c..a225e6a02 100644 --- a/source/modules/juce_gui_extra/embedding/juce_UIViewComponent.h +++ b/source/modules/juce_gui_extra/embedding/juce_UIViewComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/embedding/juce_XEmbedComponent.h b/source/modules/juce_gui_extra/embedding/juce_XEmbedComponent.h index a4f7c14df..2966b0d2b 100644 --- a/source/modules/juce_gui_extra/embedding/juce_XEmbedComponent.h +++ b/source/modules/juce_gui_extra/embedding/juce_XEmbedComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/juce_gui_extra.cpp b/source/modules/juce_gui_extra/juce_gui_extra.cpp index 03afcc8f5..dbb4d75a5 100644 --- a/source/modules/juce_gui_extra/juce_gui_extra.cpp +++ b/source/modules/juce_gui_extra/juce_gui_extra.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/juce_gui_extra.h b/source/modules/juce_gui_extra/juce_gui_extra.h index 3b9ef2330..ebed0f5cc 100644 --- a/source/modules/juce_gui_extra/juce_gui_extra.h +++ b/source/modules/juce_gui_extra/juce_gui_extra.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp b/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp index 53d8f65d2..f2798e483 100644 --- a/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp +++ b/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h b/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h index 07de5f219..b4e55a810 100644 --- a/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h +++ b/source/modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_AppleRemote.h b/source/modules/juce_gui_extra/misc/juce_AppleRemote.h index 438e65922..bdbe1c8a8 100644 --- a/source/modules/juce_gui_extra/misc/juce_AppleRemote.h +++ b/source/modules/juce_gui_extra/misc/juce_AppleRemote.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp b/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp index fdf9d33d0..a8c10af92 100644 --- a/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp +++ b/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h b/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h index 89a175cd2..8dcf7f9a1 100644 --- a/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h +++ b/source/modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_ColourSelector.cpp b/source/modules/juce_gui_extra/misc/juce_ColourSelector.cpp index 5714a08b1..07b1a5d54 100644 --- a/source/modules/juce_gui_extra/misc/juce_ColourSelector.cpp +++ b/source/modules/juce_gui_extra/misc/juce_ColourSelector.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_ColourSelector.h b/source/modules/juce_gui_extra/misc/juce_ColourSelector.h index a4de89fda..eb57d471d 100644 --- a/source/modules/juce_gui_extra/misc/juce_ColourSelector.h +++ b/source/modules/juce_gui_extra/misc/juce_ColourSelector.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp b/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp index 0ab7fece1..f89f0c7f9 100644 --- a/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp +++ b/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h b/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h index eaaa1672b..422df3d49 100644 --- a/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h +++ b/source/modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp b/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp index e7c4a87da..0c87de872 100644 --- a/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp +++ b/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h b/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h index e5ee8da3d..ddea280f2 100644 --- a/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h +++ b/source/modules/juce_gui_extra/misc/juce_LiveConstantEditor.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp b/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp index 70b70d386..b6c92e9fd 100644 --- a/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp +++ b/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.h b/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.h index c51fd1d55..f8f2cb052 100644 --- a/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.h +++ b/source/modules/juce_gui_extra/misc/juce_PreferencesPanel.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_PushNotifications.cpp b/source/modules/juce_gui_extra/misc/juce_PushNotifications.cpp index 83c989158..5642deb8a 100644 --- a/source/modules/juce_gui_extra/misc/juce_PushNotifications.cpp +++ b/source/modules/juce_gui_extra/misc/juce_PushNotifications.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_PushNotifications.h b/source/modules/juce_gui_extra/misc/juce_PushNotifications.h index e049399e6..52cf1dbce 100644 --- a/source/modules/juce_gui_extra/misc/juce_PushNotifications.h +++ b/source/modules/juce_gui_extra/misc/juce_PushNotifications.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp b/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp index a64427871..94fb32631 100644 --- a/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp +++ b/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h b/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h index 4b94bd482..ee63029c6 100644 --- a/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h +++ b/source/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_SplashScreen.cpp b/source/modules/juce_gui_extra/misc/juce_SplashScreen.cpp index d76be2310..6cd98a141 100644 --- a/source/modules/juce_gui_extra/misc/juce_SplashScreen.cpp +++ b/source/modules/juce_gui_extra/misc/juce_SplashScreen.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_SplashScreen.h b/source/modules/juce_gui_extra/misc/juce_SplashScreen.h index a5a05fe74..21c4981c1 100644 --- a/source/modules/juce_gui_extra/misc/juce_SplashScreen.h +++ b/source/modules/juce_gui_extra/misc/juce_SplashScreen.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp b/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp index 0b1b6309c..91e436d50 100644 --- a/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp +++ b/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h b/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h index 36b4199ca..e3f38557e 100644 --- a/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h +++ b/source/modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h b/source/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h index a99e13bbc..3ecdc5a62 100644 --- a/source/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h +++ b/source/modules/juce_gui_extra/misc/juce_WebBrowserComponent.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp b/source/modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp index e389ed491..71da3cf4e 100644 --- a/source/modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp +++ b/source/modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_android_PushNotifications.cpp b/source/modules/juce_gui_extra/native/juce_android_PushNotifications.cpp index 480fb1b0b..87b461c05 100644 --- a/source/modules/juce_gui_extra/native/juce_android_PushNotifications.cpp +++ b/source/modules/juce_gui_extra/native/juce_android_PushNotifications.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp b/source/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp index 14b64f78c..35adf391c 100644 --- a/source/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp +++ b/source/modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp b/source/modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp index f4eb852a5..05c25dc75 100644 --- a/source/modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp +++ b/source/modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm b/source/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm index 731b8c09f..b1c373162 100644 --- a/source/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm +++ b/source/modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp b/source/modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp index 83d38f9d7..b3dd3d39c 100644 --- a/source/modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp +++ b/source/modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp b/source/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp index a88827a2b..57e7dec82 100644 --- a/source/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp +++ b/source/modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp b/source/modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp index 9680c4af0..a56538de1 100644 --- a/source/modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp +++ b/source/modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm b/source/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm index 8da7992b7..014fa7f01 100644 --- a/source/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm +++ b/source/modules/juce_gui_extra/native/juce_mac_AppleRemote.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h b/source/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h deleted file mode 100644 index bd8ea3c2e..000000000 --- a/source/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h +++ /dev/null @@ -1,339 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE 7 technical preview. - Copyright (c) 2022 - Raw Material Software Limited - - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). - - For the technical preview this file cannot be licensed commercially. - - JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER - EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE - DISCLAIMED. - - ============================================================================== -*/ - -namespace juce -{ - -//============================================================================== -/** - Creates a floating carbon window that can be used to hold a carbon UI. - - This is a handy class that's designed to be inlined where needed, e.g. - in the audio plugin hosting code. - - @tags{GUI} -*/ -class CarbonViewWrapperComponent : public Component, - public ComponentMovementWatcher, - public Timer -{ -public: - CarbonViewWrapperComponent() - : ComponentMovementWatcher (this), - carbonWindow (nil), - keepPluginWindowWhenHidden (false), - wrapperWindow (nil), - embeddedView (0), - recursiveResize (false), - repaintChildOnCreation (true) - { - } - - ~CarbonViewWrapperComponent() - { - jassert (embeddedView == 0); // must call deleteWindow() in the subclass's destructor! - } - - virtual HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) = 0; - virtual void removeView (HIViewRef embeddedView) = 0; - virtual void handleMouseDown (int, int) {} - virtual void handlePaint() {} - - virtual bool getEmbeddedViewSize (int& w, int& h) - { - if (embeddedView == 0) - return false; - - HIRect bounds; - HIViewGetBounds (embeddedView, &bounds); - w = jmax (1, roundToInt (bounds.size.width)); - h = jmax (1, roundToInt (bounds.size.height)); - return true; - } - - void createWindow() - { - if (wrapperWindow == nil) - { - Rect r; - r.left = (short) getScreenX(); - r.top = (short) getScreenY(); - r.right = (short) (r.left + getWidth()); - r.bottom = (short) (r.top + getHeight()); - - CreateNewWindow (kDocumentWindowClass, - (WindowAttributes) (kWindowStandardHandlerAttribute | kWindowCompositingAttribute - | kWindowNoShadowAttribute | kWindowNoTitleBarAttribute), - &r, &wrapperWindow); - - jassert (wrapperWindow != 0); - if (wrapperWindow == 0) - return; - - carbonWindow = [[NSWindow alloc] initWithWindowRef: wrapperWindow]; - - [getOwnerWindow() addChildWindow: carbonWindow - ordered: NSWindowAbove]; - - embeddedView = attachView (wrapperWindow, HIViewGetRoot (wrapperWindow)); - - // Check for the plugin creating its own floating window, and if there is one, - // we need to reparent it to make it visible.. - if (carbonWindow.childWindows.count > 0) - if (NSWindow* floatingChildWindow = [[carbonWindow childWindows] objectAtIndex: 0]) - [getOwnerWindow() addChildWindow: floatingChildWindow - ordered: NSWindowAbove]; - - EventTypeSpec windowEventTypes[] = - { - { kEventClassWindow, kEventWindowGetClickActivation }, - { kEventClassWindow, kEventWindowHandleDeactivate }, - { kEventClassWindow, kEventWindowBoundsChanging }, - { kEventClassMouse, kEventMouseDown }, - { kEventClassMouse, kEventMouseMoved }, - { kEventClassMouse, kEventMouseDragged }, - { kEventClassMouse, kEventMouseUp }, - { kEventClassWindow, kEventWindowDrawContent }, - { kEventClassWindow, kEventWindowShown }, - { kEventClassWindow, kEventWindowHidden } - }; - - EventHandlerUPP upp = NewEventHandlerUPP (carbonEventCallback); - InstallWindowEventHandler (wrapperWindow, upp, - sizeof (windowEventTypes) / sizeof (EventTypeSpec), - windowEventTypes, this, &eventHandlerRef); - - setOurSizeToEmbeddedViewSize(); - setEmbeddedWindowToOurSize(); - - creationTime = Time::getCurrentTime(); - } - } - - void deleteWindow() - { - removeView (embeddedView); - embeddedView = 0; - - if (wrapperWindow != nil) - { - NSWindow* ownerWindow = getOwnerWindow(); - - if ([[ownerWindow childWindows] count] > 0) - { - [ownerWindow removeChildWindow: carbonWindow]; - [carbonWindow close]; - } - - RemoveEventHandler (eventHandlerRef); - DisposeWindow (wrapperWindow); - wrapperWindow = nil; - } - } - - //============================================================================== - void setOurSizeToEmbeddedViewSize() - { - int w, h; - if (getEmbeddedViewSize (w, h)) - { - if (w != getWidth() || h != getHeight()) - { - startTimer (50); - setSize (w, h); - - if (Component* p = getParentComponent()) - p->setSize (w, h); - } - else - { - startTimer (jlimit (50, 500, getTimerInterval() + 20)); - } - } - else - { - stopTimer(); - } - } - - void setEmbeddedWindowToOurSize() - { - if (! recursiveResize) - { - recursiveResize = true; - - if (embeddedView != 0) - { - HIRect r; - r.origin.x = 0; - r.origin.y = 0; - r.size.width = (float) getWidth(); - r.size.height = (float) getHeight(); - HIViewSetFrame (embeddedView, &r); - } - - if (wrapperWindow != nil) - { - jassert (getTopLevelComponent()->getDesktopScaleFactor() == 1.0f); - Rectangle screenBounds (getScreenBounds() * Desktop::getInstance().getGlobalScaleFactor()); - - Rect wr; - wr.left = (short) screenBounds.getX(); - wr.top = (short) screenBounds.getY(); - wr.right = (short) screenBounds.getRight(); - wr.bottom = (short) screenBounds.getBottom(); - - SetWindowBounds (wrapperWindow, kWindowContentRgn, &wr); - - // This group stuff is mainly a workaround for Mackie plugins like FinalMix.. - WindowGroupRef group = GetWindowGroup (wrapperWindow); - WindowRef attachedWindow; - - if (GetIndexedWindow (group, 2, kWindowGroupContentsReturnWindows, &attachedWindow) == noErr) - { - SelectWindow (attachedWindow); - ActivateWindow (attachedWindow, TRUE); - HideWindow (wrapperWindow); - } - - ShowWindow (wrapperWindow); - } - - recursiveResize = false; - } - } - - void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) override - { - setEmbeddedWindowToOurSize(); - } - - // (overridden to intercept movements of the top-level window) - void componentMovedOrResized (Component& component, bool wasMoved, bool wasResized) override - { - ComponentMovementWatcher::componentMovedOrResized (component, wasMoved, wasResized); - - if (&component == getTopLevelComponent()) - setEmbeddedWindowToOurSize(); - } - - void componentPeerChanged() override - { - deleteWindow(); - createWindow(); - } - - void componentVisibilityChanged() override - { - if (isShowing()) - createWindow(); - else if (! keepPluginWindowWhenHidden) - deleteWindow(); - - setEmbeddedWindowToOurSize(); - } - - static void recursiveHIViewRepaint (HIViewRef view) - { - HIViewSetNeedsDisplay (view, true); - HIViewRef child = HIViewGetFirstSubview (view); - - while (child != 0) - { - recursiveHIViewRepaint (child); - child = HIViewGetNextView (child); - } - } - - void timerCallback() override - { - if (isShowing()) - { - setOurSizeToEmbeddedViewSize(); - - // To avoid strange overpainting problems when the UI is first opened, we'll - // repaint it a few times during the first second that it's on-screen.. - if (repaintChildOnCreation && (Time::getCurrentTime() - creationTime).inMilliseconds() < 1000) - recursiveHIViewRepaint (HIViewGetRoot (wrapperWindow)); - } - } - - void setRepaintsChildHIViewWhenCreated (bool b) noexcept - { - repaintChildOnCreation = b; - } - - OSStatus carbonEventHandler (EventHandlerCallRef /*nextHandlerRef*/, EventRef event) - { - switch (GetEventKind (event)) - { - case kEventWindowHandleDeactivate: - ActivateWindow (wrapperWindow, TRUE); - return noErr; - - case kEventWindowGetClickActivation: - { - getTopLevelComponent()->toFront (false); - [carbonWindow makeKeyAndOrderFront: nil]; - - ClickActivationResult howToHandleClick = kActivateAndHandleClick; - - SetEventParameter (event, kEventParamClickActivation, typeClickActivationResult, - sizeof (ClickActivationResult), &howToHandleClick); - - if (embeddedView != 0) - HIViewSetNeedsDisplay (embeddedView, true); - - return noErr; - } - } - - return eventNotHandledErr; - } - - static pascal OSStatus carbonEventCallback (EventHandlerCallRef nextHandlerRef, EventRef event, void* userData) - { - return ((CarbonViewWrapperComponent*) userData)->carbonEventHandler (nextHandlerRef, event); - } - - NSWindow* carbonWindow; - bool keepPluginWindowWhenHidden; - -protected: - WindowRef wrapperWindow; - HIViewRef embeddedView; - bool recursiveResize, repaintChildOnCreation; - Time creationTime; - - EventHandlerRef eventHandlerRef; - - NSWindow* getOwnerWindow() const { return [((NSView*) getWindowHandle()) window]; } -}; - -//============================================================================== -// Non-public utility function that hosts can use if they need to get hold of the -// internals of a carbon wrapper window.. -void* getCarbonWindow (Component* possibleCarbonComponent) -{ - if (CarbonViewWrapperComponent* cv = dynamic_cast (possibleCarbonComponent)) - return cv->carbonWindow; - - return nullptr; -} - -} // namespace juce diff --git a/source/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm b/source/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm index 7fd7d707e..7c85aef6d 100644 --- a/source/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm +++ b/source/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h b/source/modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h index b0bac12b3..648931ce2 100644 --- a/source/modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h +++ b/source/modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp b/source/modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp index b615846d3..f35ec878f 100644 --- a/source/modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp +++ b/source/modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp b/source/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp index f31433298..fb90508f2 100644 --- a/source/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp +++ b/source/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm b/source/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm index 83f587a26..6f4c5b20b 100644 --- a/source/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm +++ b/source/modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp b/source/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp index 228fa789c..29593758a 100644 --- a/source/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp +++ b/source/modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp b/source/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp index 594d43d86..0e8f1e8d0 100644 --- a/source/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp +++ b/source/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp b/source/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp index 90a34ee56..ce221901f 100644 --- a/source/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp +++ b/source/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE diff --git a/source/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp b/source/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp index 58211f9db..04083be63 100644 --- a/source/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp +++ b/source/modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp @@ -1,13 +1,20 @@ /* ============================================================================== - This file is part of the JUCE 7 technical preview. + This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). + JUCE is an open source library subject to commercial or open-source + licensing. - For the technical preview this file cannot be licensed commercially. + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE