| @@ -166,6 +166,9 @@ public: | |||
| m_body->ApplyTorque(-50.0f); | |||
| } | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| } | |||
| @@ -175,7 +175,11 @@ public: | |||
| return { static_cast<float> (port.index), static_cast<float> (block->getHeight()) }; | |||
| case e::west: | |||
| return { 0.0f, static_cast<float> (port.index) }; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| case 90: | |||
| { | |||
| @@ -189,7 +193,11 @@ public: | |||
| return { static_cast<float> (0.0f - block->getHeight()), static_cast<float> (port.index) }; | |||
| case e::west: | |||
| return { static_cast<float> (-1.0f - port.index), 0.0f }; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| case 180: | |||
| { | |||
| @@ -203,7 +211,11 @@ public: | |||
| return { static_cast<float> (-1.0f - port.index), static_cast<float> (0.0f - block->getHeight()) }; | |||
| case e::west: | |||
| return { 0.0f, static_cast<float> (-1.0f - port.index) }; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| case 270: | |||
| { | |||
| @@ -217,8 +229,15 @@ public: | |||
| return { static_cast<float> (block->getHeight()), static_cast<float> (-1.0f - port.index) }; | |||
| case e::west: | |||
| return { static_cast<float> (port.index), 0.0f }; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| default: | |||
| break; | |||
| } | |||
| return {}; | |||
| @@ -921,7 +940,11 @@ private: | |||
| return 90; | |||
| case edge::west: | |||
| return 270; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| case edge::south: | |||
| { | |||
| @@ -935,7 +958,11 @@ private: | |||
| return 270; | |||
| case edge::west: | |||
| return 90; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| case edge::east: | |||
| { | |||
| @@ -949,7 +976,11 @@ private: | |||
| return 180; | |||
| case edge::west: | |||
| return 0; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| case edge::west: | |||
| @@ -964,8 +995,15 @@ private: | |||
| return 0; | |||
| case edge::west: | |||
| return 180; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| default: | |||
| break; | |||
| } | |||
| return 0; | |||
| @@ -219,13 +219,9 @@ private: | |||
| { | |||
| AlertWindow::AlertIconType icon = AlertWindow::NoIcon; | |||
| switch (type) | |||
| { | |||
| case warningAlertWindow: icon = AlertWindow::WarningIcon; break; | |||
| case infoAlertWindow: icon = AlertWindow::InfoIcon; break; | |||
| case questionAlertWindow: icon = AlertWindow::QuestionIcon; break; | |||
| default: break; | |||
| } | |||
| if (type == warningAlertWindow) icon = AlertWindow::WarningIcon; | |||
| if (type == infoAlertWindow) icon = AlertWindow::InfoIcon; | |||
| if (type == questionAlertWindow) icon = AlertWindow::QuestionIcon; | |||
| AlertWindow::showMessageBoxAsync (icon, "This is an AlertWindow", | |||
| "And this is the AlertWindow's message. Blah blah blah blah blah blah blah blah blah blah blah blah blah.", | |||
| @@ -118,6 +118,7 @@ struct DemoFlexPanel : public juce::Component | |||
| case 3: flexItem.alignSelf = FlexItem::AlignSelf::flexEnd; break; | |||
| case 4: flexItem.alignSelf = FlexItem::AlignSelf::center; break; | |||
| case 5: flexItem.alignSelf = FlexItem::AlignSelf::stretch; break; | |||
| default: break; | |||
| } | |||
| refreshLayout(); | |||
| @@ -89,6 +89,7 @@ static const char* getDisplayOrientation() | |||
| case Desktop::upsideDown: return "Upside-down"; | |||
| case Desktop::rotatedClockwise: return "Rotated Clockwise"; | |||
| case Desktop::rotatedAntiClockwise: return "Rotated Anti-clockwise"; | |||
| case Desktop::allOrientations: return "All"; | |||
| default: jassertfalse; break; | |||
| } | |||
| @@ -227,6 +227,7 @@ private: | |||
| case Type::programs: return "Programs"; | |||
| case Type::audioIO: return "IO"; | |||
| case Type::debug: return "Debug"; | |||
| case Type::numTypes: | |||
| default: return {}; | |||
| } | |||
| } | |||
| @@ -59,6 +59,8 @@ static const char* getLicenseStateValue (LicenseState::Type type) | |||
| case LicenseState::Type::edu: return "edu"; | |||
| case LicenseState::Type::indie: return "indie"; | |||
| case LicenseState::Type::pro: return "pro"; | |||
| case LicenseState::Type::notLoggedIn: | |||
| case LicenseState::Type::noLicenseChosenYet: | |||
| default: return nullptr; | |||
| } | |||
| } | |||
| @@ -77,9 +79,10 @@ static const char* getApplicationUsageDataStateValue (LicenseState::ApplicationU | |||
| { | |||
| switch (type) | |||
| { | |||
| case LicenseState::ApplicationUsageData::enabled: return "enabled"; | |||
| case LicenseState::ApplicationUsageData::disabled: return "disabled"; | |||
| default: return "notChosen"; | |||
| case LicenseState::ApplicationUsageData::enabled: return "enabled"; | |||
| case LicenseState::ApplicationUsageData::disabled: return "disabled"; | |||
| case LicenseState::ApplicationUsageData::notChosenYet: | |||
| default: return "notChosen"; | |||
| } | |||
| } | |||
| @@ -79,6 +79,7 @@ struct DiagnosticMessage | |||
| case error: res << "error: "; break; | |||
| case warning: res << "warning: "; break; | |||
| case note: res << "note: "; break; | |||
| default: break; | |||
| }; | |||
| res << mainFile << ": "; | |||
| @@ -855,6 +855,10 @@ bool Project::shouldBuildTargetType (ProjectType::Target::Type targetType) const | |||
| return projectType.isAudioPlugin(); | |||
| case ProjectType::Target::unspecified: | |||
| return false; | |||
| case ProjectType::Target::GUIApp: | |||
| case ProjectType::Target::ConsoleApp: | |||
| case ProjectType::Target::StaticLibrary: | |||
| case ProjectType::Target::DynamicLibrary: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -894,6 +898,7 @@ const char* ProjectType::Target::getName() const noexcept | |||
| case UnityPlugIn: return "Unity Plugin"; | |||
| case SharedCodeTarget: return "Shared Code"; | |||
| case AggregateTarget: return "All"; | |||
| case unspecified: | |||
| default: return "undefined"; | |||
| } | |||
| } | |||
| @@ -915,6 +920,8 @@ ProjectType::Target::TargetFileType ProjectType::Target::getTargetFileType() con | |||
| case RTASPlugIn: return pluginBundle; | |||
| case UnityPlugIn: return pluginBundle; | |||
| case SharedCodeTarget: return staticLibrary; | |||
| case AggregateTarget: | |||
| case unspecified: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -191,6 +191,11 @@ struct ProjectType_AudioPlugin : public ProjectType | |||
| case Target::SharedCodeTarget: | |||
| case Target::AggregateTarget: | |||
| return true; | |||
| case Target::GUIApp: | |||
| case Target::ConsoleApp: | |||
| case Target::StaticLibrary: | |||
| case Target::DynamicLibrary: | |||
| case Target::unspecified: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -51,18 +51,8 @@ public: | |||
| bool supportsTargetType (ProjectType::Target::Type type) const override | |||
| { | |||
| switch (type) | |||
| { | |||
| case ProjectType::Target::GUIApp: | |||
| case ProjectType::Target::StaticLibrary: | |||
| case ProjectType::Target::DynamicLibrary: | |||
| case ProjectType::Target::StandalonePlugIn: | |||
| return true; | |||
| default: | |||
| break; | |||
| } | |||
| return false; | |||
| return type == ProjectType::Target::GUIApp || type == ProjectType::Target::StaticLibrary | |||
| || type == ProjectType::Target::DynamicLibrary || type == ProjectType::Target::StandalonePlugIn; | |||
| } | |||
| //============================================================================== | |||
| @@ -356,6 +356,8 @@ private: | |||
| properties.add ("MODULE"); | |||
| break; | |||
| case ProjectType::Target::TargetFileType::macOSAppex: | |||
| case ProjectType::Target::TargetFileType::unknown: | |||
| default: | |||
| continue; | |||
| } | |||
| @@ -122,6 +122,13 @@ public: | |||
| case ProjectType::Target::VSTPlugIn: | |||
| case ProjectType::Target::DynamicLibrary: | |||
| return true; | |||
| case ProjectType::Target::AAXPlugIn: | |||
| case ProjectType::Target::RTASPlugIn: | |||
| case ProjectType::Target::UnityPlugIn: | |||
| case ProjectType::Target::VST3PlugIn: | |||
| case ProjectType::Target::AudioUnitPlugIn: | |||
| case ProjectType::Target::AudioUnitv3PlugIn: | |||
| case ProjectType::Target::unspecified: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -274,6 +281,8 @@ private: | |||
| case staticLibrary: return ".lib"; | |||
| case sharedLibraryOrDLL: | |||
| case pluginBundle: return ".dll"; | |||
| case macOSAppex: | |||
| case unknown: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -284,17 +293,10 @@ private: | |||
| { | |||
| case executable: return {}; | |||
| case staticLibrary: return ".a"; | |||
| case sharedLibraryOrDLL: return ".so"; | |||
| case pluginBundle: | |||
| switch (type) | |||
| { | |||
| case VSTPlugIn: return ".so"; | |||
| default: break; | |||
| } | |||
| return ".so"; | |||
| case sharedLibraryOrDLL: return ".so"; | |||
| case macOSAppex: | |||
| case unknown: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -523,22 +525,10 @@ private: | |||
| static int getTypeIndex (const ProjectType::Target::Type& type) | |||
| { | |||
| switch (type) | |||
| { | |||
| case ProjectType::Target::GUIApp: | |||
| case ProjectType::Target::StandalonePlugIn: | |||
| return 0; | |||
| case ProjectType::Target::ConsoleApp: | |||
| return 1; | |||
| case ProjectType::Target::StaticLibrary: | |||
| case ProjectType::Target::SharedCodeTarget: | |||
| return 2; | |||
| case ProjectType::Target::DynamicLibrary: | |||
| case ProjectType::Target::VSTPlugIn: | |||
| return 3; | |||
| default: | |||
| break; | |||
| } | |||
| if (type == ProjectType::Target::GUIApp || type == ProjectType::Target::StandalonePlugIn) return 0; | |||
| if (type == ProjectType::Target::ConsoleApp) return 1; | |||
| if (type == ProjectType::Target::StaticLibrary || type == ProjectType::Target::SharedCodeTarget) return 2; | |||
| if (type == ProjectType::Target::DynamicLibrary || type == ProjectType::Target::VSTPlugIn) return 3; | |||
| return 0; | |||
| } | |||
| @@ -726,15 +726,10 @@ public: | |||
| String getProjectType() const | |||
| { | |||
| switch (getTargetFileType()) | |||
| { | |||
| case executable: | |||
| return "Application"; | |||
| case staticLibrary: | |||
| return "StaticLibrary"; | |||
| default: | |||
| break; | |||
| } | |||
| auto targetFileType = getTargetFileType(); | |||
| if (targetFileType == executable) return "Application"; | |||
| if (targetFileType == staticLibrary) return "StaticLibrary"; | |||
| return "DynamicLibrary"; | |||
| } | |||
| @@ -977,25 +972,17 @@ public: | |||
| { | |||
| auto fileType = getTargetFileType(); | |||
| switch (fileType) | |||
| { | |||
| case executable: return ".exe"; | |||
| case staticLibrary: return ".lib"; | |||
| case sharedLibraryOrDLL: return ".dll"; | |||
| case pluginBundle: | |||
| switch (type) | |||
| { | |||
| case VST3PlugIn: return ".vst3"; | |||
| case AAXPlugIn: return ".aaxdll"; | |||
| case RTASPlugIn: return ".dpm"; | |||
| default: break; | |||
| } | |||
| if (fileType == executable) return ".exe"; | |||
| if (fileType == staticLibrary) return ".lib"; | |||
| if (fileType == sharedLibraryOrDLL) return ".dll"; | |||
| return ".dll"; | |||
| if (fileType == pluginBundle) | |||
| { | |||
| if (type == VST3PlugIn) return ".vst3"; | |||
| if (type == AAXPlugIn) return ".aaxdll"; | |||
| if (type == RTASPlugIn) return ".dpm"; | |||
| default: | |||
| break; | |||
| return ".dll"; | |||
| } | |||
| return {}; | |||
| @@ -1150,22 +1137,15 @@ public: | |||
| void addExtraPreprocessorDefines (StringPairArray& defines) const | |||
| { | |||
| switch (type) | |||
| if (type == AAXPlugIn) | |||
| { | |||
| case AAXPlugIn: | |||
| { | |||
| auto aaxLibsFolder = RelativePath (owner.getAAXPathString(), RelativePath::projectFolder).getChildFile ("Libs"); | |||
| defines.set ("JucePlugin_AAXLibs_path", createRebasedPath (aaxLibsFolder)); | |||
| } | |||
| break; | |||
| case RTASPlugIn: | |||
| { | |||
| RelativePath rtasFolder (owner.getRTASPathString(), RelativePath::projectFolder); | |||
| defines.set ("JucePlugin_WinBag_path", createRebasedPath (rtasFolder.getChildFile ("WinBag"))); | |||
| } | |||
| break; | |||
| default: | |||
| break; | |||
| auto aaxLibsFolder = RelativePath (owner.getAAXPathString(), RelativePath::projectFolder).getChildFile ("Libs"); | |||
| defines.set ("JucePlugin_AAXLibs_path", createRebasedPath (aaxLibsFolder)); | |||
| } | |||
| else if (type == RTASPlugIn) | |||
| { | |||
| RelativePath rtasFolder (owner.getRTASPathString(), RelativePath::projectFolder); | |||
| defines.set ("JucePlugin_WinBag_path", createRebasedPath (rtasFolder.getChildFile ("WinBag"))); | |||
| } | |||
| } | |||
| @@ -1353,6 +1333,9 @@ public: | |||
| case ProjectType::Target::UnityPlugIn: | |||
| case ProjectType::Target::DynamicLibrary: | |||
| return true; | |||
| case ProjectType::Target::AudioUnitPlugIn: | |||
| case ProjectType::Target::AudioUnitv3PlugIn: | |||
| case ProjectType::Target::unspecified: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -175,15 +175,11 @@ public: | |||
| String getTargetFileSuffix() const | |||
| { | |||
| switch (type) | |||
| { | |||
| case VSTPlugIn: | |||
| case UnityPlugIn: | |||
| case DynamicLibrary: return ".so"; | |||
| case SharedCodeTarget: | |||
| case StaticLibrary: return ".a"; | |||
| default: break; | |||
| } | |||
| if (type == VSTPlugIn || type == UnityPlugIn || type == DynamicLibrary) | |||
| return ".so"; | |||
| if (type == SharedCodeTarget || type == StaticLibrary) | |||
| return ".a"; | |||
| return {}; | |||
| } | |||
| @@ -357,6 +353,12 @@ public: | |||
| case ProjectType::Target::DynamicLibrary: | |||
| case ProjectType::Target::UnityPlugIn: | |||
| return true; | |||
| case ProjectType::Target::VST3PlugIn: | |||
| case ProjectType::Target::AAXPlugIn: | |||
| case ProjectType::Target::RTASPlugIn: | |||
| case ProjectType::Target::AudioUnitPlugIn: | |||
| case ProjectType::Target::AudioUnitv3PlugIn: | |||
| case ProjectType::Target::unspecified: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -247,6 +247,7 @@ public: | |||
| case ProjectType::Target::AudioUnitPlugIn: | |||
| case ProjectType::Target::UnityPlugIn: | |||
| return ! iOS; | |||
| case ProjectType::Target::unspecified: | |||
| default: | |||
| break; | |||
| } | |||
| @@ -978,6 +979,7 @@ public: | |||
| xcodeCopyToProductInstallPathAfterBuild = false; | |||
| break; | |||
| case ProjectType::Target::unspecified: | |||
| default: | |||
| // unknown target type! | |||
| jassertfalse; | |||
| @@ -1493,6 +1495,12 @@ public: | |||
| case AAXPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getAAXBinaryLocationString() : String(); | |||
| case UnityPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getUnityPluginBinaryLocationString() : String(); | |||
| case SharedCodeTarget: return owner.isiOS() ? "@executable_path/Frameworks" : "@executable_path/../Frameworks"; | |||
| case StaticLibrary: | |||
| case DynamicLibrary: | |||
| case AudioUnitv3PlugIn: | |||
| case StandalonePlugIn: | |||
| case AggregateTarget: | |||
| case unspecified: | |||
| default: return {}; | |||
| } | |||
| } | |||
| @@ -80,6 +80,7 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int | |||
| case 7: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::windowsTarget)), CodeBlocksProjectExporter::windowsTarget); break; | |||
| case 8: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::linuxTarget)), CodeBlocksProjectExporter::linuxTarget); break; | |||
| case 9: exp = new CLionProjectExporter (project, ValueTree (CLionProjectExporter ::getValueTreeTypeName())); break; | |||
| default: break; | |||
| } | |||
| exp->createDefaultConfigs(); | |||
| @@ -200,10 +200,14 @@ private: | |||
| case '{': | |||
| ++braceDepth; | |||
| break; | |||
| case '}': | |||
| if (--braceDepth == 0) | |||
| return content.substr ((size_t) std::distance (content.begin(), start), | |||
| (size_t) std::distance (start, ptr)); | |||
| default: | |||
| break; | |||
| } | |||
| } | |||
| @@ -87,15 +87,38 @@ String AudioChannelSet::getChannelTypeName (AudioChannelSet::ChannelType type) | |||
| case ambisonicACN13: return NEEDS_TRANS("Ambisonic 13"); | |||
| case ambisonicACN14: return NEEDS_TRANS("Ambisonic 14"); | |||
| case ambisonicACN15: return NEEDS_TRANS("Ambisonic 15"); | |||
| case ambisonicACN16: return NEEDS_TRANS("Ambisonic 16"); | |||
| case ambisonicACN17: return NEEDS_TRANS("Ambisonic 17"); | |||
| case ambisonicACN18: return NEEDS_TRANS("Ambisonic 18"); | |||
| case ambisonicACN19: return NEEDS_TRANS("Ambisonic 19"); | |||
| case ambisonicACN20: return NEEDS_TRANS("Ambisonic 20"); | |||
| case ambisonicACN21: return NEEDS_TRANS("Ambisonic 21"); | |||
| case ambisonicACN22: return NEEDS_TRANS("Ambisonic 22"); | |||
| case ambisonicACN23: return NEEDS_TRANS("Ambisonic 23"); | |||
| case ambisonicACN24: return NEEDS_TRANS("Ambisonic 24"); | |||
| case ambisonicACN25: return NEEDS_TRANS("Ambisonic 25"); | |||
| case ambisonicACN26: return NEEDS_TRANS("Ambisonic 26"); | |||
| case ambisonicACN27: return NEEDS_TRANS("Ambisonic 27"); | |||
| case ambisonicACN28: return NEEDS_TRANS("Ambisonic 28"); | |||
| case ambisonicACN29: return NEEDS_TRANS("Ambisonic 29"); | |||
| case ambisonicACN30: return NEEDS_TRANS("Ambisonic 30"); | |||
| case ambisonicACN31: return NEEDS_TRANS("Ambisonic 31"); | |||
| case ambisonicACN32: return NEEDS_TRANS("Ambisonic 32"); | |||
| case ambisonicACN33: return NEEDS_TRANS("Ambisonic 33"); | |||
| case ambisonicACN34: return NEEDS_TRANS("Ambisonic 34"); | |||
| case ambisonicACN35: return NEEDS_TRANS("Ambisonic 35"); | |||
| case bottomFrontLeft: return NEEDS_TRANS("Bottom Front Left"); | |||
| case bottomFrontCentre: return NEEDS_TRANS("Bottom Front Centre"); | |||
| case bottomFrontRight: return NEEDS_TRANS("Bottom Front Right"); | |||
| case proxymityLeft: return NEEDS_TRANS("Proximity Left"); | |||
| case proximityRight: return NEEDS_TRANS("Proximity Right"); | |||
| case bottomSideLeft: return NEEDS_TRANS("Bottom Side Left"); | |||
| case bottomSideRight: return NEEDS_TRANS("Bottom Side Right"); | |||
| case bottomRearLeft: return NEEDS_TRANS("Bottom Rear Left"); | |||
| case bottomRearCentre: return NEEDS_TRANS("Bottom Rear Centre"); | |||
| case bottomRearRight: return NEEDS_TRANS("Bottom Rear Right"); | |||
| case discreteChannel0: return NEEDS_TRANS("Discrete channel"); | |||
| case discreteChannel0: | |||
| case unknown: | |||
| default: break; | |||
| } | |||
| @@ -148,16 +171,40 @@ String AudioChannelSet::getAbbreviatedChannelTypeName (AudioChannelSet::ChannelT | |||
| case ambisonicACN13: return "ACN13"; | |||
| case ambisonicACN14: return "ACN14"; | |||
| case ambisonicACN15: return "ACN15"; | |||
| case ambisonicACN16: return "ACN16"; | |||
| case ambisonicACN17: return "ACN17"; | |||
| case ambisonicACN18: return "ACN18"; | |||
| case ambisonicACN19: return "ACN19"; | |||
| case ambisonicACN20: return "ACN20"; | |||
| case ambisonicACN21: return "ACN21"; | |||
| case ambisonicACN22: return "ACN22"; | |||
| case ambisonicACN23: return "ACN23"; | |||
| case ambisonicACN24: return "ACN24"; | |||
| case ambisonicACN25: return "ACN25"; | |||
| case ambisonicACN26: return "ACN26"; | |||
| case ambisonicACN27: return "ACN27"; | |||
| case ambisonicACN28: return "ACN28"; | |||
| case ambisonicACN29: return "ACN29"; | |||
| case ambisonicACN30: return "ACN30"; | |||
| case ambisonicACN31: return "ACN31"; | |||
| case ambisonicACN32: return "ACN32"; | |||
| case ambisonicACN33: return "ACN33"; | |||
| case ambisonicACN34: return "ACN34"; | |||
| case ambisonicACN35: return "ACN35"; | |||
| case topSideLeft: return "Tsl"; | |||
| case topSideRight: return "Tsr"; | |||
| case bottomFrontLeft: return "Bfl"; | |||
| case bottomFrontCentre: return "Bfc"; | |||
| case bottomFrontRight: return "Bfr"; | |||
| case proxymityLeft: return "Pl"; | |||
| case proximityRight: return "Pr"; | |||
| case bottomSideLeft: return "Bsl"; | |||
| case bottomSideRight: return "Bsr"; | |||
| case bottomRearLeft: return "Brl"; | |||
| case bottomRearCentre: return "Brc"; | |||
| case bottomRearRight: return "Brr"; | |||
| case discreteChannel0: | |||
| case unknown: | |||
| default: break; | |||
| } | |||
| @@ -216,6 +263,26 @@ AudioChannelSet::ChannelType AudioChannelSet::getChannelTypeFromAbbreviation (co | |||
| if (abbr == "ACN13") return ambisonicACN13; | |||
| if (abbr == "ACN14") return ambisonicACN14; | |||
| if (abbr == "ACN15") return ambisonicACN15; | |||
| if (abbr == "ACN16") return ambisonicACN16; | |||
| if (abbr == "ACN17") return ambisonicACN17; | |||
| if (abbr == "ACN18") return ambisonicACN18; | |||
| if (abbr == "ACN19") return ambisonicACN19; | |||
| if (abbr == "ACN20") return ambisonicACN20; | |||
| if (abbr == "ACN21") return ambisonicACN21; | |||
| if (abbr == "ACN22") return ambisonicACN22; | |||
| if (abbr == "ACN23") return ambisonicACN23; | |||
| if (abbr == "ACN24") return ambisonicACN24; | |||
| if (abbr == "ACN25") return ambisonicACN25; | |||
| if (abbr == "ACN26") return ambisonicACN26; | |||
| if (abbr == "ACN27") return ambisonicACN27; | |||
| if (abbr == "ACN28") return ambisonicACN28; | |||
| if (abbr == "ACN29") return ambisonicACN29; | |||
| if (abbr == "ACN30") return ambisonicACN30; | |||
| if (abbr == "ACN31") return ambisonicACN31; | |||
| if (abbr == "ACN32") return ambisonicACN32; | |||
| if (abbr == "ACN33") return ambisonicACN33; | |||
| if (abbr == "ACN34") return ambisonicACN34; | |||
| if (abbr == "ACN35") return ambisonicACN35; | |||
| if (abbr == "Tsl") return topSideLeft; | |||
| if (abbr == "Tsr") return topSideRight; | |||
| if (abbr == "Bfl") return bottomFrontLeft; | |||
| @@ -168,10 +168,11 @@ namespace AiffFileHelpers | |||
| switch (key) | |||
| { | |||
| case minor: keyString = "minor"; break; | |||
| case major: keyString = "major"; break; | |||
| case neither: keyString = "neither"; break; | |||
| case both: keyString = "both"; break; | |||
| case minor: keyString = "minor"; break; | |||
| case major: keyString = "major"; break; | |||
| case neither: keyString = "neither"; break; | |||
| case both: keyString = "both"; break; | |||
| default: break; | |||
| } | |||
| if (keyString != nullptr) | |||
| @@ -117,6 +117,10 @@ namespace FlacNamespace | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wshadow" | |||
| #pragma clang diagnostic ignored "-Wdeprecated-register" | |||
| #pragma clang diagnostic ignored "-Wswitch-enum" | |||
| #if __has_warning ("-Wimplicit-fallthrough") | |||
| #pragma clang diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #if __has_warning("-Wzero-as-null-pointer-constant") | |||
| #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #endif | |||
| @@ -127,6 +131,12 @@ namespace FlacNamespace | |||
| #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #pragma GCC diagnostic ignored "-Wconversion" | |||
| #pragma GCC diagnostic ignored "-Wsign-conversion" | |||
| #pragma GCC diagnostic ignored "-Wswitch-enum" | |||
| #pragma GCC diagnostic ignored "-Wswitch-default" | |||
| #pragma GCC diagnostic ignored "-Wredundant-decls" | |||
| #if __GNUC__ >= 7 | |||
| #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #endif | |||
| #if JUCE_INTEL | |||
| @@ -1878,6 +1878,9 @@ private: | |||
| *in0++ = *in1++; | |||
| } | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| } | |||
| @@ -44,6 +44,7 @@ namespace OggVorbisNamespace | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wshadow" | |||
| #pragma clang diagnostic ignored "-Wdeprecated-register" | |||
| #pragma clang diagnostic ignored "-Wswitch-enum" | |||
| #if __has_warning("-Wzero-as-null-pointer-constant") | |||
| #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #endif | |||
| @@ -53,6 +54,9 @@ namespace OggVorbisNamespace | |||
| #pragma GCC diagnostic ignored "-Wshadow" | |||
| #pragma GCC diagnostic ignored "-Wsign-conversion" | |||
| #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #pragma GCC diagnostic ignored "-Wswitch-enum" | |||
| #pragma GCC diagnostic ignored "-Wswitch-default" | |||
| #pragma GCC diagnostic ignored "-Wredundant-decls" | |||
| #endif | |||
| #include "oggvorbis/vorbisenc.h" | |||
| @@ -24,10 +24,6 @@ | |||
| ============================================================================== | |||
| */ | |||
| #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client | |||
| extern juce::AudioProcessor* JUCE_API JUCE_CALLTYPE createPluginFilterOfType (juce::AudioProcessor::WrapperType type); | |||
| #endif | |||
| namespace juce | |||
| { | |||
| @@ -124,7 +120,7 @@ public: | |||
| virtual void createPlugin() | |||
| { | |||
| #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client | |||
| processor.reset (::createPluginFilterOfType (AudioProcessor::wrapperType_Standalone)); | |||
| processor.reset (createPluginFilterOfType (AudioProcessor::wrapperType_Standalone)); | |||
| #else | |||
| AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Standalone); | |||
| processor.reset (createPluginFilter()); | |||
| @@ -901,210 +901,6 @@ public: | |||
| } | |||
| //============================================================================== | |||
| struct SpeakerMappings : private AudioChannelSet // (inheritance only to give easier access to items in the namespace) | |||
| { | |||
| struct Mapping | |||
| { | |||
| int32 vst2; | |||
| ChannelType channels[13]; | |||
| bool matches (const Array<ChannelType>& chans) const noexcept | |||
| { | |||
| const int n = sizeof (channels) / sizeof (ChannelType); | |||
| for (int i = 0; i < n; ++i) | |||
| { | |||
| if (channels[i] == unknown) return (i == chans.size()); | |||
| if (i == chans.size()) return (channels[i] == unknown); | |||
| if (channels[i] != chans.getUnchecked(i)) | |||
| return false; | |||
| } | |||
| return true; | |||
| } | |||
| }; | |||
| static AudioChannelSet vstArrangementTypeToChannelSet (const Vst2::VstSpeakerArrangement& arr) | |||
| { | |||
| if (arr.type == Vst2::kSpeakerArrEmpty) return AudioChannelSet::disabled(); | |||
| if (arr.type == Vst2::kSpeakerArrMono) return AudioChannelSet::mono(); | |||
| if (arr.type == Vst2::kSpeakerArrStereo) return AudioChannelSet::stereo(); | |||
| if (arr.type == Vst2::kSpeakerArr30Cine) return AudioChannelSet::createLCR(); | |||
| if (arr.type == Vst2::kSpeakerArr30Music) return AudioChannelSet::createLRS(); | |||
| if (arr.type == Vst2::kSpeakerArr40Cine) return AudioChannelSet::createLCRS(); | |||
| if (arr.type == Vst2::kSpeakerArr50) return AudioChannelSet::create5point0(); | |||
| if (arr.type == Vst2::kSpeakerArr51) return AudioChannelSet::create5point1(); | |||
| if (arr.type == Vst2::kSpeakerArr60Cine) return AudioChannelSet::create6point0(); | |||
| if (arr.type == Vst2::kSpeakerArr61Cine) return AudioChannelSet::create6point1(); | |||
| if (arr.type == Vst2::kSpeakerArr60Music) return AudioChannelSet::create6point0Music(); | |||
| if (arr.type == Vst2::kSpeakerArr61Music) return AudioChannelSet::create6point1Music(); | |||
| if (arr.type == Vst2::kSpeakerArr70Music) return AudioChannelSet::create7point0(); | |||
| if (arr.type == Vst2::kSpeakerArr70Cine) return AudioChannelSet::create7point0SDDS(); | |||
| if (arr.type == Vst2::kSpeakerArr71Music) return AudioChannelSet::create7point1(); | |||
| if (arr.type == Vst2::kSpeakerArr71Cine) return AudioChannelSet::create7point1SDDS(); | |||
| if (arr.type == Vst2::kSpeakerArr40Music) return AudioChannelSet::quadraphonic(); | |||
| for (auto* m = getMappings(); m->vst2 != Vst2::kSpeakerArrEmpty; ++m) | |||
| { | |||
| if (m->vst2 == arr.type) | |||
| { | |||
| AudioChannelSet s; | |||
| for (int i = 0; m->channels[i] != 0; ++i) | |||
| s.addChannel (m->channels[i]); | |||
| return s; | |||
| } | |||
| } | |||
| return AudioChannelSet::discreteChannels (arr.numChannels); | |||
| } | |||
| static int32 channelSetToVstArrangementType (AudioChannelSet channels) | |||
| { | |||
| if (channels == AudioChannelSet::disabled()) return Vst2::kSpeakerArrEmpty; | |||
| if (channels == AudioChannelSet::mono()) return Vst2::kSpeakerArrMono; | |||
| if (channels == AudioChannelSet::stereo()) return Vst2::kSpeakerArrStereo; | |||
| if (channels == AudioChannelSet::createLCR()) return Vst2::kSpeakerArr30Cine; | |||
| if (channels == AudioChannelSet::createLRS()) return Vst2::kSpeakerArr30Music; | |||
| if (channels == AudioChannelSet::createLCRS()) return Vst2::kSpeakerArr40Cine; | |||
| if (channels == AudioChannelSet::create5point0()) return Vst2::kSpeakerArr50; | |||
| if (channels == AudioChannelSet::create5point1()) return Vst2::kSpeakerArr51; | |||
| if (channels == AudioChannelSet::create6point0()) return Vst2::kSpeakerArr60Cine; | |||
| if (channels == AudioChannelSet::create6point1()) return Vst2::kSpeakerArr61Cine; | |||
| if (channels == AudioChannelSet::create6point0Music()) return Vst2::kSpeakerArr60Music; | |||
| if (channels == AudioChannelSet::create6point1Music()) return Vst2::kSpeakerArr61Music; | |||
| if (channels == AudioChannelSet::create7point0()) return Vst2::kSpeakerArr70Music; | |||
| if (channels == AudioChannelSet::create7point0SDDS()) return Vst2::kSpeakerArr70Cine; | |||
| if (channels == AudioChannelSet::create7point1()) return Vst2::kSpeakerArr71Music; | |||
| if (channels == AudioChannelSet::create7point1SDDS()) return Vst2::kSpeakerArr71Cine; | |||
| if (channels == AudioChannelSet::quadraphonic()) return Vst2::kSpeakerArr40Music; | |||
| if (channels == AudioChannelSet::disabled()) | |||
| return Vst2::kSpeakerArrEmpty; | |||
| auto chans = channels.getChannelTypes(); | |||
| for (auto* m = getMappings(); m->vst2 != Vst2::kSpeakerArrEmpty; ++m) | |||
| if (m->matches (chans)) | |||
| return m->vst2; | |||
| return Vst2::kSpeakerArrUserDefined; | |||
| } | |||
| static void channelSetToVstArrangement (const AudioChannelSet& channels, Vst2::VstSpeakerArrangement& result) | |||
| { | |||
| result.type = channelSetToVstArrangementType (channels); | |||
| result.numChannels = channels.size(); | |||
| for (int i = 0; i < result.numChannels; ++i) | |||
| { | |||
| auto& speaker = result.speakers[i]; | |||
| zeromem (&speaker, sizeof (Vst2::VstSpeakerProperties)); | |||
| speaker.type = getSpeakerType (channels.getTypeOfChannel (i)); | |||
| } | |||
| } | |||
| static const Mapping* getMappings() noexcept | |||
| { | |||
| static const Mapping mappings[] = | |||
| { | |||
| { Vst2::kSpeakerArrMono, { centre, unknown } }, | |||
| { Vst2::kSpeakerArrStereo, { left, right, unknown } }, | |||
| { Vst2::kSpeakerArrStereoSurround, { leftSurround, rightSurround, unknown } }, | |||
| { Vst2::kSpeakerArrStereoCenter, { leftCentre, rightCentre, unknown } }, | |||
| { Vst2::kSpeakerArrStereoSide, { leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArrStereoCLfe, { centre, LFE, unknown } }, | |||
| { Vst2::kSpeakerArr30Cine, { left, right, centre, unknown } }, | |||
| { Vst2::kSpeakerArr30Music, { left, right, surround, unknown } }, | |||
| { Vst2::kSpeakerArr31Cine, { left, right, centre, LFE, unknown } }, | |||
| { Vst2::kSpeakerArr31Music, { left, right, LFE, surround, unknown } }, | |||
| { Vst2::kSpeakerArr40Cine, { left, right, centre, surround, unknown } }, | |||
| { Vst2::kSpeakerArr40Music, { left, right, leftSurround, rightSurround, unknown } }, | |||
| { Vst2::kSpeakerArr41Cine, { left, right, centre, LFE, surround, unknown } }, | |||
| { Vst2::kSpeakerArr41Music, { left, right, LFE, leftSurround, rightSurround, unknown } }, | |||
| { Vst2::kSpeakerArr50, { left, right, centre, leftSurround, rightSurround, unknown } }, | |||
| { Vst2::kSpeakerArr51, { left, right, centre, LFE, leftSurround, rightSurround, unknown } }, | |||
| { Vst2::kSpeakerArr60Cine, { left, right, centre, leftSurround, rightSurround, surround, unknown } }, | |||
| { Vst2::kSpeakerArr60Music, { left, right, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr61Cine, { left, right, centre, LFE, leftSurround, rightSurround, surround, unknown } }, | |||
| { Vst2::kSpeakerArr61Music, { left, right, LFE, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr70Cine, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, unknown } }, | |||
| { Vst2::kSpeakerArr70Music, { left, right, centre, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr71Cine, { left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontRight, unknown } }, | |||
| { Vst2::kSpeakerArr71Music, { left, right, centre, LFE, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr80Cine, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } }, | |||
| { Vst2::kSpeakerArr80Music, { left, right, centre, leftSurround, rightSurround, surround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr81Cine, { left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } }, | |||
| { Vst2::kSpeakerArr81Music, { left, right, centre, LFE, leftSurround, rightSurround, surround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr102, { left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontCentre, topFrontRight, topRearLeft, topRearRight, LFE2, unknown } }, | |||
| { Vst2::kSpeakerArrEmpty, { unknown } } | |||
| }; | |||
| return mappings; | |||
| } | |||
| static inline int32 getSpeakerType (AudioChannelSet::ChannelType type) noexcept | |||
| { | |||
| switch (type) | |||
| { | |||
| case AudioChannelSet::left: return Vst2::kSpeakerL; | |||
| case AudioChannelSet::right: return Vst2::kSpeakerR; | |||
| case AudioChannelSet::centre: return Vst2::kSpeakerC; | |||
| case AudioChannelSet::LFE: return Vst2::kSpeakerLfe; | |||
| case AudioChannelSet::leftSurround: return Vst2::kSpeakerLs; | |||
| case AudioChannelSet::rightSurround: return Vst2::kSpeakerRs; | |||
| case AudioChannelSet::leftCentre: return Vst2::kSpeakerLc; | |||
| case AudioChannelSet::rightCentre: return Vst2::kSpeakerRc; | |||
| case AudioChannelSet::surround: return Vst2::kSpeakerS; | |||
| case AudioChannelSet::leftSurroundRear: return Vst2::kSpeakerSl; | |||
| case AudioChannelSet::rightSurroundRear: return Vst2::kSpeakerSr; | |||
| case AudioChannelSet::topMiddle: return Vst2::kSpeakerTm; | |||
| case AudioChannelSet::topFrontLeft: return Vst2::kSpeakerTfl; | |||
| case AudioChannelSet::topFrontCentre: return Vst2::kSpeakerTfc; | |||
| case AudioChannelSet::topFrontRight: return Vst2::kSpeakerTfr; | |||
| case AudioChannelSet::topRearLeft: return Vst2::kSpeakerTrl; | |||
| case AudioChannelSet::topRearCentre: return Vst2::kSpeakerTrc; | |||
| case AudioChannelSet::topRearRight: return Vst2::kSpeakerTrr; | |||
| case AudioChannelSet::LFE2: return Vst2::kSpeakerLfe2; | |||
| default: break; | |||
| } | |||
| return 0; | |||
| } | |||
| static inline AudioChannelSet::ChannelType getChannelType (int32 type) noexcept | |||
| { | |||
| switch (type) | |||
| { | |||
| case Vst2::kSpeakerL: return AudioChannelSet::left; | |||
| case Vst2::kSpeakerR: return AudioChannelSet::right; | |||
| case Vst2::kSpeakerC: return AudioChannelSet::centre; | |||
| case Vst2::kSpeakerLfe: return AudioChannelSet::LFE; | |||
| case Vst2::kSpeakerLs: return AudioChannelSet::leftSurround; | |||
| case Vst2::kSpeakerRs: return AudioChannelSet::rightSurround; | |||
| case Vst2::kSpeakerLc: return AudioChannelSet::leftCentre; | |||
| case Vst2::kSpeakerRc: return AudioChannelSet::rightCentre; | |||
| case Vst2::kSpeakerS: return AudioChannelSet::surround; | |||
| case Vst2::kSpeakerSl: return AudioChannelSet::leftSurroundRear; | |||
| case Vst2::kSpeakerSr: return AudioChannelSet::rightSurroundRear; | |||
| case Vst2::kSpeakerTm: return AudioChannelSet::topMiddle; | |||
| case Vst2::kSpeakerTfl: return AudioChannelSet::topFrontLeft; | |||
| case Vst2::kSpeakerTfc: return AudioChannelSet::topFrontCentre; | |||
| case Vst2::kSpeakerTfr: return AudioChannelSet::topFrontRight; | |||
| case Vst2::kSpeakerTrl: return AudioChannelSet::topRearLeft; | |||
| case Vst2::kSpeakerTrc: return AudioChannelSet::topRearCentre; | |||
| case Vst2::kSpeakerTrr: return AudioChannelSet::topRearRight; | |||
| case Vst2::kSpeakerLfe2: return AudioChannelSet::LFE2; | |||
| default: break; | |||
| } | |||
| return AudioChannelSet::unknown; | |||
| } | |||
| }; | |||
| void timerCallback() override | |||
| { | |||
| if (shouldDeleteEditor) | |||
| @@ -260,6 +260,7 @@ public: | |||
| case VBVSTScanner: return "VBVSTScanner"; | |||
| case ViennaEnsemblePro: return "Vienna Ensemble Pro"; | |||
| case WaveBurner: return "WaveBurner"; | |||
| case UnknownHost: | |||
| default: break; | |||
| } | |||
| @@ -49,14 +49,14 @@ struct SpeakerMappings : private AudioChannelSet // (inheritance only to give e | |||
| bool matches (const Array<ChannelType>& chans) const noexcept | |||
| { | |||
| const int n = sizeof (channels) / sizeof (ChannelType); | |||
| auto n = static_cast<int> (sizeof (channels) / sizeof (ChannelType)); | |||
| for (int i = 0; i < n; ++i) | |||
| { | |||
| if (channels[i] == unknown) return (i == chans.size()); | |||
| if (i == chans.size()) return (channels[i] == unknown); | |||
| if (channels[i] != chans.getUnchecked(i)) | |||
| if (channels[i] != chans.getUnchecked (i)) | |||
| return false; | |||
| } | |||
| @@ -125,27 +125,56 @@ struct SpeakerMappings : private AudioChannelSet // (inheritance only to give e | |||
| else if (channels == AudioChannelSet::create7point1SDDS()) return Vst2::kSpeakerArr71Cine; | |||
| else if (channels == AudioChannelSet::quadraphonic()) return Vst2::kSpeakerArr40Music; | |||
| Array<AudioChannelSet::ChannelType> chans (channels.getChannelTypes()); | |||
| if (channels == AudioChannelSet::disabled()) | |||
| return Vst2::kSpeakerArrEmpty; | |||
| for (const Mapping* m = getMappings(); m->vst2 != Vst2::kSpeakerArrEmpty; ++m) | |||
| auto chans = channels.getChannelTypes(); | |||
| for (auto* m = getMappings(); m->vst2 != Vst2::kSpeakerArrEmpty; ++m) | |||
| if (m->matches (chans)) | |||
| return m->vst2; | |||
| return Vst2::kSpeakerArrUserDefined; | |||
| } | |||
| static void channelSetToVstArrangement (const AudioChannelSet& channels, Vst2::VstSpeakerArrangement& result) | |||
| { | |||
| result.type = channelSetToVstArrangementType (channels); | |||
| result.numChannels = channels.size(); | |||
| for (int i = 0; i < result.numChannels; ++i) | |||
| { | |||
| auto& speaker = result.speakers[i]; | |||
| zeromem (&speaker, sizeof (Vst2::VstSpeakerProperties)); | |||
| speaker.type = getSpeakerType (channels.getTypeOfChannel (i)); | |||
| } | |||
| } | |||
| /** Class to hold a speaker configuration */ | |||
| class VstSpeakerConfigurationHolder | |||
| { | |||
| public: | |||
| VstSpeakerConfigurationHolder() { clear(); } | |||
| VstSpeakerConfigurationHolder (const Vst2::VstSpeakerArrangement& vstConfig) { operator= (vstConfig); } | |||
| VstSpeakerConfigurationHolder (const VstSpeakerConfigurationHolder& other) { operator= (other.get()); } | |||
| VstSpeakerConfigurationHolder() | |||
| { | |||
| clear(); | |||
| } | |||
| VstSpeakerConfigurationHolder (const Vst2::VstSpeakerArrangement& vstConfig) | |||
| { | |||
| operator= (vstConfig); | |||
| } | |||
| VstSpeakerConfigurationHolder (const VstSpeakerConfigurationHolder& other) | |||
| { | |||
| operator= (other.get()); | |||
| } | |||
| VstSpeakerConfigurationHolder (VstSpeakerConfigurationHolder&& other) | |||
| : storage (std::move (other.storage)) { other.clear(); } | |||
| : storage (std::move (other.storage)) | |||
| { | |||
| other.clear(); | |||
| } | |||
| VstSpeakerConfigurationHolder (const AudioChannelSet& channels) | |||
| { | |||
| @@ -241,9 +270,9 @@ struct SpeakerMappings : private AudioChannelSet // (inheritance only to give e | |||
| { Vst2::kSpeakerArr71Music, { left, right, centre, LFE, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr80Cine, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } }, | |||
| { Vst2::kSpeakerArr80Music, { left, right, centre, leftSurround, rightSurround, surround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr81Cine, { left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } }, | |||
| { Vst2::kSpeakerArr81Music, { left, right, centre, LFE, leftSurround, rightSurround, surround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr102, { left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontCentre, topFrontRight, topRearLeft, topRearRight, LFE2, unknown } }, | |||
| { Vst2::kSpeakerArr81Cine, { left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } }, | |||
| { Vst2::kSpeakerArr81Music, { left, right, centre, LFE, leftSurround, rightSurround, surround, leftSurroundRear, rightSurroundRear, unknown } }, | |||
| { Vst2::kSpeakerArr102, { left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontCentre, topFrontRight, topRearLeft, topRearRight, LFE2, unknown } }, | |||
| { Vst2::kSpeakerArrEmpty, { unknown } } | |||
| }; | |||
| @@ -252,31 +281,33 @@ struct SpeakerMappings : private AudioChannelSet // (inheritance only to give e | |||
| static inline int32 getSpeakerType (AudioChannelSet::ChannelType type) noexcept | |||
| { | |||
| switch (type) | |||
| static const std::map<AudioChannelSet::ChannelType, int32> speakerTypeMap = | |||
| { | |||
| case AudioChannelSet::left: return Vst2::kSpeakerL; | |||
| case AudioChannelSet::right: return Vst2::kSpeakerR; | |||
| case AudioChannelSet::centre: return Vst2::kSpeakerC; | |||
| case AudioChannelSet::LFE: return Vst2::kSpeakerLfe; | |||
| case AudioChannelSet::leftSurround: return Vst2::kSpeakerLs; | |||
| case AudioChannelSet::rightSurround: return Vst2::kSpeakerRs; | |||
| case AudioChannelSet::leftCentre: return Vst2::kSpeakerLc; | |||
| case AudioChannelSet::rightCentre: return Vst2::kSpeakerRc; | |||
| case AudioChannelSet::surround: return Vst2::kSpeakerS; | |||
| case AudioChannelSet::leftSurroundRear: return Vst2::kSpeakerSl; | |||
| case AudioChannelSet::rightSurroundRear: return Vst2::kSpeakerSr; | |||
| case AudioChannelSet::topMiddle: return Vst2::kSpeakerTm; | |||
| case AudioChannelSet::topFrontLeft: return Vst2::kSpeakerTfl; | |||
| case AudioChannelSet::topFrontCentre: return Vst2::kSpeakerTfc; | |||
| case AudioChannelSet::topFrontRight: return Vst2::kSpeakerTfr; | |||
| case AudioChannelSet::topRearLeft: return Vst2::kSpeakerTrl; | |||
| case AudioChannelSet::topRearCentre: return Vst2::kSpeakerTrc; | |||
| case AudioChannelSet::topRearRight: return Vst2::kSpeakerTrr; | |||
| case AudioChannelSet::LFE2: return Vst2::kSpeakerLfe2; | |||
| default: break; | |||
| } | |||
| { AudioChannelSet::left, Vst2::kSpeakerL }, | |||
| { AudioChannelSet::right, Vst2::kSpeakerR }, | |||
| { AudioChannelSet::centre, Vst2::kSpeakerC }, | |||
| { AudioChannelSet::LFE, Vst2::kSpeakerLfe }, | |||
| { AudioChannelSet::leftSurround, Vst2::kSpeakerLs }, | |||
| { AudioChannelSet::rightSurround, Vst2::kSpeakerRs }, | |||
| { AudioChannelSet::leftCentre, Vst2::kSpeakerLc }, | |||
| { AudioChannelSet::rightCentre, Vst2::kSpeakerRc }, | |||
| { AudioChannelSet::surround, Vst2::kSpeakerS }, | |||
| { AudioChannelSet::leftSurroundRear, Vst2::kSpeakerSl }, | |||
| { AudioChannelSet::rightSurroundRear, Vst2::kSpeakerSr }, | |||
| { AudioChannelSet::topMiddle, Vst2::kSpeakerTm }, | |||
| { AudioChannelSet::topFrontLeft, Vst2::kSpeakerTfl }, | |||
| { AudioChannelSet::topFrontCentre, Vst2::kSpeakerTfc }, | |||
| { AudioChannelSet::topFrontRight, Vst2::kSpeakerTfr }, | |||
| { AudioChannelSet::topRearLeft, Vst2::kSpeakerTrl }, | |||
| { AudioChannelSet::topRearCentre, Vst2::kSpeakerTrc }, | |||
| { AudioChannelSet::topRearRight, Vst2::kSpeakerTrr }, | |||
| { AudioChannelSet::LFE2, Vst2::kSpeakerLfe2 } | |||
| }; | |||
| if (speakerTypeMap.find (type) == speakerTypeMap.end()) | |||
| return 0; | |||
| return 0; | |||
| return speakerTypeMap.at (type); | |||
| } | |||
| static inline AudioChannelSet::ChannelType getChannelType (int32 type) noexcept | |||
| @@ -2392,11 +2392,12 @@ private: | |||
| case AudioPlayHead::fps30: setHostTimeFrameRate (Vst2::kVstSmpte30fps, 30.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps60: setHostTimeFrameRate (Vst2::kVstSmpte60fps, 60.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps23976: setHostTimeFrameRateDrop (Vst2::kVstSmpte239fps, 24.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps2997: setHostTimeFrameRateDrop (Vst2::kVstSmpte2997fps, 30.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps23976: setHostTimeFrameRateDrop (Vst2::kVstSmpte239fps, 24.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps2997: setHostTimeFrameRateDrop (Vst2::kVstSmpte2997fps, 30.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps2997drop: setHostTimeFrameRateDrop (Vst2::kVstSmpte2997dfps, 30.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps30drop: setHostTimeFrameRateDrop (Vst2::kVstSmpte30dfps, 30.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps60drop: setHostTimeFrameRateDrop (Vst2::kVstSmpte599fps, 60.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fps60drop: setHostTimeFrameRateDrop (Vst2::kVstSmpte599fps, 60.0, position.timeInSeconds); break; | |||
| case AudioPlayHead::fpsUnknown: | |||
| default: break; | |||
| } | |||
| @@ -2715,16 +2716,20 @@ private: | |||
| { | |||
| switch (getVstCategory()) | |||
| { | |||
| case Vst2::kPlugCategEffect: return "Effect"; | |||
| case Vst2::kPlugCategSynth: return "Synth"; | |||
| case Vst2::kPlugCategAnalysis: return "Analysis"; | |||
| case Vst2::kPlugCategMastering: return "Mastering"; | |||
| case Vst2::kPlugCategSpacializer: return "Spacial"; | |||
| case Vst2::kPlugCategRoomFx: return "Reverb"; | |||
| case Vst2::kPlugSurroundFx: return "Surround"; | |||
| case Vst2::kPlugCategRestoration: return "Restoration"; | |||
| case Vst2::kPlugCategGenerator: return "Tone generation"; | |||
| default: break; | |||
| case Vst2::kPlugCategEffect: return "Effect"; | |||
| case Vst2::kPlugCategSynth: return "Synth"; | |||
| case Vst2::kPlugCategAnalysis: return "Analysis"; | |||
| case Vst2::kPlugCategMastering: return "Mastering"; | |||
| case Vst2::kPlugCategSpacializer: return "Spacial"; | |||
| case Vst2::kPlugCategRoomFx: return "Reverb"; | |||
| case Vst2::kPlugSurroundFx: return "Surround"; | |||
| case Vst2::kPlugCategRestoration: return "Restoration"; | |||
| case Vst2::kPlugCategGenerator: return "Tone generation"; | |||
| case Vst2::kPlugCategOfflineProcess: return "Offline Process"; | |||
| case Vst2::kPlugCategShell: return "Shell"; | |||
| case Vst2::kPlugCategUnknown: return "Unknown"; | |||
| case Vst2::kPlugCategMaxCount: | |||
| default: break; | |||
| } | |||
| return nullptr; | |||
| @@ -297,6 +297,8 @@ struct PluginSorter | |||
| case KnownPluginList::sortByFormat: diff = first.pluginFormatName.compare (second.pluginFormatName); break; | |||
| case KnownPluginList::sortByFileSystemLocation: diff = lastPathPart (first.fileOrIdentifier).compare (lastPathPart (second.fileOrIdentifier)); break; | |||
| case KnownPluginList::sortByInfoUpdateTime: diff = compare (first.lastInfoUpdateTime, second.lastInfoUpdateTime); break; | |||
| case KnownPluginList::sortAlphabetically: | |||
| case KnownPluginList::defaultOrder: | |||
| default: break; | |||
| } | |||
| @@ -377,6 +377,7 @@ private: | |||
| case AndroidBluetoothMidiInterface::paired: | |||
| status = AndroidBluetoothMidiDevice::connected; | |||
| break; | |||
| case AndroidBluetoothMidiInterface::unpaired: | |||
| default: | |||
| status = AndroidBluetoothMidiDevice::disconnected; | |||
| } | |||
| @@ -336,7 +336,8 @@ struct Program | |||
| #undef LITTLEFOOT_OP_INT16 | |||
| #undef LITTLEFOOT_OP_INT32 | |||
| default: s << "???"; break; | |||
| case OpCode::endOfOpcodes: | |||
| default: s << "???"; break; | |||
| } | |||
| return s; | |||
| @@ -370,8 +371,11 @@ struct Program | |||
| #undef LITTLEFOOT_OP_INT16 | |||
| #undef LITTLEFOOT_OP_INT32 | |||
| default: jassertfalse; return 0; | |||
| case OpCode::endOfOpcodes: | |||
| default: jassertfalse; break; | |||
| } | |||
| return 0; | |||
| } | |||
| //============================================================================== | |||
| @@ -676,6 +680,7 @@ struct Runner | |||
| switch (op) | |||
| { | |||
| LITTLEFOOT_OPCODES (LITTLEFOOT_PERFORM_OP, LITTLEFOOT_PERFORM_OP_INT8, LITTLEFOOT_PERFORM_OP_INT16, LITTLEFOOT_PERFORM_OP_INT32) | |||
| case OpCode::endOfOpcodes: | |||
| default: setError (ErrorCode::unknownInstruction); break; | |||
| } | |||
| @@ -345,14 +345,16 @@ static const char* getButtonNameForFunction (ControlButton::ButtonFunction fn) n | |||
| case BF::button6: return "6"; | |||
| case BF::button7: return "7"; | |||
| case BF::velocitySensitivity: return "Velocity Sensitivity"; | |||
| case BF::glideSensitivity: return "Glide Sensitivity"; | |||
| case BF::slideSensitivity: return "Slide Sensitivity"; | |||
| case BF::pressSensitivity: return "Press Sensitivity"; | |||
| case BF::liftSensitivity: return "Lift Sensitivity"; | |||
| case BF::fixedVelocity: return "Fixed Velocity"; | |||
| case BF::glideLock: return "Glide Lock"; | |||
| case BF::pianoMode: return "Piano Mode"; | |||
| case BF::velocitySensitivity: return "Velocity Sensitivity"; | |||
| case BF::glideSensitivity: return "Glide Sensitivity"; | |||
| case BF::slideSensitivity: return "Slide Sensitivity"; | |||
| case BF::pressSensitivity: return "Press Sensitivity"; | |||
| case BF::liftSensitivity: return "Lift Sensitivity"; | |||
| case BF::fixedVelocity: return "Fixed Velocity"; | |||
| case BF::glideLock: return "Glide Lock"; | |||
| case BF::pianoMode: return "Piano Mode"; | |||
| default: break; | |||
| } | |||
| jassertfalse; | |||
| @@ -571,6 +571,7 @@ private: | |||
| case Block::ConnectionPort::DeviceEdge::east: return 1; | |||
| case Block::ConnectionPort::DeviceEdge::south: return 2; | |||
| case Block::ConnectionPort::DeviceEdge::west: return 3; | |||
| default: break; | |||
| } | |||
| jassertfalse; | |||
| @@ -629,6 +630,8 @@ private: | |||
| case 3: // left of me | |||
| delta = { -theirBounds.width, (myBounds.height - (myOffset + 1)) - theirOffset }; | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| { | |||
| @@ -671,6 +674,7 @@ private: | |||
| case Block::ConnectionPort::DeviceEdge::south: return "south"; | |||
| case Block::ConnectionPort::DeviceEdge::east: return "east"; | |||
| case Block::ConnectionPort::DeviceEdge::west: return "west"; | |||
| default: break; | |||
| } | |||
| return {}; | |||
| @@ -40,6 +40,7 @@ | |||
| #pragma clang diagnostic ignored "-Wsign-conversion" | |||
| #pragma clang diagnostic ignored "-Wfloat-conversion" | |||
| #pragma clang diagnostic ignored "-Wcast-align" | |||
| #pragma clang diagnostic ignored "-Wswitch-enum" | |||
| #if __has_warning("-Wzero-as-null-pointer-constant") | |||
| #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #endif | |||
| @@ -48,6 +49,8 @@ | |||
| #pragma GCC diagnostic ignored "-Wsign-conversion" | |||
| #pragma GCC diagnostic ignored "-Wunused-but-set-variable" | |||
| #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #pragma GCC diagnostic ignored "-Wswitch-enum" | |||
| #pragma GCC diagnostic ignored "-Wswitch-default" | |||
| #endif | |||
| #include <cstdarg> | |||
| @@ -23,8 +23,6 @@ | |||
| namespace juce | |||
| { | |||
| int64 juce_fileSetPosition (void* handle, int64 pos); | |||
| //============================================================================== | |||
| FileOutputStream::FileOutputStream (const File& f, const size_t bufferSizeToUse) | |||
| : file (f), | |||
| @@ -126,6 +126,8 @@ struct JSONParser | |||
| break; | |||
| } | |||
| default: break; | |||
| } | |||
| } | |||
| @@ -82,6 +82,12 @@ | |||
| #define NSAlertStyleInformational NSInformationalAlertStyle | |||
| #define NSEventTypeTabletPoint NSTabletPoint | |||
| #define NSEventTypeTabletProximity NSTabletProximity | |||
| #define NSEventTypeFlagsChanged NSFlagsChanged | |||
| #define NSEventTypeAppKitDefined NSAppKitDefined | |||
| #define NSEventTypeSystemDefined NSSystemDefined | |||
| #define NSEventTypeApplicationDefined NSApplicationDefined | |||
| #define NSEventTypePeriodic NSPeriodic | |||
| #define NSEventTypeSmartMagnify NSEventTypeSmartMagnify | |||
| #endif | |||
| #import <CoreAudio/HostTime.h> | |||
| #include <sys/dir.h> | |||
| @@ -136,7 +136,7 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||
| case invokedExecutableFile: | |||
| if (juce_argv != nullptr && juce_argc > 0) | |||
| return File (CharPointer_UTF8 (juce_argv[0])); | |||
| // deliberate fall-through... | |||
| // Falls through | |||
| case currentExecutableFile: | |||
| case currentApplicationFile: | |||
| @@ -144,6 +144,7 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||
| return juce_getExecutableFile(); | |||
| #endif | |||
| // deliberate fall-through if this is not a shared-library | |||
| JUCE_FALLTHROUGH | |||
| case hostApplicationPath: | |||
| { | |||
| @@ -203,6 +203,7 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||
| if (juce_argv != nullptr && juce_argc > 0) | |||
| return File::getCurrentWorkingDirectory().getChildFile (String (juce_argv[0])); | |||
| // deliberate fall-through... | |||
| JUCE_FALLTHROUGH | |||
| case currentExecutableFile: | |||
| return juce_getExecutableFile(); | |||
| @@ -92,6 +92,26 @@ namespace juce | |||
| #define JUCE_ANALYZER_NORETURN | |||
| #endif | |||
| /** Used to silence Wimplicit-fallthrough on Clang and GCC where available | |||
| as there are a few places in the codebase where we need to do this | |||
| deliberately and want to ignore the warning. | |||
| */ | |||
| #if JUCE_CLANG | |||
| #if __has_cpp_attribute(clang::fallthrough) | |||
| #define JUCE_FALLTHROUGH [[clang::fallthrough]]; | |||
| #else | |||
| #define JUCE_FALLTHROUGH | |||
| #endif | |||
| #elif JUCE_GCC | |||
| #if __GNUC__ >= 7 | |||
| #define JUCE_FALLTHROUGH [[gnu::fallthrough]]; | |||
| #else | |||
| #define JUCE_FALLTHROUGH | |||
| #endif | |||
| #else | |||
| #define JUCE_FALLTHROUGH | |||
| #endif | |||
| //============================================================================== | |||
| #if JUCE_MSVC && ! DOXYGEN | |||
| #define JUCE_BLOCK_WITH_FORCED_SEMICOLON(x) \ | |||
| @@ -166,9 +166,12 @@ public: | |||
| #else | |||
| *currentCharacter++ = '-'; | |||
| #endif | |||
| // Fall-through.. | |||
| JUCE_FALLTHROUGH | |||
| case '+': | |||
| c = *++text; | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| switch (c) | |||
| @@ -184,6 +187,9 @@ public: | |||
| if ((text[1] == 'n' || text[1] == 'N') && (text[2] == 'f' || text[2] == 'F')) | |||
| return std::numeric_limits<double>::infinity(); | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| #if JUCE_MINGW | |||
| @@ -274,7 +280,7 @@ public: | |||
| switch (*++text) | |||
| { | |||
| case '-': negativeExponent = true; // fall-through.. | |||
| case '-': negativeExponent = true; JUCE_FALLTHROUGH | |||
| case '+': ++text; | |||
| } | |||
| @@ -359,8 +365,9 @@ public: | |||
| switch (*++text) | |||
| { | |||
| case '-': parsedExponentIsPositive = false; // Fall-through.. | |||
| case '+': ++text; | |||
| case '-': parsedExponentIsPositive = false; JUCE_FALLTHROUGH | |||
| case '+': ++text; break; | |||
| default: break; | |||
| } | |||
| int exponent = 0; | |||
| @@ -237,7 +237,7 @@ namespace XmlOutputFunctions | |||
| outputStream << (char) character; | |||
| break; | |||
| } | |||
| // Note: Deliberate fall-through here! | |||
| JUCE_FALLTHROUGH | |||
| default: | |||
| outputStream << "&#" << ((int) character) << ';'; | |||
| break; | |||
| @@ -92,7 +92,7 @@ private: | |||
| { | |||
| case Z_STREAM_END: | |||
| finished = true; | |||
| // Deliberate fall-through.. | |||
| JUCE_FALLTHROUGH | |||
| case Z_OK: | |||
| { | |||
| data += dataSize - stream.avail_in; | |||
| @@ -36,6 +36,10 @@ namespace zlibNamespace | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wshadow" | |||
| #pragma clang diagnostic ignored "-Wdeprecated-register" | |||
| #pragma clang diagnostic ignored "-Wswitch-enum" | |||
| #if __has_warning ("-Wimplicit-fallthrough") | |||
| #pragma clang diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #if __has_warning("-Wzero-as-null-pointer-constant") | |||
| #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #endif | |||
| @@ -50,6 +54,12 @@ namespace zlibNamespace | |||
| #pragma GCC diagnostic ignored "-Wsign-conversion" | |||
| #pragma GCC diagnostic ignored "-Wshadow" | |||
| #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #pragma GCC diagnostic ignored "-Wswitch-enum" | |||
| #pragma GCC diagnostic ignored "-Wswitch-default" | |||
| #pragma GCC diagnostic ignored "-Wredundant-decls" | |||
| #if __GNUC__ >= 7 | |||
| #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #endif | |||
| #undef OS_CODE | |||
| @@ -151,7 +161,7 @@ public: | |||
| { | |||
| case Z_STREAM_END: | |||
| finished = true; | |||
| // deliberate fall-through | |||
| JUCE_FALLTHROUGH | |||
| case Z_OK: | |||
| data += dataSize - stream.avail_in; | |||
| dataSize = (z_uInt) stream.avail_in; | |||
| @@ -166,7 +176,7 @@ public: | |||
| case Z_DATA_ERROR: | |||
| case Z_MEM_ERROR: | |||
| error = true; | |||
| JUCE_FALLTHROUGH | |||
| default: | |||
| break; | |||
| } | |||
| @@ -229,6 +229,9 @@ bool ValueTreeSynchroniser::applyChange (ValueTree& root, const void* data, size | |||
| break; | |||
| } | |||
| case ValueTreeSynchroniserHelpers::fullSync: | |||
| break; | |||
| default: | |||
| jassertfalse; // Seem to have received some corrupt data? | |||
| break; | |||
| @@ -643,6 +643,7 @@ struct Convolution::Pimpl : private Thread | |||
| } | |||
| break; | |||
| case ChangeRequest::numChangeRequestTypes: | |||
| case ChangeRequest::changeIgnore: | |||
| break; | |||
| @@ -145,6 +145,7 @@ void WindowingFunction<FloatType>::fillWindowingTables (FloatType* samples, size | |||
| } | |||
| break; | |||
| case numWindowingMethods: | |||
| default: | |||
| jassertfalse; | |||
| break; | |||
| @@ -175,15 +176,16 @@ const char* WindowingFunction<FloatType>::getWindowingMethodName (WindowingMetho | |||
| { | |||
| switch (type) | |||
| { | |||
| case rectangular: return "Rectangular"; | |||
| case triangular: return "Triangular"; | |||
| case hann: return "Hann"; | |||
| case hamming: return "Hamming"; | |||
| case blackman: return "Blackman"; | |||
| case blackmanHarris: return "Blackman-Harris"; | |||
| case flatTop: return "Flat Top"; | |||
| case kaiser: return "Kaiser"; | |||
| default: jassertfalse; return ""; | |||
| case rectangular: return "Rectangular"; | |||
| case triangular: return "Triangular"; | |||
| case hann: return "Hann"; | |||
| case hamming: return "Hamming"; | |||
| case blackman: return "Blackman"; | |||
| case blackmanHarris: return "Blackman-Harris"; | |||
| case flatTop: return "Flat Top"; | |||
| case kaiser: return "Kaiser"; | |||
| case numWindowingMethods: | |||
| default: jassertfalse; return ""; | |||
| } | |||
| } | |||
| @@ -453,7 +453,6 @@ void MessageManagerLock::exitSignalSent() | |||
| } | |||
| //============================================================================== | |||
| JUCE_API void JUCE_CALLTYPE initialiseJuce_GUI(); | |||
| JUCE_API void JUCE_CALLTYPE initialiseJuce_GUI() | |||
| { | |||
| JUCE_AUTORELEASEPOOL | |||
| @@ -462,7 +461,6 @@ JUCE_API void JUCE_CALLTYPE initialiseJuce_GUI() | |||
| } | |||
| } | |||
| JUCE_API void JUCE_CALLTYPE shutdownJuce_GUI(); | |||
| JUCE_API void JUCE_CALLTYPE shutdownJuce_GUI() | |||
| { | |||
| JUCE_AUTORELEASEPOOL | |||
| @@ -751,10 +751,11 @@ public: | |||
| switch (inside) | |||
| { | |||
| case 1 + 2 + 8: w = r - otherR; pos.x = otherR; return true; | |||
| case 1 + 2 + 4: h = b - otherB; pos.y = otherB; return true; | |||
| case 2 + 4 + 8: w = other.pos.x - pos.x; return true; | |||
| case 1 + 4 + 8: h = other.pos.y - pos.y; return true; | |||
| case 1 + 2 + 8: w = r - otherR; pos.x = otherR; return true; | |||
| case 1 + 2 + 4: h = b - otherB; pos.y = otherB; return true; | |||
| case 2 + 4 + 8: w = other.pos.x - pos.x; return true; | |||
| case 1 + 4 + 8: h = other.pos.y - pos.y; return true; | |||
| default: break; | |||
| } | |||
| return false; | |||
| @@ -44,6 +44,10 @@ namespace jpeglibNamespace | |||
| #pragma clang diagnostic ignored "-Wconversion" | |||
| #pragma clang diagnostic ignored "-Wdeprecated-register" | |||
| #pragma clang diagnostic ignored "-Wcast-align" | |||
| #pragma clang diagnostic ignored "-Wswitch-enum" | |||
| #if __has_warning ("-Wimplicit-fallthrough") | |||
| #pragma clang diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #if __has_warning("-Wzero-as-null-pointer-constant") | |||
| #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #endif | |||
| @@ -57,8 +61,13 @@ namespace jpeglibNamespace | |||
| #pragma GCC diagnostic ignored "-Wconversion" | |||
| #pragma GCC diagnostic ignored "-Wsign-conversion" | |||
| #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #pragma GCC diagnostic ignored "-Wswitch-enum" | |||
| #pragma GCC diagnostic ignored "-Wswitch-default" | |||
| #if __GNUC__ > 5 | |||
| #pragma GCC diagnostic ignored "-Wshift-negative-value" | |||
| #if __GNUC__ >= 7 | |||
| #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #endif | |||
| #endif | |||
| @@ -66,6 +66,9 @@ namespace pnglibNamespace | |||
| #if JUCE_CLANG | |||
| #pragma clang diagnostic push | |||
| #pragma clang diagnostic ignored "-Wsign-conversion" | |||
| #if __has_warning ("-Wimplicit-fallthrough") | |||
| #pragma clang diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #if __has_warning("-Wzero-as-null-pointer-constant") | |||
| #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #endif | |||
| @@ -78,6 +81,9 @@ namespace pnglibNamespace | |||
| #pragma GCC diagnostic push | |||
| #pragma GCC diagnostic ignored "-Wsign-conversion" | |||
| #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | |||
| #if __GNUC__ >= 7 | |||
| #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" | |||
| #endif | |||
| #endif | |||
| #undef check | |||
| @@ -426,6 +426,7 @@ Colour Image::BitmapData::getPixelColour (int x, int y) const noexcept | |||
| case Image::ARGB: return Colour ( ((const PixelARGB*) pixel)->getUnpremultiplied()); | |||
| case Image::RGB: return Colour (*((const PixelRGB*) pixel)); | |||
| case Image::SingleChannel: return Colour (*((const PixelAlpha*) pixel)); | |||
| case Image::UnknownFormat: | |||
| default: jassertfalse; break; | |||
| } | |||
| @@ -444,6 +445,7 @@ void Image::BitmapData::setPixelColour (int x, int y, Colour colour) const noexc | |||
| case Image::ARGB: ((PixelARGB*) pixel)->set (col); break; | |||
| case Image::RGB: ((PixelRGB*) pixel)->set (col); break; | |||
| case Image::SingleChannel: ((PixelAlpha*) pixel)->set (col); break; | |||
| case Image::UnknownFormat: | |||
| default: jassertfalse; break; | |||
| } | |||
| } | |||
| @@ -521,6 +523,7 @@ static void performPixelOp (const Image::BitmapData& data, const PixelOperation& | |||
| case Image::ARGB: PixelIterator<PixelARGB> ::iterate (data, pixelOp); break; | |||
| case Image::RGB: PixelIterator<PixelRGB> ::iterate (data, pixelOp); break; | |||
| case Image::SingleChannel: PixelIterator<PixelAlpha>::iterate (data, pixelOp); break; | |||
| case Image::UnknownFormat: | |||
| default: jassertfalse; break; | |||
| } | |||
| } | |||
| @@ -1426,6 +1426,8 @@ namespace EdgeTableFillers | |||
| if (tiledFill) { TransformedImageFill<PixelARGB, PixelRGB, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| else { TransformedImageFill<PixelARGB, PixelRGB, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| if (tiledFill) { TransformedImageFill<PixelARGB, PixelAlpha, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| else { TransformedImageFill<PixelARGB, PixelAlpha, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| @@ -1434,6 +1436,7 @@ namespace EdgeTableFillers | |||
| break; | |||
| case Image::RGB: | |||
| { | |||
| switch (srcData.pixelFormat) | |||
| { | |||
| case Image::ARGB: | |||
| @@ -1444,13 +1447,18 @@ namespace EdgeTableFillers | |||
| if (tiledFill) { TransformedImageFill<PixelRGB, PixelRGB, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| else { TransformedImageFill<PixelRGB, PixelRGB, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| if (tiledFill) { TransformedImageFill<PixelRGB, PixelAlpha, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| else { TransformedImageFill<PixelRGB, PixelAlpha, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| switch (srcData.pixelFormat) | |||
| { | |||
| @@ -1462,6 +1470,8 @@ namespace EdgeTableFillers | |||
| if (tiledFill) { TransformedImageFill<PixelAlpha, PixelRGB, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| else { TransformedImageFill<PixelAlpha, PixelRGB, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| if (tiledFill) { TransformedImageFill<PixelAlpha, PixelAlpha, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| else { TransformedImageFill<PixelAlpha, PixelAlpha, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | |||
| @@ -1487,6 +1497,8 @@ namespace EdgeTableFillers | |||
| if (tiledFill) { ImageFill<PixelARGB, PixelRGB, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| else { ImageFill<PixelARGB, PixelRGB, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| if (tiledFill) { ImageFill<PixelARGB, PixelAlpha, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| else { ImageFill<PixelARGB, PixelAlpha, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| @@ -1505,6 +1517,8 @@ namespace EdgeTableFillers | |||
| if (tiledFill) { ImageFill<PixelRGB, PixelRGB, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| else { ImageFill<PixelRGB, PixelRGB, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| if (tiledFill) { ImageFill<PixelRGB, PixelAlpha, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| else { ImageFill<PixelRGB, PixelAlpha, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| @@ -1512,6 +1526,8 @@ namespace EdgeTableFillers | |||
| } | |||
| break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| switch (srcData.pixelFormat) | |||
| { | |||
| @@ -1523,6 +1539,8 @@ namespace EdgeTableFillers | |||
| if (tiledFill) { ImageFill<PixelAlpha, PixelRGB, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| else { ImageFill<PixelAlpha, PixelRGB, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: | |||
| if (tiledFill) { ImageFill<PixelAlpha, PixelAlpha, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| else { ImageFill<PixelAlpha, PixelAlpha, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | |||
| @@ -2589,6 +2607,8 @@ public: | |||
| { | |||
| case Image::ARGB: EdgeTableFillers::renderSolidFill (iter, destData, colour, replaceContents, (PixelARGB*) nullptr); break; | |||
| case Image::RGB: EdgeTableFillers::renderSolidFill (iter, destData, colour, replaceContents, (PixelRGB*) nullptr); break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: EdgeTableFillers::renderSolidFill (iter, destData, colour, replaceContents, (PixelAlpha*) nullptr); break; | |||
| } | |||
| } | |||
| @@ -2606,6 +2626,8 @@ public: | |||
| { | |||
| case Image::ARGB: EdgeTableFillers::renderGradient (iter, destData, gradient, trans, lookupTable, numLookupEntries, isIdentity, (PixelARGB*) nullptr); break; | |||
| case Image::RGB: EdgeTableFillers::renderGradient (iter, destData, gradient, trans, lookupTable, numLookupEntries, isIdentity, (PixelRGB*) nullptr); break; | |||
| case Image::SingleChannel: | |||
| case Image::UnknownFormat: | |||
| default: EdgeTableFillers::renderGradient (iter, destData, gradient, trans, lookupTable, numLookupEntries, isIdentity, (PixelAlpha*) nullptr); break; | |||
| } | |||
| } | |||
| @@ -189,6 +189,7 @@ namespace CoreTextTypeLayout | |||
| { | |||
| case AttributedString::none: return kCTLineBreakByClipping; | |||
| case AttributedString::byChar: return kCTLineBreakByCharWrapping; | |||
| case AttributedString::byWord: | |||
| default: return kCTLineBreakByWordWrapping; | |||
| } | |||
| } | |||
| @@ -199,6 +200,7 @@ namespace CoreTextTypeLayout | |||
| { | |||
| case AttributedString::rightToLeft: return kCTWritingDirectionRightToLeft; | |||
| case AttributedString::leftToRight: return kCTWritingDirectionLeftToRight; | |||
| case AttributedString::natural: | |||
| default: return kCTWritingDirectionNatural; | |||
| } | |||
| } | |||
| @@ -27,8 +27,6 @@ | |||
| namespace juce | |||
| { | |||
| Image juce_createIconForFile (const File&); | |||
| //============================================================================== | |||
| class FileListTreeItem : public TreeViewItem, | |||
| private TimeSliceClient, | |||
| @@ -2143,6 +2143,7 @@ void LookAndFeel_V2::createTabButtonShape (TabBarButton& button, Path& p, bool / | |||
| p.lineTo (-overhang, -overhang); | |||
| break; | |||
| case TabbedButtonBar::TabsAtTop: | |||
| default: | |||
| p.startNewSubPath (0.0f, h); | |||
| p.lineTo (indent, 0.0f); | |||
| @@ -4093,6 +4093,7 @@ void* MouseCursor::createStandardMouseCursor (MouseCursor::StandardCursorType ty | |||
| return CustomMouseCursorInfo (ImageFileFormat::loadFrom (copyCursorData, copyCursorSize), { 1, 3 }).create(); | |||
| } | |||
| case NumStandardCursorTypes: | |||
| default: | |||
| jassertfalse; | |||
| return None; | |||
| @@ -144,6 +144,7 @@ void* MouseCursor::createStandardMouseCursor (MouseCursor::StandardCursorType ty | |||
| case UpDownLeftRightResizeCursor: | |||
| return MouseCursorHelpers::fromHIServices ("move"); | |||
| case NumStandardCursorTypes: | |||
| default: | |||
| jassertfalse; | |||
| break; | |||
| @@ -1524,6 +1524,26 @@ private: | |||
| case NSEventTypeTabletProximity: | |||
| break; | |||
| case NSEventTypeFlagsChanged: | |||
| case NSEventTypeAppKitDefined: | |||
| case NSEventTypeSystemDefined: | |||
| case NSEventTypeApplicationDefined: | |||
| case NSEventTypePeriodic: | |||
| case NSEventTypeGesture: | |||
| case NSEventTypeMagnify: | |||
| case NSEventTypeSwipe: | |||
| case NSEventTypeRotate: | |||
| case NSEventTypeBeginGesture: | |||
| case NSEventTypeEndGesture: | |||
| case NSEventTypeSmartMagnify: | |||
| case NSEventTypeQuickLook: | |||
| case NSEventTypePressure: | |||
| #if defined (MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12 | |||
| case NSEventTypeDirectTouch: | |||
| #if defined (MAC_OS_X_VERSION_10_15) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_15 | |||
| case NSEventTypeChangeMode: | |||
| #endif | |||
| #endif | |||
| default: | |||
| return false; | |||
| } | |||
| @@ -3731,6 +3731,7 @@ private: | |||
| case WM_DISPLAYCHANGE: | |||
| InvalidateRect (h, 0, 0); | |||
| // intentional fall-through... | |||
| JUCE_FALLTHROUGH | |||
| case WM_SETTINGCHANGE: // note the fall-through in the previous case! | |||
| doSettingChange(); | |||
| break; | |||
| @@ -33,12 +33,10 @@ struct MarkerListScope : public Expression::Scope | |||
| Expression getSymbolValue (const String& symbol) const override | |||
| { | |||
| switch (RelativeCoordinate::StandardStrings::getTypeOf (symbol)) | |||
| { | |||
| case RelativeCoordinate::StandardStrings::width: return Expression ((double) component.getWidth()); | |||
| case RelativeCoordinate::StandardStrings::height: return Expression ((double) component.getHeight()); | |||
| default: break; | |||
| } | |||
| auto type = RelativeCoordinate::StandardStrings::getTypeOf (symbol); | |||
| if (type == RelativeCoordinate::StandardStrings::width) return Expression ((double) component.getWidth()); | |||
| if (type == RelativeCoordinate::StandardStrings::height) return Expression ((double) component.getHeight()); | |||
| MarkerList* list; | |||
| @@ -116,6 +114,8 @@ Expression RelativeCoordinatePositionerBase::ComponentScope::getSymbolValue (con | |||
| case RelativeCoordinate::StandardStrings::height: return Expression ((double) component.getHeight()); | |||
| case RelativeCoordinate::StandardStrings::right: return Expression ((double) component.getRight()); | |||
| case RelativeCoordinate::StandardStrings::bottom: return Expression ((double) component.getBottom()); | |||
| case RelativeCoordinate::StandardStrings::parent: | |||
| case RelativeCoordinate::StandardStrings::unknown: | |||
| default: break; | |||
| } | |||
| @@ -180,6 +180,8 @@ public: | |||
| positioner.registerComponentListener (component); | |||
| break; | |||
| case RelativeCoordinate::StandardStrings::parent: | |||
| case RelativeCoordinate::StandardStrings::unknown: | |||
| default: | |||
| if (auto* parent = component.getParentComponent()) | |||
| { | |||
| @@ -52,6 +52,11 @@ namespace RelativeRectangleHelpers | |||
| case RelativeCoordinate::StandardStrings::right: | |||
| case RelativeCoordinate::StandardStrings::top: | |||
| case RelativeCoordinate::StandardStrings::bottom: return false; | |||
| case RelativeCoordinate::StandardStrings::width: | |||
| case RelativeCoordinate::StandardStrings::height: | |||
| case RelativeCoordinate::StandardStrings::parent: | |||
| case RelativeCoordinate::StandardStrings::unknown: | |||
| default: break; | |||
| } | |||
| @@ -127,6 +132,10 @@ public: | |||
| case RelativeCoordinate::StandardStrings::top: return rect.top.getExpression(); | |||
| case RelativeCoordinate::StandardStrings::right: return rect.right.getExpression(); | |||
| case RelativeCoordinate::StandardStrings::bottom: return rect.bottom.getExpression(); | |||
| case RelativeCoordinate::StandardStrings::width: | |||
| case RelativeCoordinate::StandardStrings::height: | |||
| case RelativeCoordinate::StandardStrings::parent: | |||
| case RelativeCoordinate::StandardStrings::unknown: | |||
| default: break; | |||
| } | |||
| @@ -728,9 +728,10 @@ private: | |||
| int selectedStyle = 0; | |||
| switch (bar.getStyle()) | |||
| { | |||
| case Toolbar::iconsOnly: selectedStyle = 1; break; | |||
| case Toolbar::iconsWithText: selectedStyle = 2; break; | |||
| case Toolbar::textOnly: selectedStyle = 3; break; | |||
| case Toolbar::iconsOnly: selectedStyle = 1; break; | |||
| case Toolbar::iconsWithText: selectedStyle = 2; break; | |||
| case Toolbar::textOnly: selectedStyle = 3; break; | |||
| default: break; | |||
| } | |||
| styleBox.setSelectedId (selectedStyle); | |||
| @@ -757,6 +758,7 @@ private: | |||
| case 1: toolbar.setStyle (Toolbar::iconsOnly); break; | |||
| case 2: toolbar.setStyle (Toolbar::iconsWithText); break; | |||
| case 3: toolbar.setStyle (Toolbar::textOnly); break; | |||
| default: break; | |||
| } | |||
| palette.resized(); // to make it update the styles | |||
| @@ -616,8 +616,8 @@ struct CppTokeniserFunctions | |||
| charsOnLine += 2; | |||
| break; | |||
| } | |||
| // deliberate fall-through... | |||
| JUCE_FALLTHROUGH | |||
| default: | |||
| if (c >= 32 && c < 127 && ! (lastWasHexEscapeCode // (have to avoid following a hex escape sequence with a valid hex digit) | |||
| @@ -480,6 +480,9 @@ private: | |||
| if (wantsFocus) | |||
| owner.moveKeyboardFocusToSibling (false); | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| } | |||
| @@ -500,6 +503,9 @@ private: | |||
| MessageManager::callAsync ([this] {componentMovedOrResized (owner, true, true);}); | |||
| return true; | |||
| default: | |||
| break; | |||
| } | |||
| } | |||
| else if (e.xany.window == host && host != 0) | |||
| @@ -536,6 +542,9 @@ private: | |||
| return true; | |||
| } | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| } | |||
| @@ -137,6 +137,7 @@ void OpenGLTexture::loadImage (const Image& image) | |||
| case Image::ARGB: Flipper<PixelARGB> ::flip (dataCopy, srcData.data, srcData.lineStride, imageW, imageH); break; | |||
| case Image::RGB: Flipper<PixelRGB> ::flip (dataCopy, srcData.data, srcData.lineStride, imageW, imageH); break; | |||
| case Image::SingleChannel: Flipper<PixelAlpha>::flip (dataCopy, srcData.data, srcData.lineStride, imageW, imageH); break; | |||
| case Image::UnknownFormat: | |||
| default: break; | |||
| } | |||
| @@ -175,6 +175,7 @@ namespace | |||
| break; | |||
| } | |||
| // else = special case: fall through to default and treat '!' as a non-special character. | |||
| JUCE_FALLTHROUGH | |||
| default: | |||
| set.add (c); | |||
| @@ -1325,6 +1325,7 @@ private: | |||
| return (cameraSensorOrientation + 180) % 360; | |||
| } | |||
| break; | |||
| case Desktop::allOrientations: | |||
| default: | |||
| return 0; | |||
| } | |||
| @@ -394,8 +394,11 @@ private: | |||
| notifyOwnerPreparationFinished (url, Result::fail (errorMessage), nullptr); | |||
| return; | |||
| } | |||
| case AVKeyValueStatusUnknown: | |||
| case AVKeyValueStatusLoading: | |||
| default: | |||
| {} | |||
| break; | |||
| } | |||
| } | |||