2
0
Fork 0

Compare commits

...

5 Commits

Author SHA1 Message Date
George Reales 4f4e47bada JUCE 7.0.3 support 2022-12-11 11:14:45 +01:00
George Reales 9c3c50675c Update README.md 2022-11-03 18:23:49 +01:00
George Reales 930a0d6230 Update OB-Xd.jucer 2022-11-03 18:19:22 +01:00
George Reales 736d34a7a7 Windows and Linux Copy Paste Preset 2022-11-03 18:18:45 +01:00
George Reales 64fce498d3 macOS Universal Copy Paste
This functionality modifies and adds files to JUCE framework modules
2022-10-30 08:44:11 +01:00
11 changed files with 1075 additions and 39 deletions

View File

@ -425,7 +425,7 @@ private:
On some platforms (such as iOS 10), the expected buffer size reported in
audioDeviceAboutToStart may be smaller than the blocks passed to
audioDeviceIOCallback. This can lead to out-of-bounds reads if the render
audioDeviceIOCallbackWithContext. This can lead to out-of-bounds reads if the render
callback depends on additional buffers which were initialised using the
smaller size.
@ -448,9 +448,9 @@ private:
inner.audioDeviceAboutToStart (device);
}
void audioDeviceIOCallbackWithContext (const float** inputChannelData,
void audioDeviceIOCallbackWithContext (const float* const* inputChannelData,
int numInputChannels,
float** outputChannelData,
float* const* outputChannelData,
int numOutputChannels,
int numSamples,
const AudioIODeviceCallbackContext& context) override
@ -600,9 +600,9 @@ private:
};
//==============================================================================
void audioDeviceIOCallbackWithContext (const float** inputChannelData,
void audioDeviceIOCallbackWithContext (const float* const* inputChannelData,
int numInputChannels,
float** outputChannelData,
float* const* outputChannelData,
int numOutputChannels,
int numSamples,
const AudioIODeviceCallbackContext& context) override

View File

@ -0,0 +1,428 @@
/*
==============================================================================
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.
==============================================================================
*/
#ifdef JUCE_GUI_BASICS_H_INCLUDED
/* When you add this cpp file to your project, you mustn't include it in a file where you've
already included any other headers - just put it inside a file on its own, possibly with your config
flags preceding it, but don't include anything else. That also includes avoiding any automatic prefix
header files that the compiler may be using.
*/
#error "Incorrect use of JUCE cpp file"
#endif
#define NS_FORMAT_FUNCTION(F,A) // To avoid spurious warnings from GCC
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
#define JUCE_EVENTS_INCLUDE_WIN32_MESSAGE_WINDOW 1
#define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1
#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1
#define JUCE_GUI_BASICS_INCLUDE_SCOPED_THREAD_DPI_AWARENESS_SETTER 1
#include "juce_gui_basics.h"
#include <cctype>
//==============================================================================
#if JUCE_MAC
#import <WebKit/WebKit.h>
#import <IOKit/pwr_mgt/IOPMLib.h>
#import <MetalKit/MetalKit.h>
#elif JUCE_IOS
#if JUCE_PUSH_NOTIFICATIONS
#import <UserNotifications/UserNotifications.h>
#endif
#import <MetalKit/MetalKit.h>
#import <UIKit/UIActivityViewController.h>
//==============================================================================
#elif JUCE_WINDOWS
#include <windowsx.h>
#include <vfw.h>
#include <commdlg.h>
#include <commctrl.h>
#include <UIAutomation.h>
#include <sapi.h>
#include <Dxgi.h>
#if JUCE_WEB_BROWSER
#include <exdisp.h>
#include <exdispid.h>
#endif
#if JUCE_MINGW
#include <imm.h>
#elif ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
#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")
#pragma comment(lib, "GlU32.Lib")
#endif
#if JUCE_DIRECT2D
#pragma comment (lib, "Dwrite.lib")
#pragma comment (lib, "D2d1.lib")
#endif
#endif
#endif
//==============================================================================
#define JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED_OR_OFFSCREEN \
jassert ((MessageManager::getInstanceWithoutCreating() != nullptr \
&& MessageManager::getInstanceWithoutCreating()->currentThreadHasLockedMessageManager()) \
|| getPeer() == nullptr);
namespace juce
{
bool juce_areThereAnyAlwaysOnTopWindows();
bool isEmbeddedInForegroundProcess (Component* c);
#if ! JUCE_WINDOWS
bool isEmbeddedInForegroundProcess (Component*) { return false; }
#endif
/* Returns true if this process is in the foreground, or if the viewComponent
is embedded into a window owned by the foreground process.
*/
static bool isForegroundOrEmbeddedProcess (Component* viewComponent)
{
return Process::isForegroundProcess() || isEmbeddedInForegroundProcess (viewComponent);
}
bool isWindowOnCurrentVirtualDesktop (void*);
struct CustomMouseCursorInfo
{
ScaledImage image;
Point<int> hotspot;
};
template <typename MemberFn>
static const AccessibilityHandler* getEnclosingHandlerWithInterface (const AccessibilityHandler* handler, MemberFn fn)
{
if (handler == nullptr)
return nullptr;
if ((handler->*fn)() != nullptr)
return handler;
return getEnclosingHandlerWithInterface (handler->getParent(), fn);
}
} // namespace juce
#include "mouse/juce_PointerState.h"
#include "accessibility/juce_AccessibilityHandler.cpp"
#include "components/juce_Component.cpp"
#include "components/juce_ComponentListener.cpp"
#include "components/juce_FocusTraverser.cpp"
#include "mouse/juce_MouseInputSource.cpp"
#include "desktop/juce_Displays.cpp"
#include "desktop/juce_Desktop.cpp"
#include "components/juce_ModalComponentManager.cpp"
#include "mouse/juce_ComponentDragger.cpp"
#include "mouse/juce_DragAndDropContainer.cpp"
#include "mouse/juce_MouseEvent.cpp"
#include "mouse/juce_MouseInactivityDetector.cpp"
#include "mouse/juce_MouseListener.cpp"
#include "keyboard/juce_CaretComponent.cpp"
#include "keyboard/juce_KeyboardFocusTraverser.cpp"
#include "keyboard/juce_KeyListener.cpp"
#include "keyboard/juce_KeyPress.cpp"
#include "keyboard/juce_ModifierKeys.cpp"
#include "buttons/juce_ArrowButton.cpp"
#include "buttons/juce_Button.cpp"
#include "buttons/juce_DrawableButton.cpp"
#include "buttons/juce_HyperlinkButton.cpp"
#include "buttons/juce_ImageButton.cpp"
#include "buttons/juce_ShapeButton.cpp"
#include "buttons/juce_TextButton.cpp"
#include "buttons/juce_ToggleButton.cpp"
#include "buttons/juce_ToolbarButton.cpp"
#include "drawables/juce_Drawable.cpp"
#include "drawables/juce_DrawableComposite.cpp"
#include "drawables/juce_DrawableImage.cpp"
#include "drawables/juce_DrawablePath.cpp"
#include "drawables/juce_DrawableRectangle.cpp"
#include "drawables/juce_DrawableShape.cpp"
#include "drawables/juce_DrawableText.cpp"
#include "drawables/juce_SVGParser.cpp"
#include "filebrowser/juce_DirectoryContentsDisplayComponent.cpp"
#include "filebrowser/juce_DirectoryContentsList.cpp"
#include "filebrowser/juce_FileBrowserComponent.cpp"
#include "filebrowser/juce_FileChooser.cpp"
#include "filebrowser/juce_FileChooserDialogBox.cpp"
#include "filebrowser/juce_FileListComponent.cpp"
#include "filebrowser/juce_FilenameComponent.cpp"
#include "filebrowser/juce_FileSearchPathListComponent.cpp"
#include "filebrowser/juce_FileTreeComponent.cpp"
#include "filebrowser/juce_ImagePreviewComponent.cpp"
#include "filebrowser/juce_ContentSharer.cpp"
#include "layout/juce_ComponentAnimator.cpp"
#include "layout/juce_ComponentBoundsConstrainer.cpp"
#include "layout/juce_ComponentBuilder.cpp"
#include "layout/juce_ComponentMovementWatcher.cpp"
#include "layout/juce_ConcertinaPanel.cpp"
#include "layout/juce_GroupComponent.cpp"
#include "layout/juce_MultiDocumentPanel.cpp"
#include "layout/juce_ResizableBorderComponent.cpp"
#include "layout/juce_ResizableCornerComponent.cpp"
#include "layout/juce_ResizableEdgeComponent.cpp"
#include "layout/juce_ScrollBar.cpp"
#include "layout/juce_SidePanel.cpp"
#include "layout/juce_StretchableLayoutManager.cpp"
#include "layout/juce_StretchableLayoutResizerBar.cpp"
#include "layout/juce_StretchableObjectResizer.cpp"
#include "layout/juce_TabbedButtonBar.cpp"
#include "layout/juce_TabbedComponent.cpp"
#include "layout/juce_Viewport.cpp"
#include "lookandfeel/juce_LookAndFeel.cpp"
#include "lookandfeel/juce_LookAndFeel_V2.cpp"
#include "lookandfeel/juce_LookAndFeel_V1.cpp"
#include "lookandfeel/juce_LookAndFeel_V3.cpp"
#include "lookandfeel/juce_LookAndFeel_V4.cpp"
#include "menus/juce_MenuBarComponent.cpp"
#include "menus/juce_BurgerMenuComponent.cpp"
#include "menus/juce_MenuBarModel.cpp"
#include "menus/juce_PopupMenu.cpp"
#include "positioning/juce_MarkerList.cpp"
#include "positioning/juce_RelativeCoordinate.cpp"
#include "positioning/juce_RelativeCoordinatePositioner.cpp"
#include "positioning/juce_RelativeParallelogram.cpp"
#include "positioning/juce_RelativePoint.cpp"
#include "positioning/juce_RelativePointPath.cpp"
#include "positioning/juce_RelativeRectangle.cpp"
#include "properties/juce_BooleanPropertyComponent.cpp"
#include "properties/juce_ButtonPropertyComponent.cpp"
#include "properties/juce_ChoicePropertyComponent.cpp"
#include "properties/juce_PropertyComponent.cpp"
#include "properties/juce_PropertyPanel.cpp"
#include "properties/juce_SliderPropertyComponent.cpp"
#include "properties/juce_TextPropertyComponent.cpp"
#include "properties/juce_MultiChoicePropertyComponent.cpp"
#include "widgets/juce_ComboBox.cpp"
#include "widgets/juce_ImageComponent.cpp"
#include "widgets/juce_Label.cpp"
#include "widgets/juce_ListBox.cpp"
#include "widgets/juce_ProgressBar.cpp"
#include "widgets/juce_Slider.cpp"
#include "widgets/juce_TableHeaderComponent.cpp"
#include "widgets/juce_TableListBox.cpp"
#include "widgets/juce_TextEditor.cpp"
#include "widgets/juce_ToolbarItemComponent.cpp"
#include "widgets/juce_Toolbar.cpp"
#include "widgets/juce_ToolbarItemPalette.cpp"
#include "widgets/juce_TreeView.cpp"
#include "windows/juce_AlertWindow.cpp"
#include "windows/juce_CallOutBox.cpp"
#include "windows/juce_ComponentPeer.cpp"
#include "windows/juce_DialogWindow.cpp"
#include "windows/juce_DocumentWindow.cpp"
#include "windows/juce_ResizableWindow.cpp"
#include "windows/juce_ThreadWithProgressWindow.cpp"
#include "windows/juce_TooltipWindow.cpp"
#include "windows/juce_TopLevelWindow.cpp"
#include "commands/juce_ApplicationCommandInfo.cpp"
#include "commands/juce_ApplicationCommandManager.cpp"
#include "commands/juce_ApplicationCommandTarget.cpp"
#include "commands/juce_KeyPressMappingSet.cpp"
#include "application/juce_Application.cpp"
#include "misc/juce_BubbleComponent.cpp"
#include "misc/juce_DropShadower.cpp"
#include "misc/juce_FocusOutline.cpp"
#include "misc/juce_JUCESplashScreen.cpp"
#include "layout/juce_FlexBox.cpp"
#include "layout/juce_GridItem.cpp"
#include "layout/juce_Grid.cpp"
#if JUCE_IOS || JUCE_WINDOWS
#include "native/juce_MultiTouchMapper.h"
#endif
#if JUCE_ANDROID || JUCE_WINDOWS || JUCE_IOS || JUCE_UNIT_TESTS
#include "native/accessibility/juce_AccessibilityTextHelpers.h"
#endif
#if JUCE_MAC || JUCE_IOS
#include "native/accessibility/juce_mac_AccessibilitySharedCode.mm"
#if JUCE_IOS
#include "native/juce_ios_UIViewComponentPeer.mm"
#include "native/accessibility/juce_ios_Accessibility.mm"
#include "native/juce_ios_Windowing.mm"
#include "native/juce_ios_FileChooser.mm"
#if JUCE_CONTENT_SHARING
#include "native/juce_ios_ContentSharer.cpp"
#endif
#else
#include "native/accessibility/juce_mac_Accessibility.mm"
#include "native/juce_mac_NSViewComponentPeer.mm"
#include "native/juce_mac_Windowing.mm"
#include "native/juce_mac_MainMenu.mm"
#include "native/juce_mac_FileChooser.mm"
#include "native/mac_Pasteboard.mm"
#endif
#include "native/juce_mac_MouseCursor.mm"
#elif JUCE_WINDOWS
#include "native/accessibility/juce_win32_ComInterfaces.h"
#include "native/accessibility/juce_win32_WindowsUIAWrapper.h"
#include "native/accessibility/juce_win32_AccessibilityElement.h"
#include "native/accessibility/juce_win32_UIAHelpers.h"
#include "native/accessibility/juce_win32_UIAProviders.h"
#include "native/accessibility/juce_win32_AccessibilityElement.cpp"
#include "native/accessibility/juce_win32_Accessibility.cpp"
#include "native/juce_win32_Windowing.cpp"
#include "native/juce_win32_DragAndDrop.cpp"
#include "native/juce_win32_FileChooser.cpp"
#elif JUCE_LINUX || JUCE_BSD
#include "native/x11/juce_linux_X11_Symbols.cpp"
#include "native/x11/juce_linux_X11_DragAndDrop.cpp"
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wzero-as-null-pointer-constant")
#include "native/juce_linux_Windowing.cpp"
#include "native/x11/juce_linux_XWindowSystem.cpp"
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#include "native/juce_linux_FileChooser.cpp"
#elif JUCE_ANDROID
#include "juce_core/files/juce_common_MimeTypes.h"
#include "native/accessibility/juce_android_Accessibility.cpp"
#include "native/juce_android_Windowing.cpp"
#include "native/juce_android_FileChooser.cpp"
#if JUCE_CONTENT_SHARING
#include "native/juce_android_ContentSharer.cpp"
#endif
#endif
namespace juce
{
#if ! JUCE_NATIVE_ACCESSIBILITY_INCLUDED
class AccessibilityHandler::AccessibilityNativeImpl { public: AccessibilityNativeImpl (AccessibilityHandler&) {} };
void AccessibilityHandler::notifyAccessibilityEvent (AccessibilityEvent) const {}
void AccessibilityHandler::postAnnouncement (const String&, AnnouncementPriority) {}
AccessibilityNativeHandle* AccessibilityHandler::getNativeImplementation() const { return nullptr; }
void notifyAccessibilityEventInternal (const AccessibilityHandler&, InternalAccessibilityEvent) {}
std::unique_ptr<AccessibilityHandler::AccessibilityNativeImpl> AccessibilityHandler::createNativeImpl (AccessibilityHandler&)
{
return nullptr;
}
#else
std::unique_ptr<AccessibilityHandler::AccessibilityNativeImpl> AccessibilityHandler::createNativeImpl (AccessibilityHandler& handler)
{
return std::make_unique<AccessibilityNativeImpl> (handler);
}
#endif
}
//==============================================================================
#if JUCE_WINDOWS
namespace juce
{
JUCE_COMCLASS (JuceIVirtualDesktopManager, "a5cd92ff-29be-454c-8d04-d82879fb3f1b") : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE IsWindowOnCurrentVirtualDesktop(
__RPC__in HWND topLevelWindow,
__RPC__out BOOL * onCurrentDesktop) = 0;
virtual HRESULT STDMETHODCALLTYPE GetWindowDesktopId(
__RPC__in HWND topLevelWindow,
__RPC__out GUID * desktopId) = 0;
virtual HRESULT STDMETHODCALLTYPE MoveWindowToDesktop(
__RPC__in HWND topLevelWindow,
__RPC__in REFGUID desktopId) = 0;
};
JUCE_COMCLASS (JuceVirtualDesktopManager, "aa509086-5ca9-4c25-8f95-589d3c07b48a");
} // namespace juce
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL (juce::JuceIVirtualDesktopManager, 0xa5cd92ff, 0x29be, 0x454c, 0x8d, 0x04, 0xd8, 0x28, 0x79, 0xfb, 0x3f, 0x1b)
__CRT_UUID_DECL (juce::JuceVirtualDesktopManager, 0xaa509086, 0x5ca9, 0x4c25, 0x8f, 0x95, 0x58, 0x9d, 0x3c, 0x07, 0xb4, 0x8a)
#endif
bool juce::isWindowOnCurrentVirtualDesktop (void* x)
{
if (x == nullptr)
return false;
static auto* desktopManager = []
{
JuceIVirtualDesktopManager* result = nullptr;
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
if (SUCCEEDED (CoCreateInstance (__uuidof (JuceVirtualDesktopManager), nullptr, CLSCTX_ALL, IID_PPV_ARGS (&result))))
return result;
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
return static_cast<JuceIVirtualDesktopManager*> (nullptr);
}();
BOOL current = false;
if (auto* dm = desktopManager)
if (SUCCEEDED (dm->IsWindowOnCurrentVirtualDesktop (static_cast<HWND> (x), &current)))
return current != false;
return true;
}
#else
bool juce::isWindowOnCurrentVirtualDesktop (void*) { return true; }
juce::ScopedDPIAwarenessDisabler::ScopedDPIAwarenessDisabler() { ignoreUnused (previousContext); }
juce::ScopedDPIAwarenessDisabler::~ScopedDPIAwarenessDisabler() {}
#endif
// Depends on types defined in platform-specific windowing files
#include "mouse/juce_MouseCursor.cpp"
#if JUCE_UNIT_TESTS
#include "native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
#endif

View File

@ -0,0 +1,383 @@
/*
==============================================================================
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.
==============================================================================
*/
/*******************************************************************************
The block below describes the properties of this module, and is read by
the Projucer to automatically generate project code that uses it.
For details about the syntax and how to create or use a module, see the
JUCE Module Format.md file.
BEGIN_JUCE_MODULE_DECLARATION
ID: juce_gui_basics
vendor: juce
version: 7.0.2
name: JUCE GUI core classes
description: Basic user-interface components and related classes.
website: http://www.juce.com/juce
license: GPL/Commercial
minimumCppStandard: 14
dependencies: juce_graphics juce_data_structures
OSXFrameworks: Cocoa QuartzCore
WeakOSXFrameworks: Metal MetalKit
iOSFrameworks: CoreServices UIKit
WeakiOSFrameworks: Metal MetalKit
mingwLibs: dxgi
END_JUCE_MODULE_DECLARATION
*******************************************************************************/
#pragma once
#define JUCE_GUI_BASICS_H_INCLUDED
#include <juce_graphics/juce_graphics.h>
#include <juce_data_structures/juce_data_structures.h>
//==============================================================================
/** Config: JUCE_ENABLE_REPAINT_DEBUGGING
If this option is turned on, each area of the screen that gets repainted will
flash in a random colour, so that you can see exactly which bits of your
components are being drawn.
*/
#ifndef JUCE_ENABLE_REPAINT_DEBUGGING
#define JUCE_ENABLE_REPAINT_DEBUGGING 0
#endif
/** Config: JUCE_USE_XRANDR
Enables Xrandr multi-monitor support (Linux only).
Unless you specifically want to disable this, it's best to leave this option turned on.
Note that your users do not need to have Xrandr installed for your JUCE app to run, as
the availability of Xrandr is queried during runtime.
*/
#ifndef JUCE_USE_XRANDR
#define JUCE_USE_XRANDR 1
#endif
/** Config: JUCE_USE_XINERAMA
Enables Xinerama multi-monitor support (Linux only).
Unless you specifically want to disable this, it's best to leave this option turned on.
This will be used as a fallback if JUCE_USE_XRANDR not set or libxrandr cannot be found.
Note that your users do not need to have Xinerama installed for your JUCE app to run, as
the availability of Xinerama is queried during runtime.
*/
#ifndef JUCE_USE_XINERAMA
#define JUCE_USE_XINERAMA 1
#endif
/** Config: JUCE_USE_XSHM
Enables X shared memory for faster rendering on Linux. This is best left turned on
unless you have a good reason to disable it.
*/
#ifndef JUCE_USE_XSHM
#define JUCE_USE_XSHM 1
#endif
/** Config: JUCE_USE_XRENDER
Enables XRender to allow semi-transparent windowing on Linux.
*/
#ifndef JUCE_USE_XRENDER
#define JUCE_USE_XRENDER 0
#endif
/** Config: JUCE_USE_XCURSOR
Uses XCursor to allow ARGB cursor on Linux. This is best left turned on unless you have
a good reason to disable it.
*/
#ifndef JUCE_USE_XCURSOR
#define JUCE_USE_XCURSOR 1
#endif
/** Config: JUCE_WIN_PER_MONITOR_DPI_AWARE
Enables per-monitor DPI awareness on Windows 8.1 and above.
*/
#ifndef JUCE_WIN_PER_MONITOR_DPI_AWARE
#define JUCE_WIN_PER_MONITOR_DPI_AWARE 1
#endif
//==============================================================================
namespace juce
{
class Component;
class LookAndFeel;
class MouseInputSource;
class MouseInputSourceInternal;
class ComponentPeer;
class MouseEvent;
struct MouseWheelDetails;
struct PenDetails;
class ToggleButton;
class TextButton;
class AlertWindow;
class TextLayout;
class ScrollBar;
class ComboBox;
class Button;
class FilenameComponent;
class ResizableWindow;
class MenuBarComponent;
class GlyphArrangement;
class TableHeaderComponent;
class Toolbar;
class PopupMenu;
class ProgressBar;
class FileBrowserComponent;
class DirectoryContentsDisplayComponent;
class FilePreviewComponent;
class CallOutBox;
class Drawable;
class DrawablePath;
class DrawableComposite;
class CaretComponent;
class KeyPressMappingSet;
class ApplicationCommandManagerListener;
class DrawableButton;
class Displays;
class AccessibilityHandler;
class KeyboardFocusTraverser;
class PointerState;
class FlexBox;
class Grid;
class FocusOutline;
#if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX
Image createSnapshotOfNativeWindow (void* nativeWindowHandle);
#endif
}
#include "mouse/juce_MouseCursor.h"
#include "mouse/juce_MouseListener.h"
#include "keyboard/juce_ModifierKeys.h"
#include "mouse/juce_MouseInputSource.h"
#include "mouse/juce_MouseEvent.h"
#include "keyboard/juce_KeyPress.h"
#include "keyboard/juce_KeyListener.h"
#include "components/juce_ComponentTraverser.h"
#include "components/juce_FocusTraverser.h"
#include "components/juce_ModalComponentManager.h"
#include "components/juce_ComponentListener.h"
#include "components/juce_CachedComponentImage.h"
#include "components/juce_Component.h"
#include "layout/juce_ComponentAnimator.h"
#include "desktop/juce_Desktop.h"
#include "desktop/juce_Displays.h"
#include "layout/juce_ComponentBoundsConstrainer.h"
#include "mouse/juce_ComponentDragger.h"
#include "mouse/juce_DragAndDropTarget.h"
#include "mouse/juce_DragAndDropContainer.h"
#include "mouse/juce_FileDragAndDropTarget.h"
#include "mouse/juce_SelectedItemSet.h"
#include "mouse/juce_MouseInactivityDetector.h"
#include "mouse/juce_TextDragAndDropTarget.h"
#include "mouse/juce_TooltipClient.h"
#include "keyboard/juce_CaretComponent.h"
#include "keyboard/juce_KeyboardFocusTraverser.h"
#include "keyboard/juce_SystemClipboard.h"
#include "keyboard/juce_TextEditorKeyMapper.h"
#include "keyboard/juce_TextInputTarget.h"
#include "commands/juce_ApplicationCommandID.h"
#include "commands/juce_ApplicationCommandInfo.h"
#include "commands/juce_ApplicationCommandTarget.h"
#include "commands/juce_ApplicationCommandManager.h"
#include "commands/juce_KeyPressMappingSet.h"
#include "buttons/juce_Button.h"
#include "buttons/juce_ArrowButton.h"
#include "buttons/juce_DrawableButton.h"
#include "buttons/juce_HyperlinkButton.h"
#include "buttons/juce_ImageButton.h"
#include "buttons/juce_ShapeButton.h"
#include "buttons/juce_TextButton.h"
#include "buttons/juce_ToggleButton.h"
#include "layout/juce_AnimatedPosition.h"
#include "layout/juce_AnimatedPositionBehaviours.h"
#include "layout/juce_ComponentBuilder.h"
#include "layout/juce_ComponentMovementWatcher.h"
#include "layout/juce_ConcertinaPanel.h"
#include "layout/juce_GroupComponent.h"
#include "layout/juce_ResizableBorderComponent.h"
#include "layout/juce_ResizableCornerComponent.h"
#include "layout/juce_ResizableEdgeComponent.h"
#include "layout/juce_ScrollBar.h"
#include "layout/juce_StretchableLayoutManager.h"
#include "layout/juce_StretchableLayoutResizerBar.h"
#include "layout/juce_StretchableObjectResizer.h"
#include "layout/juce_TabbedButtonBar.h"
#include "layout/juce_TabbedComponent.h"
#include "layout/juce_Viewport.h"
#include "menus/juce_PopupMenu.h"
#include "menus/juce_MenuBarModel.h"
#include "menus/juce_MenuBarComponent.h"
#include "positioning/juce_RelativeCoordinate.h"
#include "positioning/juce_MarkerList.h"
#include "positioning/juce_RelativePoint.h"
#include "positioning/juce_RelativeRectangle.h"
#include "positioning/juce_RelativeCoordinatePositioner.h"
#include "positioning/juce_RelativeParallelogram.h"
#include "positioning/juce_RelativePointPath.h"
#include "drawables/juce_Drawable.h"
#include "drawables/juce_DrawableShape.h"
#include "drawables/juce_DrawableComposite.h"
#include "drawables/juce_DrawableImage.h"
#include "drawables/juce_DrawablePath.h"
#include "drawables/juce_DrawableRectangle.h"
#include "drawables/juce_DrawableText.h"
#include "widgets/juce_TextEditor.h"
#include "widgets/juce_Label.h"
#include "widgets/juce_ComboBox.h"
#include "widgets/juce_ImageComponent.h"
#include "widgets/juce_ListBox.h"
#include "widgets/juce_ProgressBar.h"
#include "widgets/juce_Slider.h"
#include "widgets/juce_TableHeaderComponent.h"
#include "widgets/juce_TableListBox.h"
#include "widgets/juce_Toolbar.h"
#include "widgets/juce_ToolbarItemComponent.h"
#include "widgets/juce_ToolbarItemFactory.h"
#include "widgets/juce_ToolbarItemPalette.h"
#include "menus/juce_BurgerMenuComponent.h"
#include "buttons/juce_ToolbarButton.h"
#include "misc/juce_DropShadower.h"
#include "misc/juce_FocusOutline.h"
#include "misc/juce_JUCESplashScreen.h"
#include "widgets/juce_TreeView.h"
#include "windows/juce_TopLevelWindow.h"
#include "windows/juce_MessageBoxOptions.h"
#include "windows/juce_AlertWindow.h"
#include "windows/juce_CallOutBox.h"
#include "windows/juce_ComponentPeer.h"
#include "windows/juce_ResizableWindow.h"
#include "windows/juce_DocumentWindow.h"
#include "windows/juce_DialogWindow.h"
#include "windows/juce_NativeMessageBox.h"
#include "windows/juce_ThreadWithProgressWindow.h"
#include "windows/juce_TooltipWindow.h"
#include "layout/juce_MultiDocumentPanel.h"
#include "layout/juce_SidePanel.h"
#include "filebrowser/juce_FileBrowserListener.h"
#include "filebrowser/juce_DirectoryContentsList.h"
#include "filebrowser/juce_DirectoryContentsDisplayComponent.h"
#include "filebrowser/juce_FileBrowserComponent.h"
#include "filebrowser/juce_FileChooser.h"
#include "filebrowser/juce_FileChooserDialogBox.h"
#include "filebrowser/juce_FileListComponent.h"
#include "filebrowser/juce_FilenameComponent.h"
#include "filebrowser/juce_FilePreviewComponent.h"
#include "filebrowser/juce_FileSearchPathListComponent.h"
#include "filebrowser/juce_FileTreeComponent.h"
#include "filebrowser/juce_ImagePreviewComponent.h"
#include "filebrowser/juce_ContentSharer.h"
#include "properties/juce_PropertyComponent.h"
#include "properties/juce_BooleanPropertyComponent.h"
#include "properties/juce_ButtonPropertyComponent.h"
#include "properties/juce_ChoicePropertyComponent.h"
#include "properties/juce_PropertyPanel.h"
#include "properties/juce_SliderPropertyComponent.h"
#include "properties/juce_TextPropertyComponent.h"
#include "properties/juce_MultiChoicePropertyComponent.h"
#include "application/juce_Application.h"
#include "misc/juce_BubbleComponent.h"
#include "lookandfeel/juce_LookAndFeel.h"
#include "lookandfeel/juce_LookAndFeel_V2.h"
#include "lookandfeel/juce_LookAndFeel_V1.h"
#include "lookandfeel/juce_LookAndFeel_V3.h"
#include "lookandfeel/juce_LookAndFeel_V4.h"
#include "mouse/juce_LassoComponent.h"
#include "accessibility/interfaces/juce_AccessibilityCellInterface.h"
#include "accessibility/interfaces/juce_AccessibilityTableInterface.h"
#include "accessibility/interfaces/juce_AccessibilityTextInterface.h"
#include "accessibility/interfaces/juce_AccessibilityValueInterface.h"
#include "accessibility/enums/juce_AccessibilityActions.h"
#include "accessibility/enums/juce_AccessibilityEvent.h"
#include "accessibility/enums/juce_AccessibilityRole.h"
#include "accessibility/juce_AccessibilityState.h"
#include "accessibility/juce_AccessibilityHandler.h"
#if JUCE_LINUX || JUCE_BSD
#if JUCE_GUI_BASICS_INCLUDE_XHEADERS
// If you're missing these headers, you need to install the libx11-dev package
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xresource.h>
#include <X11/Xutil.h>
#include <X11/Xmd.h>
#include <X11/keysym.h>
#include <X11/XKBlib.h>
#include <X11/cursorfont.h>
#include <unistd.h>
#if JUCE_USE_XRANDR
// If you're missing this header, you need to install the libxrandr-dev package
#include <X11/extensions/Xrandr.h>
#endif
#if JUCE_USE_XINERAMA
// If you're missing this header, you need to install the libxinerama-dev package
#include <X11/extensions/Xinerama.h>
#endif
#if JUCE_USE_XSHM
#include <X11/extensions/XShm.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#endif
#if JUCE_USE_XRENDER
// If you're missing these headers, you need to install the libxrender-dev and libxcomposite-dev packages
#include <X11/extensions/Xrender.h>
#include <X11/extensions/Xcomposite.h>
#endif
#if JUCE_USE_XCURSOR
// If you're missing this header, you need to install the libxcursor-dev package
#include <X11/Xcursor/Xcursor.h>
#endif
#undef SIZEOF
#undef KeyPress
#include "native/x11/juce_linux_XWindowSystem.h"
#include "native/x11/juce_linux_X11_Symbols.h"
#endif
#endif
#if JUCE_GUI_BASICS_INCLUDE_SCOPED_THREAD_DPI_AWARENESS_SETTER && JUCE_WINDOWS
#include "native/juce_win32_ScopedThreadDPIAwarenessSetter.h"
#endif
#if JUCE_MAC
#include "native/mac_objectivec_interface.h"
#endif
#include "layout/juce_FlexItem.h"
#include "layout/juce_FlexBox.h"
#include "layout/juce_GridItem.h"
#include "layout/juce_Grid.h"
#include "native/juce_ScopedDPIAwarenessDisabler.h"

View File

@ -0,0 +1,40 @@
/*
* Interactions with the Mac Pasteboard
*/
namespace juce
{
/// Copy the supplied Preset data to the clipboard
void macPasteboard::copyPresetDataToClipboard(void *data, size_t size)
{
NSData *dataToCopy = [NSData dataWithBytes:data length:size];
NSString *pasteboardType = @"com.discodsp.document.fxb";
[[NSPasteboard generalPasteboard] declareTypes:@[pasteboardType] owner:nil];
[[NSPasteboard generalPasteboard] setData:dataToCopy forType:pasteboardType];
}
/// Load a Preset from the clipboard into a juce MemoryBlock
bool macPasteboard::fetchPresetDataFromClipboard(juce::MemoryBlock& mb)
{
NSString *pasteboardType = @"com.discodsp.document.fxb";
NSData *data = [[NSPasteboard generalPasteboard] dataForType:pasteboardType];
if (data != nil)
{
mb.replaceAll(data.bytes, data.length);
return YES;
}
return NO;
}
/// Indicates if Preset data is available on the clipboard
bool macPasteboard::containsPresetData()
{
return [[NSPasteboard generalPasteboard] canReadItemWithDataConformingToTypes:@[@"com.discodsp.document.fxb"]];
}
} // namespace

View File

@ -0,0 +1,18 @@
/*
* Native Mac interface
*
* Interface from C++ to Objective C
*/
namespace juce
{
// Mac Clipboard
class macPasteboard
{
public:
static void copyPresetDataToClipboard(void *data, size_t size); // Copy Preset data to the clipboard
static bool containsPresetData(); // Indicates if Preset data is on the clipboard
static bool fetchPresetDataFromClipboard(juce::MemoryBlock& mb); // Load Preset from the clipboard into a juce MemoryBlock
};
} // namespace

140
OB-Xd Linux.jucer Normal file
View File

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<JUCERPROJECT id="mxW328" name="OB-Xd" projectType="audioplug" version="2.11.0"
bundleIdentifier="com.discoDSP.Obxd" includeBinaryInAppConfig="1"
pluginName="OB-Xd" pluginDesc="Emulation of famous OB-X, OB-Xa and OB-8 synths"
pluginManufacturer="discoDSP" pluginManufacturerCode="DDSP" pluginCode="Obxd"
pluginIsSynth="1" pluginWantsMidiIn="1" pluginProducesMidiOut="0"
pluginSilenceInIsSilenceOut="0" pluginEditorRequiresKeys="0"
pluginAUExportPrefix="" pluginRTASCategory="2048" aaxIdentifier="com.discodsp.obxd"
companyName="discoDSP" companyWebsite="https://www.discodsp.com/"
pluginIsMidiEffectPlugin="0" pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn"
pluginFormats="buildAU,buildLV2,buildStandalone,buildVST,buildVST3"
buildVST="1" buildVST3="1" buildAU="1" buildAUv3="0" buildRTAS="0"
buildAAX="0" buildStandalone="1" enableIAA="0" jucerFormatVersion="1"
companyCopyright="discoDSP" companyEmail="contactus@discodsp.com"
pluginAAXCategory="2048" pluginVSTCategory="kPlugCategSynth"
displaySplashScreen="1" pluginChannelConfigs="{0,2}" pluginAUMainType="'aumu'"
pluginVST3Category="Synth" lv2Uri="https://www.discodsp.com/obxd/">
<MAINGROUP id="NZ3n4V" name="OB-Xd">
<GROUP id="{90740217-84AB-FD0D-FBC4-CA9EA2C68D5E}" name="Source">
<GROUP id="{E11C29DD-69D5-DA26-5CFF-B65751876DEE}" name="MTS">
<FILE id="IUi0NP" name="libMTSClient.cpp" compile="1" resource="0"
file="Source/MTS/libMTSClient.cpp"/>
<FILE id="D5281m" name="libMTSClient.h" compile="0" resource="0" file="Source/MTS/libMTSClient.h"/>
</GROUP>
<GROUP id="{BD020CFA-798B-F1A1-A6C7-7559BD467248}" name="Components">
<FILE id="ZHNz4D" name="ScaleComponent.cpp" compile="1" resource="0"
file="Source/Components/ScaleComponent.cpp"/>
<FILE id="j4plOT" name="ScaleComponent.h" compile="0" resource="0"
file="Source/Components/ScaleComponent.h"/>
<FILE id="XnxhrR" name="PresetBar.h" compile="0" resource="0" file="Source/Components/PresetBar.h"/>
<FILE id="GHGyel" name="PresetBar.cpp" compile="1" resource="0" file="Source/Components/PresetBar.cpp"/>
<FILE id="qhLBZY" name="SetPresetNameWindow.cpp" compile="1" resource="0"
file="Source/Components/SetPresetNameWindow.cpp"/>
<FILE id="ysasLl" name="SetPresetNameWindow.h" compile="0" resource="0"
file="Source/Components/SetPresetNameWindow.h"/>
</GROUP>
<GROUP id="{5F0B15D1-4D92-B2FF-5904-9CF4C3CE645F}" name="Images">
<FILE id="nnY63W" name="appicon.png" compile="0" resource="1" file="Source/Images/appicon.png"/>
<FILE id="kwaOoZ" name="main.png" compile="0" resource="1" file="Source/Images/main.png"/>
<FILE id="S4I5XU" name="main@2x.png" compile="0" resource="1" file="Source/Images/main@2x.png"/>
<FILE id="A8hDlt" name="main@4x.png" compile="0" resource="1" file="Source/Images/main@4x.png"/>
<FILE id="l84SVW" name="menu.png" compile="0" resource="1" file="Source/Images/menu.png"/>
<FILE id="a3krBW" name="menu@2x.png" compile="0" resource="1" file="Source/Images/menu@2x.png"/>
<FILE id="bxKZxm" name="menu@4x.png" compile="0" resource="1" file="Source/Images/menu@4x.png"/>
<FILE id="NKGY6X" name="presetnavigation.svg" compile="0" resource="1"
file="Source/Images/presetnavigation.svg"/>
</GROUP>
<GROUP id="{6995BDF2-263F-3CA7-8CA4-4E21F325477A}" name="Gui">
<FILE id="zJoidp" name="ButtonList.h" compile="0" resource="0" file="Source/Gui/ButtonList.h"/>
<FILE id="I5Qd7K" name="ImageButton.h" compile="0" resource="0" file="Source/Gui/ImageButton.h"/>
<FILE id="lB2ss0" name="Knob.h" compile="0" resource="0" file="Source/Gui/Knob.h"/>
<FILE id="YKpBza" name="TooglableButton.h" compile="0" resource="0"
file="Source/Gui/TooglableButton.h"/>
</GROUP>
<GROUP id="{1A73CFC2-DCEB-F0B6-8B56-21F49DA2C76A}" name="Engine">
<FILE id="puIwTg" name="AdsrEnvelope.h" compile="0" resource="0" file="Source/Engine/AdsrEnvelope.h"/>
<FILE id="gX1oGg" name="APInterpolator.h" compile="0" resource="0"
file="Source/Engine/APInterpolator.h"/>
<FILE id="QrrECt" name="AudioUtils.h" compile="0" resource="0" file="Source/Engine/AudioUtils.h"/>
<FILE id="oR4aDr" name="BlepData.h" compile="0" resource="0" file="Source/Engine/BlepData.h"/>
<FILE id="Kfut62" name="Decimator.h" compile="0" resource="0" file="Source/Engine/Decimator.h"/>
<FILE id="OGpoX0" name="DelayLine.h" compile="0" resource="0" file="Source/Engine/DelayLine.h"/>
<FILE id="MD0CpM" name="Filter.h" compile="0" resource="0" file="Source/Engine/Filter.h"/>
<FILE id="uAQRsN" name="Lfo.h" compile="0" resource="0" file="Source/Engine/Lfo.h"/>
<FILE id="hisHmA" name="midiMap.h" compile="0" resource="0" file="Source/Engine/midiMap.h"/>
<FILE id="PCXDan" name="Motherboard.h" compile="0" resource="0" file="Source/Engine/Motherboard.h"/>
<FILE id="VMrHE6" name="ObxdBank.h" compile="0" resource="0" file="Source/Engine/ObxdBank.h"/>
<FILE id="kuzEP4" name="ObxdOscillatorB.h" compile="0" resource="0"
file="Source/Engine/ObxdOscillatorB.h"/>
<FILE id="WpXJsN" name="ObxdVoice.h" compile="0" resource="0" file="Source/Engine/ObxdVoice.h"/>
<FILE id="mATgXj" name="Params.h" compile="0" resource="0" file="Source/Engine/Params.h"/>
<FILE id="gcujnI" name="ParamsEnum.h" compile="0" resource="0" file="Source/Engine/ParamsEnum.h"/>
<FILE id="rkbmLG" name="ParamSmoother.h" compile="0" resource="0" file="Source/Engine/ParamSmoother.h"/>
<FILE id="upfVOc" name="PulseOsc.h" compile="0" resource="0" file="Source/Engine/PulseOsc.h"/>
<FILE id="cJCh5P" name="SawOsc.h" compile="0" resource="0" file="Source/Engine/SawOsc.h"/>
<FILE id="gXSGsx" name="SynthEngine.h" compile="0" resource="0" file="Source/Engine/SynthEngine.h"/>
<FILE id="dJvsex" name="TriangleOsc.h" compile="0" resource="0" file="Source/Engine/TriangleOsc.h"/>
<FILE id="fH5re8" name="Tuning.h" compile="0" resource="0" file="Source/Engine/Tuning.h"/>
<FILE id="eM2bUm" name="VoiceQueue.h" compile="0" resource="0" file="Source/Engine/VoiceQueue.h"/>
</GROUP>
<FILE id="QQwhFQ" name="PluginProcessor.cpp" compile="1" resource="0"
file="Source/PluginProcessor.cpp"/>
<FILE id="LYHxdB" name="PluginProcessor.h" compile="0" resource="0"
file="Source/PluginProcessor.h"/>
<FILE id="VISBqh" name="PluginEditor.cpp" compile="1" resource="0"
file="Source/PluginEditor.cpp"/>
<FILE id="LkXqq2" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/>
<FILE id="nvjdHY" name="Utils.cpp" compile="1" resource="0" file="Source/Utils.cpp"/>
<FILE id="ASjsrT" name="Utils.h" compile="0" resource="0" file="Source/Utils.h"/>
</GROUP>
</MAINGROUP>
<EXPORTFORMATS>
<LINUX_MAKE targetFolder="Builds/LinuxMakefile" extraLinkerFlags="-no-pie -lcurl"
vstLegacyFolder="Modules/vstsdk2.4" extraDefs="JUCE_MODAL_LOOPS_PERMITTED=1">
<CONFIGURATIONS>
<CONFIGURATION name="Release64" libraryPath="/usr/X11R6/lib/" isDebug="0" optimisation="3"
targetName="OB-Xd" linuxArchitecture="-m64" headerPath="../../JuceLibraryCode&#10;../../Source&#10;../Modules/vstsdk2.4&#10;/usr/include/freetype2&#10;/usr/include"
linkTimeOptimisation="1" enablePluginBinaryCopyStep="0"/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_opengl" path="Modules"/>
<MODULEPATH id="juce_gui_extra" path="Modules"/>
<MODULEPATH id="juce_gui_basics" path="Modules"/>
<MODULEPATH id="juce_graphics" path="Modules"/>
<MODULEPATH id="juce_events" path="Modules"/>
<MODULEPATH id="juce_data_structures" path="Modules"/>
<MODULEPATH id="juce_core" path="Modules"/>
<MODULEPATH id="juce_audio_utils" path="Modules"/>
<MODULEPATH id="juce_audio_processors" path="Modules"/>
<MODULEPATH id="juce_audio_plugin_client" path="Modules"/>
<MODULEPATH id="juce_audio_formats" path="Modules"/>
<MODULEPATH id="juce_audio_devices" path="Modules"/>
<MODULEPATH id="juce_audio_basics" path="Modules"/>
</MODULEPATHS>
</LINUX_MAKE>
</EXPORTFORMATS>
<MODULES>
<MODULES id="juce_audio_basics" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_audio_devices" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_audio_formats" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"
useGlobalPath="0"/>
<MODULES id="juce_audio_processors" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_core" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_data_structures" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_events" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_graphics" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_gui_basics" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_gui_extra" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
<MODULES id="juce_opengl" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
</MODULES>
<JUCEOPTIONS JUCE_QUICKTIME="disabled" JUCE_WEB_BROWSER="0" JUCE_ASIO="1"
JUCE_JACK="1" JUCE_USE_CURL="0"/>
<LIVE_SETTINGS>
<OSX/>
<WINDOWS/>
</LIVE_SETTINGS>
</JUCERPROJECT>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<JUCERPROJECT id="mxW328" name="OB-Xd" projectType="audioplug" version="2.9.0"
<JUCERPROJECT id="mxW328" name="OB-Xd" projectType="audioplug" version="2.11.0"
bundleIdentifier="com.discoDSP.Obxd" includeBinaryInAppConfig="1"
pluginName="OB-Xd" pluginDesc="Emulation of famous OB-X, OB-Xa and OB-8 synths"
pluginManufacturer="discoDSP" pluginManufacturerCode="DDSP" pluginCode="Obxd"
@ -9,12 +9,12 @@
pluginAUExportPrefix="" pluginRTASCategory="2048" aaxIdentifier="com.discodsp.obxd"
companyName="discoDSP" companyWebsite="https://www.discodsp.com/"
pluginIsMidiEffectPlugin="0" pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn"
pluginFormats="buildAU,buildLV2,buildStandalone,buildVST,buildVST3"
buildVST="1" buildVST3="1" buildAU="1" buildAUv3="0" buildRTAS="0"
buildAAX="0" buildStandalone="1" enableIAA="0" jucerFormatVersion="1"
pluginChannelConfigs="{0,2}" companyCopyright="discoDSP" companyEmail="contactus@discodsp.com"
pluginAAXCategory="2048" pluginVSTCategory="kPlugCategSynth"
displaySplashScreen="0">
pluginFormats="buildAU,buildStandalone,buildVST,buildVST3" buildVST="1"
buildVST3="1" buildAU="1" buildAUv3="0" buildRTAS="0" buildAAX="0"
buildStandalone="1" enableIAA="0" jucerFormatVersion="1" companyCopyright="discoDSP"
companyEmail="contactus@discodsp.com" pluginAAXCategory="2048"
pluginVSTCategory="kPlugCategSynth" displaySplashScreen="1" pluginChannelConfigs="{0,2}"
pluginAUMainType="'aumu'" pluginVST3Category="Synth">
<MAINGROUP id="NZ3n4V" name="OB-Xd">
<GROUP id="{90740217-84AB-FD0D-FBC4-CA9EA2C68D5E}" name="Source">
<GROUP id="{E11C29DD-69D5-DA26-5CFF-B65751876DEE}" name="MTS">
@ -92,7 +92,8 @@
<EXPORTFORMATS>
<XCODE_MAC targetFolder="Builds/MacOSX" bigIcon="nnY63W" smallIcon="nnY63W"
vstLegacyFolder="Modules/vstsdk2.4" vst3Folder="Modules/vstsdk3"
aaxFolder="Modules/aax" extraDefs="JUCE_MODAL_LOOPS_PERMITTED=1">
aaxFolder="Modules/aax" extraDefs="JUCE_MODAL_LOOPS_PERMITTED=1"
iosDevelopmentTeamID="96UBP6BN94">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="OB-Xd"
stripLocalSymbols="0" linkTimeOptimisation="0"/>
@ -116,29 +117,6 @@
<MODULEPATH id="juce_audio_utils" path="Modules"/>
</MODULEPATHS>
</XCODE_MAC>
<LINUX_MAKE targetFolder="Builds/LinuxMakefile" extraLinkerFlags="-no-pie -lcurl"
vstLegacyFolder="Modules/vstsdk2.4" extraDefs="JUCE_MODAL_LOOPS_PERMITTED=1">
<CONFIGURATIONS>
<CONFIGURATION name="Release64" libraryPath="/usr/X11R6/lib/" isDebug="0" optimisation="3"
targetName="OB-Xd" linuxArchitecture="-m64" headerPath="../../JuceLibraryCode&#10;../../Source&#10;../Modules/vstsdk2.4&#10;/usr/include/freetype2&#10;/usr/include"
linkTimeOptimisation="1"/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_opengl" path="Modules"/>
<MODULEPATH id="juce_gui_extra" path="Modules"/>
<MODULEPATH id="juce_gui_basics" path="Modules"/>
<MODULEPATH id="juce_graphics" path="Modules"/>
<MODULEPATH id="juce_events" path="Modules"/>
<MODULEPATH id="juce_data_structures" path="Modules"/>
<MODULEPATH id="juce_core" path="Modules"/>
<MODULEPATH id="juce_audio_utils" path="Modules"/>
<MODULEPATH id="juce_audio_processors" path="Modules"/>
<MODULEPATH id="juce_audio_plugin_client" path="Modules"/>
<MODULEPATH id="juce_audio_formats" path="Modules"/>
<MODULEPATH id="juce_audio_devices" path="Modules"/>
<MODULEPATH id="juce_audio_basics" path="Modules"/>
</MODULEPATHS>
</LINUX_MAKE>
<VS2019 targetFolder="Builds/VisualStudio2019" smallIcon="nnY63W" bigIcon="nnY63W"
vstLegacyFolder="Modules/vstsdk2.4" vst3Folder="Modules/vstsdk3"
aaxFolder="Modules/aax" extraDefs="JUCE_MODAL_LOOPS_PERMITTED=1">

View File

@ -15,4 +15,4 @@ Latest binaries can be downloaded at https://www.discodsp.com/obxd/
# Building
Source code can be compiled with [JUCE 7.0.1](https://github.com/juce-framework/JUCE/releases/tag/7.0.1).
Source code can be compiled with [JUCE 7.0.3](https://github.com/juce-framework/JUCE/releases/tag/7.0.3).

View File

@ -863,8 +863,13 @@ void ObxdAudioProcessorEditor::rebuildComponents (ObxdAudioProcessor& ownerFilte
void ObxdAudioProcessorEditor::createMenu ()
{
#if JUCE_MAC
bool enablePasteOption = macPasteboard::containsPresetData(); // Check if the clipboard contains data for a Preset
#else
juce::MemoryBlock memoryBlock;
memoryBlock.fromBase64Encoding(SystemClipboard::getTextFromClipboard());
bool enablePasteOption = processor.isMemoryBlockAPreset(memoryBlock);
#endif
popupMenus.clear();
PopupMenu* menu = new PopupMenu();
//menu->setLookAndFeel(new CustomLookAndFeel(&this->processor));
@ -928,6 +933,7 @@ void ObxdAudioProcessorEditor::createMenu ()
true,
false);
fileMenu.addSeparator();
fileMenu.addItem(static_cast<int>(MenuAction::CopyPreset),
@ -1031,7 +1037,7 @@ void ObxdAudioProcessorEditor::createMenu ()
#if defined(JUCE_MAC) || defined(WIN32)
PopupMenu helpMenu;
helpMenu.setLookAndFeel(&this->getLookAndFeel());
String version = String("Release ") + String(JucePlugin_VersionString);//.dropLastCharacters(2);
String version = String("Release ") + String(JucePlugin_VersionString).dropLastCharacters(2);
helpMenu.addItem(menuScaleNum+4, "Manual", true);
helpMenu.addItem(menuScaleNum+3, version, false);
menu->addSubMenu("Help", helpMenu, true);
@ -1338,6 +1344,7 @@ void ObxdAudioProcessorEditor::MenuActionCallback(int action){
}
};
#if JUCE_MAC
// Copy to clipboard
if (action == MenuAction::CopyPreset)
{
@ -1362,6 +1369,32 @@ void ObxdAudioProcessorEditor::MenuActionCallback(int action){
processor.loadFromMemoryBlock(memoryBlock); //loadPreset(memoryBlock);
}
}
#else
// Copy to clipboard
if (action == MenuAction::CopyPreset)
{
juce::MemoryBlock serializedData;
// Serialize the Preset, produces the same data as an export but into memory instead of a file.
processor.serializePreset(serializedData);
// Place the data onto the clipboard
SystemClipboard::copyTextToClipboard(serializedData.toBase64Encoding());
}
// Paste from clipboard
if (action == MenuAction::PastePreset)
{
juce::MemoryBlock memoryBlock;
// Fetch Preset data from the clipboard
memoryBlock.fromBase64Encoding(SystemClipboard::getTextFromClipboard());
// Load the data
processor.loadFromMemoryBlock(memoryBlock); //loadPreset(memoryBlock);
}
#endif
}

View File

@ -670,6 +670,21 @@ bool ObxdAudioProcessor::loadFromFXBFile(const File& fxbFile)
return true;
}
bool ObxdAudioProcessor::isMemoryBlockAPreset(const MemoryBlock& mb)
{
const void* const data = mb.getData();
const size_t dataSize = mb.getSize();
if (dataSize < 28)
return false;
const fxSet* const set = (const fxSet*)data;
if ((!compareMagic(set->chunkMagic, "CcnK")) || fxbSwap(set->version) > fxbVersionNum)
return false;
return true;
}
bool ObxdAudioProcessor::loadFromMemoryBlock(MemoryBlock& mb)
{
const void* const data = mb.getData();

View File

@ -184,6 +184,7 @@ public:
bool loadFromFXPFile(const File& fxbFile);
bool loadFromFXBFile(const File& fxbFile);
bool isMemoryBlockAPreset(const MemoryBlock& memoryBlock);
bool loadFromMemoryBlock(MemoryBlock& memoryBlock);
bool saveFXBFile(const File& fxbFile);
bool saveFXPFile(const File& fxpFile);