@@ -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; | |||
} | |||
} | |||