| @@ -24,7 +24,7 @@ tool) or with CMake. | |||||
| The repository doesn't contain a pre-built Projucer so you will need to build it | The repository doesn't contain a pre-built Projucer so you will need to build it | ||||
| for your platform - Xcode, Visual Studio and Linux Makefile projects are located in | for your platform - Xcode, Visual Studio and Linux Makefile projects are located in | ||||
| [extras/Projucer/Builds](/extras/Projucer/Builds) | [extras/Projucer/Builds](/extras/Projucer/Builds) | ||||
| (the minumum system requirements are listed in the __System Requirements__ section below). | |||||
| (the minimum system requirements are listed in the __System Requirements__ section below). | |||||
| The Projucer can then be used to create new JUCE projects, view tutorials and run examples. | The Projucer can then be used to create new JUCE projects, view tutorials and run examples. | ||||
| It is also possible to include the JUCE modules source code in an existing project directly, | It is also possible to include the JUCE modules source code in an existing project directly, | ||||
| or build them into a static or dynamic library which can be linked into a project. | or build them into a static or dynamic library which can be linked into a project. | ||||
| @@ -539,7 +539,7 @@ attributes directly to these creation functions, rather than adding them later. | |||||
| `USE_LEGACY_COMPATIBILITY_PLUGIN_CODE` | `USE_LEGACY_COMPATIBILITY_PLUGIN_CODE` | ||||
| - May be either TRUE or FALSE (defaults to FALSE). If TRUE, will override the value of the | - May be either TRUE or FALSE (defaults to FALSE). If TRUE, will override the value of the | ||||
| preprocessor definition "JucePlugin_ManufacturerCode" with the hex equivalent of "proj". This | preprocessor definition "JucePlugin_ManufacturerCode" with the hex equivalent of "proj". This | ||||
| option exists to maintain compatiblity with a previous, buggy version of JUCE's CMake support | |||||
| option exists to maintain compatibility with a previous, buggy version of JUCE's CMake support | |||||
| which mishandled the manufacturer code property. Most projects should leave this option set to | which mishandled the manufacturer code property. Most projects should leave this option set to | ||||
| its default value. | its default value. | ||||
| @@ -17,7 +17,7 @@ JUCE convention for naming modules is lower-case with underscores, e.g. | |||||
| juce_events | juce_events | ||||
| juce_graphics | juce_graphics | ||||
| But any name that is a valid C++ identifer is OK. | |||||
| But any name that is a valid C++ identifier is OK. | |||||
| Inside the root of this folder, there must be a set of public header and source files which | Inside the root of this folder, there must be a set of public header and source files which | ||||
| the user's' project will include. The module may have as many other internal source files as | the user's' project will include. The module may have as many other internal source files as | ||||
| @@ -6,7 +6,7 @@ flag used to disable it is noted. | |||||
| This has been tested on Ubuntu 16.04 LTS (Xenial Xerus), 18.04 LTS (Bionic | This has been tested on Ubuntu 16.04 LTS (Xenial Xerus), 18.04 LTS (Bionic | ||||
| Beaver), and 20.04 LTS (Focal Fossa). Packages may differ in name or not be | Beaver), and 20.04 LTS (Focal Fossa). Packages may differ in name or not be | ||||
| available on other distrubutions. | |||||
| available on other distributions. | |||||
| ## Compiler | ## Compiler | ||||
| A C++ compiler is required. JUCE has been tested thoroughly with Clang and GCC: | A C++ compiler is required. JUCE has been tested thoroughly with Clang and GCC: | ||||
| @@ -61,7 +61,7 @@ else() | |||||
| message(STATUS "Configuring juceaide") | message(STATUS "Configuring juceaide") | ||||
| # Looks like we're boostrapping, reinvoke CMake | |||||
| # Looks like we're bootstrapping, reinvoke CMake | |||||
| execute_process(COMMAND "${CMAKE_COMMAND}" | execute_process(COMMAND "${CMAKE_COMMAND}" | ||||
| "." | "." | ||||
| "-B${JUCE_BINARY_DIR}/tools" | "-B${JUCE_BINARY_DIR}/tools" | ||||
| @@ -1314,7 +1314,7 @@ void Project::createPropertyEditors (PropertyListBuilder& props) | |||||
| "which may simplify the includes in the project."); | "which may simplify the includes in the project."); | ||||
| props.add (new ChoicePropertyComponent (addUsingNamespaceToJuceHeader, "Add \"using namespace juce\" to JuceHeader.h"), | props.add (new ChoicePropertyComponent (addUsingNamespaceToJuceHeader, "Add \"using namespace juce\" to JuceHeader.h"), | ||||
| "If enabled, the JuceHeader.h will include a \"using namepace juce\" statement. If disabled, " | |||||
| "If enabled, the JuceHeader.h will include a \"using namespace juce\" statement. If disabled, " | |||||
| "no such statement will be included. This setting used to be enabled by default, but it " | "no such statement will be included. This setting used to be enabled by default, but it " | ||||
| "is recommended to leave it disabled for new projects."); | "is recommended to leave it disabled for new projects."); | ||||
| @@ -28,7 +28,7 @@ namespace universal_midi_packets | |||||
| { | { | ||||
| /** | /** | ||||
| This struct acts as a single-file namespace for Univeral MIDI Packet | |||||
| This struct acts as a single-file namespace for Universal MIDI Packet | |||||
| functionality related to 7-bit SysEx. | functionality related to 7-bit SysEx. | ||||
| @tags{Audio} | @tags{Audio} | ||||
| @@ -174,7 +174,7 @@ public: | |||||
| A pointer to the object you pass in will be kept, but it won't be deleted | A pointer to the object you pass in will be kept, but it won't be deleted | ||||
| by this object, so it's the caller's responsibility to manage it. | by this object, so it's the caller's responsibility to manage it. | ||||
| If you pass a nullptr, then no contraints will be placed on the positioning of the window. | |||||
| If you pass a nullptr, then no constraints will be placed on the positioning of the window. | |||||
| */ | */ | ||||
| void setConstrainer (ComponentBoundsConstrainer* newConstrainer); | void setConstrainer (ComponentBoundsConstrainer* newConstrainer); | ||||
| @@ -175,7 +175,7 @@ public: | |||||
| std::make_unique<AudioParameterInt> ("b", "Parameter B", 0, 5, 2) }) | std::make_unique<AudioParameterInt> ("b", "Parameter B", 0, 5, 2) }) | ||||
| @endcode | @endcode | ||||
| To add parameters programatically you can call `add` repeatedly on a | |||||
| To add parameters programmatically you can call `add` repeatedly on a | |||||
| ParameterLayout instance: | ParameterLayout instance: | ||||
| @code | @code | ||||
| @@ -64,7 +64,7 @@ public: | |||||
| */ | */ | ||||
| bool loadThumb (AudioThumbnailBase& thumb, int64 hashCode); | bool loadThumb (AudioThumbnailBase& thumb, int64 hashCode); | ||||
| /** Stores the cachable data from the specified thumb in this cache. | |||||
| /** Stores the cacheable data from the specified thumb in this cache. | |||||
| This is called automatically by the AudioThumbnail class, so you shouldn't | This is called automatically by the AudioThumbnail class, so you shouldn't | ||||
| normally need to call it directly. | normally need to call it directly. | ||||
| @@ -36,7 +36,7 @@ namespace juce | |||||
| Only after a Bluetooth MIDI device has been paired will its MIDI ports | Only after a Bluetooth MIDI device has been paired will its MIDI ports | ||||
| be available through JUCE's MidiInput and MidiOutput classes. | be available through JUCE's MidiInput and MidiOutput classes. | ||||
| This dialogue is currently only available on macOS targetting versions 10.11+, | |||||
| This dialogue is currently only available on macOS targeting versions 10.11+, | |||||
| iOS and Android. When targeting older versions of macOS you should instead | iOS and Android. When targeting older versions of macOS you should instead | ||||
| pair Bluetooth MIDI devices using the "Audio MIDI Setup" app (located in | pair Bluetooth MIDI devices using the "Audio MIDI Setup" app (located in | ||||
| /Applications/Utilities). On Windows, you should use the system settings. On | /Applications/Utilities). On Windows, you should use the system settings. On | ||||
| @@ -76,7 +76,7 @@ public: | |||||
| { | { | ||||
| } | } | ||||
| /** Initalises from a null-terminated raw array of values. | |||||
| /** Initialises from a null-terminated raw array of values. | |||||
| @param data the data to copy from | @param data the data to copy from | ||||
| */ | */ | ||||
| template <typename TypeToCreateFrom> | template <typename TypeToCreateFrom> | ||||
| @@ -86,7 +86,7 @@ public: | |||||
| add (*data++); | add (*data++); | ||||
| } | } | ||||
| /** Initalises from a raw array of values. | |||||
| /** Initialises from a raw array of values. | |||||
| @param data the data to copy from | @param data the data to copy from | ||||
| @param numValues the number of values in the array | @param numValues the number of values in the array | ||||
| */ | */ | ||||
| @@ -96,26 +96,26 @@ public: | |||||
| values.addArray (data, numValues); | values.addArray (data, numValues); | ||||
| } | } | ||||
| /** Initalises an Array of size 1 containing a single element. */ | |||||
| /** Initialises an Array of size 1 containing a single element. */ | |||||
| Array (const ElementType& singleElementToAdd) | Array (const ElementType& singleElementToAdd) | ||||
| { | { | ||||
| add (singleElementToAdd); | add (singleElementToAdd); | ||||
| } | } | ||||
| /** Initalises an Array of size 1 containing a single element. */ | |||||
| /** Initialises an Array of size 1 containing a single element. */ | |||||
| Array (ElementType&& singleElementToAdd) | Array (ElementType&& singleElementToAdd) | ||||
| { | { | ||||
| add (std::move (singleElementToAdd)); | add (std::move (singleElementToAdd)); | ||||
| } | } | ||||
| /** Initalises an Array from a list of items. */ | |||||
| /** Initialises an Array from a list of items. */ | |||||
| template <typename... OtherElements> | template <typename... OtherElements> | ||||
| Array (const ElementType& firstNewElement, OtherElements&&... otherElements) | Array (const ElementType& firstNewElement, OtherElements&&... otherElements) | ||||
| { | { | ||||
| values.add (firstNewElement, std::forward<OtherElements> (otherElements)...); | values.add (firstNewElement, std::forward<OtherElements> (otherElements)...); | ||||
| } | } | ||||
| /** Initalises an Array from a list of items. */ | |||||
| /** Initialises an Array from a list of items. */ | |||||
| template <typename... OtherElements> | template <typename... OtherElements> | ||||
| Array (ElementType&& firstNewElement, OtherElements&&... otherElements) | Array (ElementType&& firstNewElement, OtherElements&&... otherElements) | ||||
| { | { | ||||
| @@ -125,7 +125,7 @@ public: | |||||
| /** Sets a flag to change the treatment of empty text elements. | /** Sets a flag to change the treatment of empty text elements. | ||||
| If this is true (the default state), then any text elements that contain only | If this is true (the default state), then any text elements that contain only | ||||
| whitespace characters will be ingored during parsing. If you need to catch | |||||
| whitespace characters will be ignored during parsing. If you need to catch | |||||
| whitespace-only text, then you should set this to false before calling the | whitespace-only text, then you should set this to false before calling the | ||||
| getDocumentElement() method. | getDocumentElement() method. | ||||
| */ | */ | ||||
| @@ -37,7 +37,7 @@ namespace dsp | |||||
| of the modulation. | of the modulation. | ||||
| Note: To get classic chorus sounds try to use a centre delay time around 7-8 ms | Note: To get classic chorus sounds try to use a centre delay time around 7-8 ms | ||||
| with a low feeback volume and a low depth. This effect can also be used as a | |||||
| with a low feedback volume and a low depth. This effect can also be used as a | |||||
| flanger with a lower centre delay time and a lot of feedback, and as a vibrato | flanger with a lower centre delay time and a lot of feedback, and as a vibrato | ||||
| effect if the mix value is 1. | effect if the mix value is 1. | ||||
| @@ -65,7 +65,7 @@ public: | |||||
| ScaledImage (const Image& imageIn, double scaleIn) | ScaledImage (const Image& imageIn, double scaleIn) | ||||
| : image (imageIn), scaleFactor (scaleIn) {} | : image (imageIn), scaleFactor (scaleIn) {} | ||||
| /** Returns the image at its original dimentions. */ | |||||
| /** Returns the image at its original dimensions. */ | |||||
| Image getImage() const { return image; } | Image getImage() const { return image; } | ||||
| /** Returns the image's scale. */ | /** Returns the image's scale. */ | ||||
| @@ -113,7 +113,7 @@ public: | |||||
| /** Returns the minimum value for this range. */ | /** Returns the minimum value for this range. */ | ||||
| double getMinimumValue() const noexcept { return range.min; } | double getMinimumValue() const noexcept { return range.min; } | ||||
| /** Returns the maxiumum value for this range. */ | |||||
| /** Returns the maximum value for this range. */ | |||||
| double getMaximumValue() const noexcept { return range.max; } | double getMaximumValue() const noexcept { return range.max; } | ||||
| /** Returns the interval for this range. */ | /** Returns the interval for this range. */ | ||||
| @@ -328,7 +328,7 @@ public: | |||||
| operation you could give a value of false to the callback to abort the close operation. | operation you could give a value of false to the callback to abort the close operation. | ||||
| If your component is based on the FileBasedDocument class, then you'd probably want | If your component is based on the FileBasedDocument class, then you'd probably want | ||||
| to call FileBasedDocument::saveIfNeededAndUserAgreesAsync() and call the calback with | |||||
| to call FileBasedDocument::saveIfNeededAndUserAgreesAsync() and call the callback with | |||||
| true if this returned FileBasedDocument::savedOk. | true if this returned FileBasedDocument::savedOk. | ||||
| @see closeDocumentAsync, FileBasedDocument::saveIfNeededAndUserAgreesAsync() | @see closeDocumentAsync, FileBasedDocument::saveIfNeededAndUserAgreesAsync() | ||||
| @@ -399,7 +399,7 @@ private: | |||||
| { | { | ||||
| if (auto* handler = getHandler (self)) | if (auto* handler = getHandler (self)) | ||||
| { | { | ||||
| // occasionaly VoiceOver sends accessibilityActivate to the wrong element, so we first query | |||||
| // Occasionally VoiceOver sends accessibilityActivate to the wrong element, so we first query | |||||
| // which element it thinks has focus and forward the event on to that element if it differs | // which element it thinks has focus and forward the event on to that element if it differs | ||||
| id focusedElement = UIAccessibilityFocusedElement (UIAccessibilityNotificationVoiceOverIdentifier); | id focusedElement = UIAccessibilityFocusedElement (UIAccessibilityNotificationVoiceOverIdentifier); | ||||
| @@ -434,7 +434,7 @@ MimeTypeTableEntry MimeTypeTableEntry::table[641] = | |||||
| {"psd", "application/octet-stream"}, | {"psd", "application/octet-stream"}, | ||||
| {"pvu", "paleovu/x-pv"}, | {"pvu", "paleovu/x-pv"}, | ||||
| {"pwz", "application/vnd.ms-powerpoint"}, | {"pwz", "application/vnd.ms-powerpoint"}, | ||||
| {"py", "text/x-script.phyton"}, | |||||
| {"py", "text/x-script.python"}, | |||||
| {"pyc", "application/x-bytecode.python"}, | {"pyc", "application/x-bytecode.python"}, | ||||
| {"qcp", "audio/vnd.qcelp"}, | {"qcp", "audio/vnd.qcelp"}, | ||||
| {"qd3", "x-world/x-3dmf"}, | {"qd3", "x-world/x-3dmf"}, | ||||
| @@ -889,7 +889,7 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| /** An RAII class for sending slider listener drag messages. | /** An RAII class for sending slider listener drag messages. | ||||
| This is useful if you are programatically updating the slider's value and want | |||||
| This is useful if you are programmatically updating the slider's value and want | |||||
| to imitate a mouse event, for example in a custom AccessibilityHandler. | to imitate a mouse event, for example in a custom AccessibilityHandler. | ||||
| @see Slider::Listener | @see Slider::Listener | ||||
| @@ -71,13 +71,13 @@ void TooltipWindow::mouseEnter (const MouseEvent& e) | |||||
| void TooltipWindow::mouseDown (const MouseEvent&) | void TooltipWindow::mouseDown (const MouseEvent&) | ||||
| { | { | ||||
| if (isVisible()) | if (isVisible()) | ||||
| dismissalMouseEventOccured = true; | |||||
| dismissalMouseEventOccurred = true; | |||||
| } | } | ||||
| void TooltipWindow::mouseWheelMove (const MouseEvent&, const MouseWheelDetails&) | void TooltipWindow::mouseWheelMove (const MouseEvent&, const MouseWheelDetails&) | ||||
| { | { | ||||
| if (isVisible()) | if (isVisible()) | ||||
| dismissalMouseEventOccured = true; | |||||
| dismissalMouseEventOccurred = true; | |||||
| } | } | ||||
| void TooltipWindow::updatePosition (const String& tip, Point<int> pos, Rectangle<int> parentArea) | void TooltipWindow::updatePosition (const String& tip, Point<int> pos, Rectangle<int> parentArea) | ||||
| @@ -145,7 +145,7 @@ void TooltipWindow::displayTipInternal (Point<int> screenPos, const String& tip, | |||||
| toFront (false); | toFront (false); | ||||
| manuallyShownTip = shownManually == ShownManually::yes ? tip : String(); | manuallyShownTip = shownManually == ShownManually::yes ? tip : String(); | ||||
| dismissalMouseEventOccured = false; | |||||
| dismissalMouseEventOccurred = false; | |||||
| } | } | ||||
| } | } | ||||
| @@ -168,7 +168,7 @@ void TooltipWindow::hideTip() | |||||
| { | { | ||||
| tipShowing = {}; | tipShowing = {}; | ||||
| manuallyShownTip = {}; | manuallyShownTip = {}; | ||||
| dismissalMouseEventOccured = false; | |||||
| dismissalMouseEventOccurred = false; | |||||
| removeFromDesktop(); | removeFromDesktop(); | ||||
| setVisible (false); | setVisible (false); | ||||
| @@ -201,7 +201,7 @@ void TooltipWindow::timerCallback() | |||||
| if (manuallyShownTip.isNotEmpty()) | if (manuallyShownTip.isNotEmpty()) | ||||
| { | { | ||||
| if (dismissalMouseEventOccured || newComp == nullptr) | |||||
| if (dismissalMouseEventOccurred || newComp == nullptr) | |||||
| hideTip(); | hideTip(); | ||||
| return; | return; | ||||
| @@ -218,7 +218,7 @@ void TooltipWindow::timerCallback() | |||||
| const auto tipChanged = (newTip != lastTipUnderMouse || newComp != lastComponentUnderMouse); | const auto tipChanged = (newTip != lastTipUnderMouse || newComp != lastComponentUnderMouse); | ||||
| const auto now = Time::getApproximateMillisecondCounter(); | const auto now = Time::getApproximateMillisecondCounter(); | ||||
| if (tipChanged || dismissalMouseEventOccured || mouseMovedQuickly) | |||||
| if (tipChanged || dismissalMouseEventOccurred || mouseMovedQuickly) | |||||
| lastCompChangeTime = now; | lastCompChangeTime = now; | ||||
| const auto showTip = [this, &mouseSource, &mousePos, &newTip] | const auto showTip = [this, &mouseSource, &mousePos, &newTip] | ||||
| @@ -231,7 +231,7 @@ void TooltipWindow::timerCallback() | |||||
| { | { | ||||
| // if a tip is currently visible (or has just disappeared), update to a new one | // if a tip is currently visible (or has just disappeared), update to a new one | ||||
| // immediately if needed.. | // immediately if needed.. | ||||
| if (newComp == nullptr || dismissalMouseEventOccured || newTip.isEmpty()) | |||||
| if (newComp == nullptr || dismissalMouseEventOccurred || newTip.isEmpty()) | |||||
| hideTip(); | hideTip(); | ||||
| else if (tipChanged) | else if (tipChanged) | ||||
| showTip(); | showTip(); | ||||
| @@ -140,7 +140,7 @@ private: | |||||
| String tipShowing, lastTipUnderMouse, manuallyShownTip; | String tipShowing, lastTipUnderMouse, manuallyShownTip; | ||||
| int millisecondsBeforeTipAppears; | int millisecondsBeforeTipAppears; | ||||
| unsigned int lastCompChangeTime = 0, lastHideTime = 0; | unsigned int lastCompChangeTime = 0, lastHideTime = 0; | ||||
| bool reentrant = false, dismissalMouseEventOccured = false; | |||||
| bool reentrant = false, dismissalMouseEventOccurred = false; | |||||
| enum ShownManually { yes, no }; | enum ShownManually { yes, no }; | ||||
| void displayTipInternal (Point<int>, const String&, ShownManually); | void displayTipInternal (Point<int>, const String&, ShownManually); | ||||
| @@ -1305,7 +1305,7 @@ struct CameraDevice::ViewerComponent : public UIViewComponent | |||||
| { | { | ||||
| static JuceCameraDeviceViewerClass cls; | static JuceCameraDeviceViewerClass cls; | ||||
| // Initial size that can be overriden later. | |||||
| // Initial size that can be overridden later. | |||||
| setSize (640, 480); | setSize (640, 480); | ||||
| auto view = [cls.createInstance() init]; | auto view = [cls.createInstance() init]; | ||||
| @@ -362,7 +362,7 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster | |||||
| using Fn = HRESULT (*) (IWMProfileManager**); | using Fn = HRESULT (*) (IWMProfileManager**); | ||||
| // This function is available on Windows 2000 and up, but we load it at runtime anway | |||||
| // This function is available on Windows 2000 and up, but we load it at runtime anyway | |||||
| // because some versions of MinGW ship with libraries that don't include this symbol. | // because some versions of MinGW ship with libraries that don't include this symbol. | ||||
| if (auto* fn = reinterpret_cast<Fn> (wmvcoreLibrary.getFunction ("WMCreateProfileManager"))) | if (auto* fn = reinterpret_cast<Fn> (wmvcoreLibrary.getFunction ("WMCreateProfileManager"))) | ||||
| hr = fn (profileManager.resetAndGetPointerAddress()); | hr = fn (profileManager.resetAndGetPointerAddress()); | ||||