@@ -166,6 +166,9 @@ public: | |||||
m_body->ApplyTorque(-50.0f); | m_body->ApplyTorque(-50.0f); | ||||
} | } | ||||
break; | break; | ||||
default: | |||||
break; | |||||
} | } | ||||
} | } | ||||
@@ -175,7 +175,11 @@ public: | |||||
return { static_cast<float> (port.index), static_cast<float> (block->getHeight()) }; | return { static_cast<float> (port.index), static_cast<float> (block->getHeight()) }; | ||||
case e::west: | case e::west: | ||||
return { 0.0f, static_cast<float> (port.index) }; | return { 0.0f, static_cast<float> (port.index) }; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
case 90: | case 90: | ||||
{ | { | ||||
@@ -189,7 +193,11 @@ public: | |||||
return { static_cast<float> (0.0f - block->getHeight()), static_cast<float> (port.index) }; | return { static_cast<float> (0.0f - block->getHeight()), static_cast<float> (port.index) }; | ||||
case e::west: | case e::west: | ||||
return { static_cast<float> (-1.0f - port.index), 0.0f }; | return { static_cast<float> (-1.0f - port.index), 0.0f }; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
case 180: | case 180: | ||||
{ | { | ||||
@@ -203,7 +211,11 @@ public: | |||||
return { static_cast<float> (-1.0f - port.index), static_cast<float> (0.0f - block->getHeight()) }; | return { static_cast<float> (-1.0f - port.index), static_cast<float> (0.0f - block->getHeight()) }; | ||||
case e::west: | case e::west: | ||||
return { 0.0f, static_cast<float> (-1.0f - port.index) }; | return { 0.0f, static_cast<float> (-1.0f - port.index) }; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
case 270: | case 270: | ||||
{ | { | ||||
@@ -217,8 +229,15 @@ public: | |||||
return { static_cast<float> (block->getHeight()), static_cast<float> (-1.0f - port.index) }; | return { static_cast<float> (block->getHeight()), static_cast<float> (-1.0f - port.index) }; | ||||
case e::west: | case e::west: | ||||
return { static_cast<float> (port.index), 0.0f }; | return { static_cast<float> (port.index), 0.0f }; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
default: | |||||
break; | |||||
} | } | ||||
return {}; | return {}; | ||||
@@ -921,7 +940,11 @@ private: | |||||
return 90; | return 90; | ||||
case edge::west: | case edge::west: | ||||
return 270; | return 270; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
case edge::south: | case edge::south: | ||||
{ | { | ||||
@@ -935,7 +958,11 @@ private: | |||||
return 270; | return 270; | ||||
case edge::west: | case edge::west: | ||||
return 90; | return 90; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
case edge::east: | case edge::east: | ||||
{ | { | ||||
@@ -949,7 +976,11 @@ private: | |||||
return 180; | return 180; | ||||
case edge::west: | case edge::west: | ||||
return 0; | return 0; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
case edge::west: | case edge::west: | ||||
@@ -964,8 +995,15 @@ private: | |||||
return 0; | return 0; | ||||
case edge::west: | case edge::west: | ||||
return 180; | return 180; | ||||
default: | |||||
break; | |||||
} | } | ||||
break; | |||||
} | } | ||||
default: | |||||
break; | |||||
} | } | ||||
return 0; | return 0; | ||||
@@ -219,13 +219,9 @@ private: | |||||
{ | { | ||||
AlertWindow::AlertIconType icon = AlertWindow::NoIcon; | 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", | 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.", | "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 3: flexItem.alignSelf = FlexItem::AlignSelf::flexEnd; break; | ||||
case 4: flexItem.alignSelf = FlexItem::AlignSelf::center; break; | case 4: flexItem.alignSelf = FlexItem::AlignSelf::center; break; | ||||
case 5: flexItem.alignSelf = FlexItem::AlignSelf::stretch; break; | case 5: flexItem.alignSelf = FlexItem::AlignSelf::stretch; break; | ||||
default: break; | |||||
} | } | ||||
refreshLayout(); | refreshLayout(); | ||||
@@ -89,6 +89,7 @@ static const char* getDisplayOrientation() | |||||
case Desktop::upsideDown: return "Upside-down"; | case Desktop::upsideDown: return "Upside-down"; | ||||
case Desktop::rotatedClockwise: return "Rotated Clockwise"; | case Desktop::rotatedClockwise: return "Rotated Clockwise"; | ||||
case Desktop::rotatedAntiClockwise: return "Rotated Anti-clockwise"; | case Desktop::rotatedAntiClockwise: return "Rotated Anti-clockwise"; | ||||
case Desktop::allOrientations: return "All"; | |||||
default: jassertfalse; break; | default: jassertfalse; break; | ||||
} | } | ||||
@@ -227,6 +227,7 @@ private: | |||||
case Type::programs: return "Programs"; | case Type::programs: return "Programs"; | ||||
case Type::audioIO: return "IO"; | case Type::audioIO: return "IO"; | ||||
case Type::debug: return "Debug"; | case Type::debug: return "Debug"; | ||||
case Type::numTypes: | |||||
default: return {}; | default: return {}; | ||||
} | } | ||||
} | } | ||||
@@ -59,6 +59,8 @@ static const char* getLicenseStateValue (LicenseState::Type type) | |||||
case LicenseState::Type::edu: return "edu"; | case LicenseState::Type::edu: return "edu"; | ||||
case LicenseState::Type::indie: return "indie"; | case LicenseState::Type::indie: return "indie"; | ||||
case LicenseState::Type::pro: return "pro"; | case LicenseState::Type::pro: return "pro"; | ||||
case LicenseState::Type::notLoggedIn: | |||||
case LicenseState::Type::noLicenseChosenYet: | |||||
default: return nullptr; | default: return nullptr; | ||||
} | } | ||||
} | } | ||||
@@ -77,9 +79,10 @@ static const char* getApplicationUsageDataStateValue (LicenseState::ApplicationU | |||||
{ | { | ||||
switch (type) | 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 error: res << "error: "; break; | ||||
case warning: res << "warning: "; break; | case warning: res << "warning: "; break; | ||||
case note: res << "note: "; break; | case note: res << "note: "; break; | ||||
default: break; | |||||
}; | }; | ||||
res << mainFile << ": "; | res << mainFile << ": "; | ||||
@@ -855,6 +855,10 @@ bool Project::shouldBuildTargetType (ProjectType::Target::Type targetType) const | |||||
return projectType.isAudioPlugin(); | return projectType.isAudioPlugin(); | ||||
case ProjectType::Target::unspecified: | case ProjectType::Target::unspecified: | ||||
return false; | return false; | ||||
case ProjectType::Target::GUIApp: | |||||
case ProjectType::Target::ConsoleApp: | |||||
case ProjectType::Target::StaticLibrary: | |||||
case ProjectType::Target::DynamicLibrary: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -894,6 +898,7 @@ const char* ProjectType::Target::getName() const noexcept | |||||
case UnityPlugIn: return "Unity Plugin"; | case UnityPlugIn: return "Unity Plugin"; | ||||
case SharedCodeTarget: return "Shared Code"; | case SharedCodeTarget: return "Shared Code"; | ||||
case AggregateTarget: return "All"; | case AggregateTarget: return "All"; | ||||
case unspecified: | |||||
default: return "undefined"; | default: return "undefined"; | ||||
} | } | ||||
} | } | ||||
@@ -915,6 +920,8 @@ ProjectType::Target::TargetFileType ProjectType::Target::getTargetFileType() con | |||||
case RTASPlugIn: return pluginBundle; | case RTASPlugIn: return pluginBundle; | ||||
case UnityPlugIn: return pluginBundle; | case UnityPlugIn: return pluginBundle; | ||||
case SharedCodeTarget: return staticLibrary; | case SharedCodeTarget: return staticLibrary; | ||||
case AggregateTarget: | |||||
case unspecified: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -191,6 +191,11 @@ struct ProjectType_AudioPlugin : public ProjectType | |||||
case Target::SharedCodeTarget: | case Target::SharedCodeTarget: | ||||
case Target::AggregateTarget: | case Target::AggregateTarget: | ||||
return true; | return true; | ||||
case Target::GUIApp: | |||||
case Target::ConsoleApp: | |||||
case Target::StaticLibrary: | |||||
case Target::DynamicLibrary: | |||||
case Target::unspecified: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -51,18 +51,8 @@ public: | |||||
bool supportsTargetType (ProjectType::Target::Type type) const override | 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"); | properties.add ("MODULE"); | ||||
break; | break; | ||||
case ProjectType::Target::TargetFileType::macOSAppex: | |||||
case ProjectType::Target::TargetFileType::unknown: | |||||
default: | default: | ||||
continue; | continue; | ||||
} | } | ||||
@@ -122,6 +122,13 @@ public: | |||||
case ProjectType::Target::VSTPlugIn: | case ProjectType::Target::VSTPlugIn: | ||||
case ProjectType::Target::DynamicLibrary: | case ProjectType::Target::DynamicLibrary: | ||||
return true; | 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: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -274,6 +281,8 @@ private: | |||||
case staticLibrary: return ".lib"; | case staticLibrary: return ".lib"; | ||||
case sharedLibraryOrDLL: | case sharedLibraryOrDLL: | ||||
case pluginBundle: return ".dll"; | case pluginBundle: return ".dll"; | ||||
case macOSAppex: | |||||
case unknown: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -284,17 +293,10 @@ private: | |||||
{ | { | ||||
case executable: return {}; | case executable: return {}; | ||||
case staticLibrary: return ".a"; | case staticLibrary: return ".a"; | ||||
case sharedLibraryOrDLL: return ".so"; | |||||
case pluginBundle: | case pluginBundle: | ||||
switch (type) | |||||
{ | |||||
case VSTPlugIn: return ".so"; | |||||
default: break; | |||||
} | |||||
return ".so"; | |||||
case sharedLibraryOrDLL: return ".so"; | |||||
case macOSAppex: | |||||
case unknown: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -523,22 +525,10 @@ private: | |||||
static int getTypeIndex (const ProjectType::Target::Type& type) | 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; | return 0; | ||||
} | } | ||||
@@ -726,15 +726,10 @@ public: | |||||
String getProjectType() const | 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"; | return "DynamicLibrary"; | ||||
} | } | ||||
@@ -977,25 +972,17 @@ public: | |||||
{ | { | ||||
auto fileType = getTargetFileType(); | 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 {}; | return {}; | ||||
@@ -1150,22 +1137,15 @@ public: | |||||
void addExtraPreprocessorDefines (StringPairArray& defines) const | 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::UnityPlugIn: | ||||
case ProjectType::Target::DynamicLibrary: | case ProjectType::Target::DynamicLibrary: | ||||
return true; | return true; | ||||
case ProjectType::Target::AudioUnitPlugIn: | |||||
case ProjectType::Target::AudioUnitv3PlugIn: | |||||
case ProjectType::Target::unspecified: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -175,15 +175,11 @@ public: | |||||
String getTargetFileSuffix() const | 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 {}; | return {}; | ||||
} | } | ||||
@@ -357,6 +353,12 @@ public: | |||||
case ProjectType::Target::DynamicLibrary: | case ProjectType::Target::DynamicLibrary: | ||||
case ProjectType::Target::UnityPlugIn: | case ProjectType::Target::UnityPlugIn: | ||||
return true; | 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: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -247,6 +247,7 @@ public: | |||||
case ProjectType::Target::AudioUnitPlugIn: | case ProjectType::Target::AudioUnitPlugIn: | ||||
case ProjectType::Target::UnityPlugIn: | case ProjectType::Target::UnityPlugIn: | ||||
return ! iOS; | return ! iOS; | ||||
case ProjectType::Target::unspecified: | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -978,6 +979,7 @@ public: | |||||
xcodeCopyToProductInstallPathAfterBuild = false; | xcodeCopyToProductInstallPathAfterBuild = false; | ||||
break; | break; | ||||
case ProjectType::Target::unspecified: | |||||
default: | default: | ||||
// unknown target type! | // unknown target type! | ||||
jassertfalse; | jassertfalse; | ||||
@@ -1493,6 +1495,12 @@ public: | |||||
case AAXPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getAAXBinaryLocationString() : String(); | case AAXPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getAAXBinaryLocationString() : String(); | ||||
case UnityPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getUnityPluginBinaryLocationString() : String(); | case UnityPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getUnityPluginBinaryLocationString() : String(); | ||||
case SharedCodeTarget: return owner.isiOS() ? "@executable_path/Frameworks" : "@executable_path/../Frameworks"; | 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 {}; | 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 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 8: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::linuxTarget)), CodeBlocksProjectExporter::linuxTarget); break; | ||||
case 9: exp = new CLionProjectExporter (project, ValueTree (CLionProjectExporter ::getValueTreeTypeName())); break; | case 9: exp = new CLionProjectExporter (project, ValueTree (CLionProjectExporter ::getValueTreeTypeName())); break; | ||||
default: break; | |||||
} | } | ||||
exp->createDefaultConfigs(); | exp->createDefaultConfigs(); | ||||
@@ -200,10 +200,14 @@ private: | |||||
case '{': | case '{': | ||||
++braceDepth; | ++braceDepth; | ||||
break; | break; | ||||
case '}': | case '}': | ||||
if (--braceDepth == 0) | if (--braceDepth == 0) | ||||
return content.substr ((size_t) std::distance (content.begin(), start), | return content.substr ((size_t) std::distance (content.begin(), start), | ||||
(size_t) std::distance (start, ptr)); | (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 ambisonicACN13: return NEEDS_TRANS("Ambisonic 13"); | ||||
case ambisonicACN14: return NEEDS_TRANS("Ambisonic 14"); | case ambisonicACN14: return NEEDS_TRANS("Ambisonic 14"); | ||||
case ambisonicACN15: return NEEDS_TRANS("Ambisonic 15"); | 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 bottomFrontLeft: return NEEDS_TRANS("Bottom Front Left"); | ||||
case bottomFrontCentre: return NEEDS_TRANS("Bottom Front Centre"); | case bottomFrontCentre: return NEEDS_TRANS("Bottom Front Centre"); | ||||
case bottomFrontRight: return NEEDS_TRANS("Bottom Front Right"); | 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 bottomSideLeft: return NEEDS_TRANS("Bottom Side Left"); | ||||
case bottomSideRight: return NEEDS_TRANS("Bottom Side Right"); | case bottomSideRight: return NEEDS_TRANS("Bottom Side Right"); | ||||
case bottomRearLeft: return NEEDS_TRANS("Bottom Rear Left"); | case bottomRearLeft: return NEEDS_TRANS("Bottom Rear Left"); | ||||
case bottomRearCentre: return NEEDS_TRANS("Bottom Rear Centre"); | case bottomRearCentre: return NEEDS_TRANS("Bottom Rear Centre"); | ||||
case bottomRearRight: return NEEDS_TRANS("Bottom Rear Right"); | case bottomRearRight: return NEEDS_TRANS("Bottom Rear Right"); | ||||
case discreteChannel0: return NEEDS_TRANS("Discrete channel"); | |||||
case discreteChannel0: | |||||
case unknown: | |||||
default: break; | default: break; | ||||
} | } | ||||
@@ -148,16 +171,40 @@ String AudioChannelSet::getAbbreviatedChannelTypeName (AudioChannelSet::ChannelT | |||||
case ambisonicACN13: return "ACN13"; | case ambisonicACN13: return "ACN13"; | ||||
case ambisonicACN14: return "ACN14"; | case ambisonicACN14: return "ACN14"; | ||||
case ambisonicACN15: return "ACN15"; | 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 topSideLeft: return "Tsl"; | ||||
case topSideRight: return "Tsr"; | case topSideRight: return "Tsr"; | ||||
case bottomFrontLeft: return "Bfl"; | case bottomFrontLeft: return "Bfl"; | ||||
case bottomFrontCentre: return "Bfc"; | case bottomFrontCentre: return "Bfc"; | ||||
case bottomFrontRight: return "Bfr"; | case bottomFrontRight: return "Bfr"; | ||||
case proxymityLeft: return "Pl"; | |||||
case proximityRight: return "Pr"; | |||||
case bottomSideLeft: return "Bsl"; | case bottomSideLeft: return "Bsl"; | ||||
case bottomSideRight: return "Bsr"; | case bottomSideRight: return "Bsr"; | ||||
case bottomRearLeft: return "Brl"; | case bottomRearLeft: return "Brl"; | ||||
case bottomRearCentre: return "Brc"; | case bottomRearCentre: return "Brc"; | ||||
case bottomRearRight: return "Brr"; | case bottomRearRight: return "Brr"; | ||||
case discreteChannel0: | |||||
case unknown: | |||||
default: break; | default: break; | ||||
} | } | ||||
@@ -216,6 +263,26 @@ AudioChannelSet::ChannelType AudioChannelSet::getChannelTypeFromAbbreviation (co | |||||
if (abbr == "ACN13") return ambisonicACN13; | if (abbr == "ACN13") return ambisonicACN13; | ||||
if (abbr == "ACN14") return ambisonicACN14; | if (abbr == "ACN14") return ambisonicACN14; | ||||
if (abbr == "ACN15") return ambisonicACN15; | 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 == "Tsl") return topSideLeft; | ||||
if (abbr == "Tsr") return topSideRight; | if (abbr == "Tsr") return topSideRight; | ||||
if (abbr == "Bfl") return bottomFrontLeft; | if (abbr == "Bfl") return bottomFrontLeft; | ||||
@@ -168,10 +168,11 @@ namespace AiffFileHelpers | |||||
switch (key) | 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) | if (keyString != nullptr) | ||||
@@ -117,6 +117,10 @@ namespace FlacNamespace | |||||
#pragma clang diagnostic ignored "-Wconversion" | #pragma clang diagnostic ignored "-Wconversion" | ||||
#pragma clang diagnostic ignored "-Wshadow" | #pragma clang diagnostic ignored "-Wshadow" | ||||
#pragma clang diagnostic ignored "-Wdeprecated-register" | #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") | #if __has_warning("-Wzero-as-null-pointer-constant") | ||||
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#endif | #endif | ||||
@@ -127,6 +131,12 @@ namespace FlacNamespace | |||||
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#pragma GCC diagnostic ignored "-Wconversion" | #pragma GCC diagnostic ignored "-Wconversion" | ||||
#pragma GCC diagnostic ignored "-Wsign-conversion" | #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 | #endif | ||||
#if JUCE_INTEL | #if JUCE_INTEL | ||||
@@ -1878,6 +1878,9 @@ private: | |||||
*in0++ = *in1++; | *in0++ = *in1++; | ||||
} | } | ||||
break; | break; | ||||
default: | |||||
break; | |||||
} | } | ||||
} | } | ||||
@@ -44,6 +44,7 @@ namespace OggVorbisNamespace | |||||
#pragma clang diagnostic ignored "-Wconversion" | #pragma clang diagnostic ignored "-Wconversion" | ||||
#pragma clang diagnostic ignored "-Wshadow" | #pragma clang diagnostic ignored "-Wshadow" | ||||
#pragma clang diagnostic ignored "-Wdeprecated-register" | #pragma clang diagnostic ignored "-Wdeprecated-register" | ||||
#pragma clang diagnostic ignored "-Wswitch-enum" | |||||
#if __has_warning("-Wzero-as-null-pointer-constant") | #if __has_warning("-Wzero-as-null-pointer-constant") | ||||
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#endif | #endif | ||||
@@ -53,6 +54,9 @@ namespace OggVorbisNamespace | |||||
#pragma GCC diagnostic ignored "-Wshadow" | #pragma GCC diagnostic ignored "-Wshadow" | ||||
#pragma GCC diagnostic ignored "-Wsign-conversion" | #pragma GCC diagnostic ignored "-Wsign-conversion" | ||||
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | #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 | #endif | ||||
#include "oggvorbis/vorbisenc.h" | #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 | namespace juce | ||||
{ | { | ||||
@@ -124,7 +120,7 @@ public: | |||||
virtual void createPlugin() | virtual void createPlugin() | ||||
{ | { | ||||
#if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client | #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client | ||||
processor.reset (::createPluginFilterOfType (AudioProcessor::wrapperType_Standalone)); | |||||
processor.reset (createPluginFilterOfType (AudioProcessor::wrapperType_Standalone)); | |||||
#else | #else | ||||
AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Standalone); | AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Standalone); | ||||
processor.reset (createPluginFilter()); | 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 | void timerCallback() override | ||||
{ | { | ||||
if (shouldDeleteEditor) | if (shouldDeleteEditor) | ||||
@@ -260,6 +260,7 @@ public: | |||||
case VBVSTScanner: return "VBVSTScanner"; | case VBVSTScanner: return "VBVSTScanner"; | ||||
case ViennaEnsemblePro: return "Vienna Ensemble Pro"; | case ViennaEnsemblePro: return "Vienna Ensemble Pro"; | ||||
case WaveBurner: return "WaveBurner"; | case WaveBurner: return "WaveBurner"; | ||||
case UnknownHost: | |||||
default: break; | default: break; | ||||
} | } | ||||
@@ -49,14 +49,14 @@ struct SpeakerMappings : private AudioChannelSet // (inheritance only to give e | |||||
bool matches (const Array<ChannelType>& chans) const noexcept | 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) | for (int i = 0; i < n; ++i) | ||||
{ | { | ||||
if (channels[i] == unknown) return (i == chans.size()); | if (channels[i] == unknown) return (i == chans.size()); | ||||
if (i == chans.size()) return (channels[i] == unknown); | if (i == chans.size()) return (channels[i] == unknown); | ||||
if (channels[i] != chans.getUnchecked(i)) | |||||
if (channels[i] != chans.getUnchecked (i)) | |||||
return false; | 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::create7point1SDDS()) return Vst2::kSpeakerArr71Cine; | ||||
else if (channels == AudioChannelSet::quadraphonic()) return Vst2::kSpeakerArr40Music; | else if (channels == AudioChannelSet::quadraphonic()) return Vst2::kSpeakerArr40Music; | ||||
Array<AudioChannelSet::ChannelType> chans (channels.getChannelTypes()); | |||||
if (channels == AudioChannelSet::disabled()) | if (channels == AudioChannelSet::disabled()) | ||||
return Vst2::kSpeakerArrEmpty; | 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)) | if (m->matches (chans)) | ||||
return m->vst2; | return m->vst2; | ||||
return Vst2::kSpeakerArrUserDefined; | 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 to hold a speaker configuration */ | ||||
class VstSpeakerConfigurationHolder | class VstSpeakerConfigurationHolder | ||||
{ | { | ||||
public: | 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) | VstSpeakerConfigurationHolder (VstSpeakerConfigurationHolder&& other) | ||||
: storage (std::move (other.storage)) { other.clear(); } | |||||
: storage (std::move (other.storage)) | |||||
{ | |||||
other.clear(); | |||||
} | |||||
VstSpeakerConfigurationHolder (const AudioChannelSet& channels) | 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::kSpeakerArr71Music, { left, right, centre, LFE, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, unknown } }, | ||||
{ Vst2::kSpeakerArr80Cine, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } }, | { Vst2::kSpeakerArr80Cine, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } }, | ||||
{ Vst2::kSpeakerArr80Music, { left, right, centre, leftSurround, rightSurround, surround, leftSurroundRear, rightSurroundRear, 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 } } | { Vst2::kSpeakerArrEmpty, { unknown } } | ||||
}; | }; | ||||
@@ -252,31 +281,33 @@ struct SpeakerMappings : private AudioChannelSet // (inheritance only to give e | |||||
static inline int32 getSpeakerType (AudioChannelSet::ChannelType type) noexcept | 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 | 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::fps30: setHostTimeFrameRate (Vst2::kVstSmpte30fps, 30.0, position.timeInSeconds); break; | ||||
case AudioPlayHead::fps60: setHostTimeFrameRate (Vst2::kVstSmpte60fps, 60.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::fps2997drop: setHostTimeFrameRateDrop (Vst2::kVstSmpte2997dfps, 30.0, position.timeInSeconds); break; | ||||
case AudioPlayHead::fps30drop: setHostTimeFrameRateDrop (Vst2::kVstSmpte30dfps, 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; | default: break; | ||||
} | } | ||||
@@ -2715,16 +2716,20 @@ private: | |||||
{ | { | ||||
switch (getVstCategory()) | 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; | return nullptr; | ||||
@@ -297,6 +297,8 @@ struct PluginSorter | |||||
case KnownPluginList::sortByFormat: diff = first.pluginFormatName.compare (second.pluginFormatName); break; | case KnownPluginList::sortByFormat: diff = first.pluginFormatName.compare (second.pluginFormatName); break; | ||||
case KnownPluginList::sortByFileSystemLocation: diff = lastPathPart (first.fileOrIdentifier).compare (lastPathPart (second.fileOrIdentifier)); 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::sortByInfoUpdateTime: diff = compare (first.lastInfoUpdateTime, second.lastInfoUpdateTime); break; | ||||
case KnownPluginList::sortAlphabetically: | |||||
case KnownPluginList::defaultOrder: | |||||
default: break; | default: break; | ||||
} | } | ||||
@@ -377,6 +377,7 @@ private: | |||||
case AndroidBluetoothMidiInterface::paired: | case AndroidBluetoothMidiInterface::paired: | ||||
status = AndroidBluetoothMidiDevice::connected; | status = AndroidBluetoothMidiDevice::connected; | ||||
break; | break; | ||||
case AndroidBluetoothMidiInterface::unpaired: | |||||
default: | default: | ||||
status = AndroidBluetoothMidiDevice::disconnected; | status = AndroidBluetoothMidiDevice::disconnected; | ||||
} | } | ||||
@@ -336,7 +336,8 @@ struct Program | |||||
#undef LITTLEFOOT_OP_INT16 | #undef LITTLEFOOT_OP_INT16 | ||||
#undef LITTLEFOOT_OP_INT32 | #undef LITTLEFOOT_OP_INT32 | ||||
default: s << "???"; break; | |||||
case OpCode::endOfOpcodes: | |||||
default: s << "???"; break; | |||||
} | } | ||||
return s; | return s; | ||||
@@ -370,8 +371,11 @@ struct Program | |||||
#undef LITTLEFOOT_OP_INT16 | #undef LITTLEFOOT_OP_INT16 | ||||
#undef LITTLEFOOT_OP_INT32 | #undef LITTLEFOOT_OP_INT32 | ||||
default: jassertfalse; return 0; | |||||
case OpCode::endOfOpcodes: | |||||
default: jassertfalse; break; | |||||
} | } | ||||
return 0; | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -676,6 +680,7 @@ struct Runner | |||||
switch (op) | switch (op) | ||||
{ | { | ||||
LITTLEFOOT_OPCODES (LITTLEFOOT_PERFORM_OP, LITTLEFOOT_PERFORM_OP_INT8, LITTLEFOOT_PERFORM_OP_INT16, LITTLEFOOT_PERFORM_OP_INT32) | 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; | default: setError (ErrorCode::unknownInstruction); break; | ||||
} | } | ||||
@@ -345,14 +345,16 @@ static const char* getButtonNameForFunction (ControlButton::ButtonFunction fn) n | |||||
case BF::button6: return "6"; | case BF::button6: return "6"; | ||||
case BF::button7: return "7"; | 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; | jassertfalse; | ||||
@@ -571,6 +571,7 @@ private: | |||||
case Block::ConnectionPort::DeviceEdge::east: return 1; | case Block::ConnectionPort::DeviceEdge::east: return 1; | ||||
case Block::ConnectionPort::DeviceEdge::south: return 2; | case Block::ConnectionPort::DeviceEdge::south: return 2; | ||||
case Block::ConnectionPort::DeviceEdge::west: return 3; | case Block::ConnectionPort::DeviceEdge::west: return 3; | ||||
default: break; | |||||
} | } | ||||
jassertfalse; | jassertfalse; | ||||
@@ -629,6 +630,8 @@ private: | |||||
case 3: // left of me | case 3: // left of me | ||||
delta = { -theirBounds.width, (myBounds.height - (myOffset + 1)) - theirOffset }; | delta = { -theirBounds.width, (myBounds.height - (myOffset + 1)) - theirOffset }; | ||||
break; | break; | ||||
default: | |||||
break; | |||||
} | } | ||||
{ | { | ||||
@@ -671,6 +674,7 @@ private: | |||||
case Block::ConnectionPort::DeviceEdge::south: return "south"; | case Block::ConnectionPort::DeviceEdge::south: return "south"; | ||||
case Block::ConnectionPort::DeviceEdge::east: return "east"; | case Block::ConnectionPort::DeviceEdge::east: return "east"; | ||||
case Block::ConnectionPort::DeviceEdge::west: return "west"; | case Block::ConnectionPort::DeviceEdge::west: return "west"; | ||||
default: break; | |||||
} | } | ||||
return {}; | return {}; | ||||
@@ -40,6 +40,7 @@ | |||||
#pragma clang diagnostic ignored "-Wsign-conversion" | #pragma clang diagnostic ignored "-Wsign-conversion" | ||||
#pragma clang diagnostic ignored "-Wfloat-conversion" | #pragma clang diagnostic ignored "-Wfloat-conversion" | ||||
#pragma clang diagnostic ignored "-Wcast-align" | #pragma clang diagnostic ignored "-Wcast-align" | ||||
#pragma clang diagnostic ignored "-Wswitch-enum" | |||||
#if __has_warning("-Wzero-as-null-pointer-constant") | #if __has_warning("-Wzero-as-null-pointer-constant") | ||||
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#endif | #endif | ||||
@@ -48,6 +49,8 @@ | |||||
#pragma GCC diagnostic ignored "-Wsign-conversion" | #pragma GCC diagnostic ignored "-Wsign-conversion" | ||||
#pragma GCC diagnostic ignored "-Wunused-but-set-variable" | #pragma GCC diagnostic ignored "-Wunused-but-set-variable" | ||||
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#pragma GCC diagnostic ignored "-Wswitch-enum" | |||||
#pragma GCC diagnostic ignored "-Wswitch-default" | |||||
#endif | #endif | ||||
#include <cstdarg> | #include <cstdarg> | ||||
@@ -23,8 +23,6 @@ | |||||
namespace juce | namespace juce | ||||
{ | { | ||||
int64 juce_fileSetPosition (void* handle, int64 pos); | |||||
//============================================================================== | //============================================================================== | ||||
FileOutputStream::FileOutputStream (const File& f, const size_t bufferSizeToUse) | FileOutputStream::FileOutputStream (const File& f, const size_t bufferSizeToUse) | ||||
: file (f), | : file (f), | ||||
@@ -126,6 +126,8 @@ struct JSONParser | |||||
break; | break; | ||||
} | } | ||||
default: break; | |||||
} | } | ||||
} | } | ||||
@@ -82,6 +82,12 @@ | |||||
#define NSAlertStyleInformational NSInformationalAlertStyle | #define NSAlertStyleInformational NSInformationalAlertStyle | ||||
#define NSEventTypeTabletPoint NSTabletPoint | #define NSEventTypeTabletPoint NSTabletPoint | ||||
#define NSEventTypeTabletProximity NSTabletProximity | #define NSEventTypeTabletProximity NSTabletProximity | ||||
#define NSEventTypeFlagsChanged NSFlagsChanged | |||||
#define NSEventTypeAppKitDefined NSAppKitDefined | |||||
#define NSEventTypeSystemDefined NSSystemDefined | |||||
#define NSEventTypeApplicationDefined NSApplicationDefined | |||||
#define NSEventTypePeriodic NSPeriodic | |||||
#define NSEventTypeSmartMagnify NSEventTypeSmartMagnify | |||||
#endif | #endif | ||||
#import <CoreAudio/HostTime.h> | #import <CoreAudio/HostTime.h> | ||||
#include <sys/dir.h> | #include <sys/dir.h> | ||||
@@ -136,7 +136,7 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||||
case invokedExecutableFile: | case invokedExecutableFile: | ||||
if (juce_argv != nullptr && juce_argc > 0) | if (juce_argv != nullptr && juce_argc > 0) | ||||
return File (CharPointer_UTF8 (juce_argv[0])); | return File (CharPointer_UTF8 (juce_argv[0])); | ||||
// deliberate fall-through... | |||||
// Falls through | |||||
case currentExecutableFile: | case currentExecutableFile: | ||||
case currentApplicationFile: | case currentApplicationFile: | ||||
@@ -144,6 +144,7 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||||
return juce_getExecutableFile(); | return juce_getExecutableFile(); | ||||
#endif | #endif | ||||
// deliberate fall-through if this is not a shared-library | // deliberate fall-through if this is not a shared-library | ||||
JUCE_FALLTHROUGH | |||||
case hostApplicationPath: | case hostApplicationPath: | ||||
{ | { | ||||
@@ -203,6 +203,7 @@ File File::getSpecialLocation (const SpecialLocationType type) | |||||
if (juce_argv != nullptr && juce_argc > 0) | if (juce_argv != nullptr && juce_argc > 0) | ||||
return File::getCurrentWorkingDirectory().getChildFile (String (juce_argv[0])); | return File::getCurrentWorkingDirectory().getChildFile (String (juce_argv[0])); | ||||
// deliberate fall-through... | // deliberate fall-through... | ||||
JUCE_FALLTHROUGH | |||||
case currentExecutableFile: | case currentExecutableFile: | ||||
return juce_getExecutableFile(); | return juce_getExecutableFile(); | ||||
@@ -92,6 +92,26 @@ namespace juce | |||||
#define JUCE_ANALYZER_NORETURN | #define JUCE_ANALYZER_NORETURN | ||||
#endif | #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 | #if JUCE_MSVC && ! DOXYGEN | ||||
#define JUCE_BLOCK_WITH_FORCED_SEMICOLON(x) \ | #define JUCE_BLOCK_WITH_FORCED_SEMICOLON(x) \ | ||||
@@ -166,9 +166,12 @@ public: | |||||
#else | #else | ||||
*currentCharacter++ = '-'; | *currentCharacter++ = '-'; | ||||
#endif | #endif | ||||
// Fall-through.. | |||||
JUCE_FALLTHROUGH | |||||
case '+': | case '+': | ||||
c = *++text; | c = *++text; | ||||
break; | |||||
default: | |||||
break; | |||||
} | } | ||||
switch (c) | switch (c) | ||||
@@ -184,6 +187,9 @@ public: | |||||
if ((text[1] == 'n' || text[1] == 'N') && (text[2] == 'f' || text[2] == 'F')) | if ((text[1] == 'n' || text[1] == 'N') && (text[2] == 'f' || text[2] == 'F')) | ||||
return std::numeric_limits<double>::infinity(); | return std::numeric_limits<double>::infinity(); | ||||
break; | break; | ||||
default: | |||||
break; | |||||
} | } | ||||
#if JUCE_MINGW | #if JUCE_MINGW | ||||
@@ -274,7 +280,7 @@ public: | |||||
switch (*++text) | switch (*++text) | ||||
{ | { | ||||
case '-': negativeExponent = true; // fall-through.. | |||||
case '-': negativeExponent = true; JUCE_FALLTHROUGH | |||||
case '+': ++text; | case '+': ++text; | ||||
} | } | ||||
@@ -359,8 +365,9 @@ public: | |||||
switch (*++text) | switch (*++text) | ||||
{ | { | ||||
case '-': parsedExponentIsPositive = false; // Fall-through.. | |||||
case '+': ++text; | |||||
case '-': parsedExponentIsPositive = false; JUCE_FALLTHROUGH | |||||
case '+': ++text; break; | |||||
default: break; | |||||
} | } | ||||
int exponent = 0; | int exponent = 0; | ||||
@@ -237,7 +237,7 @@ namespace XmlOutputFunctions | |||||
outputStream << (char) character; | outputStream << (char) character; | ||||
break; | break; | ||||
} | } | ||||
// Note: Deliberate fall-through here! | |||||
JUCE_FALLTHROUGH | |||||
default: | default: | ||||
outputStream << "&#" << ((int) character) << ';'; | outputStream << "&#" << ((int) character) << ';'; | ||||
break; | break; | ||||
@@ -92,7 +92,7 @@ private: | |||||
{ | { | ||||
case Z_STREAM_END: | case Z_STREAM_END: | ||||
finished = true; | finished = true; | ||||
// Deliberate fall-through.. | |||||
JUCE_FALLTHROUGH | |||||
case Z_OK: | case Z_OK: | ||||
{ | { | ||||
data += dataSize - stream.avail_in; | data += dataSize - stream.avail_in; | ||||
@@ -36,6 +36,10 @@ namespace zlibNamespace | |||||
#pragma clang diagnostic ignored "-Wconversion" | #pragma clang diagnostic ignored "-Wconversion" | ||||
#pragma clang diagnostic ignored "-Wshadow" | #pragma clang diagnostic ignored "-Wshadow" | ||||
#pragma clang diagnostic ignored "-Wdeprecated-register" | #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") | #if __has_warning("-Wzero-as-null-pointer-constant") | ||||
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#endif | #endif | ||||
@@ -50,6 +54,12 @@ namespace zlibNamespace | |||||
#pragma GCC diagnostic ignored "-Wsign-conversion" | #pragma GCC diagnostic ignored "-Wsign-conversion" | ||||
#pragma GCC diagnostic ignored "-Wshadow" | #pragma GCC diagnostic ignored "-Wshadow" | ||||
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | #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 | #endif | ||||
#undef OS_CODE | #undef OS_CODE | ||||
@@ -151,7 +161,7 @@ public: | |||||
{ | { | ||||
case Z_STREAM_END: | case Z_STREAM_END: | ||||
finished = true; | finished = true; | ||||
// deliberate fall-through | |||||
JUCE_FALLTHROUGH | |||||
case Z_OK: | case Z_OK: | ||||
data += dataSize - stream.avail_in; | data += dataSize - stream.avail_in; | ||||
dataSize = (z_uInt) stream.avail_in; | dataSize = (z_uInt) stream.avail_in; | ||||
@@ -166,7 +176,7 @@ public: | |||||
case Z_DATA_ERROR: | case Z_DATA_ERROR: | ||||
case Z_MEM_ERROR: | case Z_MEM_ERROR: | ||||
error = true; | error = true; | ||||
JUCE_FALLTHROUGH | |||||
default: | default: | ||||
break; | break; | ||||
} | } | ||||
@@ -229,6 +229,9 @@ bool ValueTreeSynchroniser::applyChange (ValueTree& root, const void* data, size | |||||
break; | break; | ||||
} | } | ||||
case ValueTreeSynchroniserHelpers::fullSync: | |||||
break; | |||||
default: | default: | ||||
jassertfalse; // Seem to have received some corrupt data? | jassertfalse; // Seem to have received some corrupt data? | ||||
break; | break; | ||||
@@ -643,6 +643,7 @@ struct Convolution::Pimpl : private Thread | |||||
} | } | ||||
break; | break; | ||||
case ChangeRequest::numChangeRequestTypes: | |||||
case ChangeRequest::changeIgnore: | case ChangeRequest::changeIgnore: | ||||
break; | break; | ||||
@@ -145,6 +145,7 @@ void WindowingFunction<FloatType>::fillWindowingTables (FloatType* samples, size | |||||
} | } | ||||
break; | break; | ||||
case numWindowingMethods: | |||||
default: | default: | ||||
jassertfalse; | jassertfalse; | ||||
break; | break; | ||||
@@ -175,15 +176,16 @@ const char* WindowingFunction<FloatType>::getWindowingMethodName (WindowingMetho | |||||
{ | { | ||||
switch (type) | 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_API void JUCE_CALLTYPE initialiseJuce_GUI() | ||||
{ | { | ||||
JUCE_AUTORELEASEPOOL | 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_API void JUCE_CALLTYPE shutdownJuce_GUI() | ||||
{ | { | ||||
JUCE_AUTORELEASEPOOL | JUCE_AUTORELEASEPOOL | ||||
@@ -751,10 +751,11 @@ public: | |||||
switch (inside) | 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; | return false; | ||||
@@ -44,6 +44,10 @@ namespace jpeglibNamespace | |||||
#pragma clang diagnostic ignored "-Wconversion" | #pragma clang diagnostic ignored "-Wconversion" | ||||
#pragma clang diagnostic ignored "-Wdeprecated-register" | #pragma clang diagnostic ignored "-Wdeprecated-register" | ||||
#pragma clang diagnostic ignored "-Wcast-align" | #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") | #if __has_warning("-Wzero-as-null-pointer-constant") | ||||
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#endif | #endif | ||||
@@ -57,8 +61,13 @@ namespace jpeglibNamespace | |||||
#pragma GCC diagnostic ignored "-Wconversion" | #pragma GCC diagnostic ignored "-Wconversion" | ||||
#pragma GCC diagnostic ignored "-Wsign-conversion" | #pragma GCC diagnostic ignored "-Wsign-conversion" | ||||
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#pragma GCC diagnostic ignored "-Wswitch-enum" | |||||
#pragma GCC diagnostic ignored "-Wswitch-default" | |||||
#if __GNUC__ > 5 | #if __GNUC__ > 5 | ||||
#pragma GCC diagnostic ignored "-Wshift-negative-value" | #pragma GCC diagnostic ignored "-Wshift-negative-value" | ||||
#if __GNUC__ >= 7 | |||||
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" | |||||
#endif | |||||
#endif | #endif | ||||
#endif | #endif | ||||
@@ -66,6 +66,9 @@ namespace pnglibNamespace | |||||
#if JUCE_CLANG | #if JUCE_CLANG | ||||
#pragma clang diagnostic push | #pragma clang diagnostic push | ||||
#pragma clang diagnostic ignored "-Wsign-conversion" | #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") | #if __has_warning("-Wzero-as-null-pointer-constant") | ||||
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#endif | #endif | ||||
@@ -78,6 +81,9 @@ namespace pnglibNamespace | |||||
#pragma GCC diagnostic push | #pragma GCC diagnostic push | ||||
#pragma GCC diagnostic ignored "-Wsign-conversion" | #pragma GCC diagnostic ignored "-Wsign-conversion" | ||||
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
#if __GNUC__ >= 7 | |||||
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" | |||||
#endif | |||||
#endif | #endif | ||||
#undef check | #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::ARGB: return Colour ( ((const PixelARGB*) pixel)->getUnpremultiplied()); | ||||
case Image::RGB: return Colour (*((const PixelRGB*) pixel)); | case Image::RGB: return Colour (*((const PixelRGB*) pixel)); | ||||
case Image::SingleChannel: return Colour (*((const PixelAlpha*) pixel)); | case Image::SingleChannel: return Colour (*((const PixelAlpha*) pixel)); | ||||
case Image::UnknownFormat: | |||||
default: jassertfalse; break; | 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::ARGB: ((PixelARGB*) pixel)->set (col); break; | ||||
case Image::RGB: ((PixelRGB*) pixel)->set (col); break; | case Image::RGB: ((PixelRGB*) pixel)->set (col); break; | ||||
case Image::SingleChannel: ((PixelAlpha*) pixel)->set (col); break; | case Image::SingleChannel: ((PixelAlpha*) pixel)->set (col); break; | ||||
case Image::UnknownFormat: | |||||
default: jassertfalse; break; | 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::ARGB: PixelIterator<PixelARGB> ::iterate (data, pixelOp); break; | ||||
case Image::RGB: PixelIterator<PixelRGB> ::iterate (data, pixelOp); break; | case Image::RGB: PixelIterator<PixelRGB> ::iterate (data, pixelOp); break; | ||||
case Image::SingleChannel: PixelIterator<PixelAlpha>::iterate (data, pixelOp); break; | case Image::SingleChannel: PixelIterator<PixelAlpha>::iterate (data, pixelOp); break; | ||||
case Image::UnknownFormat: | |||||
default: jassertfalse; break; | default: jassertfalse; break; | ||||
} | } | ||||
} | } | ||||
@@ -1426,6 +1426,8 @@ namespace EdgeTableFillers | |||||
if (tiledFill) { TransformedImageFill<PixelARGB, PixelRGB, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | 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); } | else { TransformedImageFill<PixelARGB, PixelRGB, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | ||||
break; | break; | ||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
if (tiledFill) { TransformedImageFill<PixelARGB, PixelAlpha, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | 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); } | else { TransformedImageFill<PixelARGB, PixelAlpha, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | ||||
@@ -1434,6 +1436,7 @@ namespace EdgeTableFillers | |||||
break; | break; | ||||
case Image::RGB: | case Image::RGB: | ||||
{ | |||||
switch (srcData.pixelFormat) | switch (srcData.pixelFormat) | ||||
{ | { | ||||
case Image::ARGB: | case Image::ARGB: | ||||
@@ -1444,13 +1447,18 @@ namespace EdgeTableFillers | |||||
if (tiledFill) { TransformedImageFill<PixelRGB, PixelRGB, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | 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); } | else { TransformedImageFill<PixelRGB, PixelRGB, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | ||||
break; | break; | ||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
if (tiledFill) { TransformedImageFill<PixelRGB, PixelAlpha, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | 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); } | else { TransformedImageFill<PixelRGB, PixelAlpha, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | ||||
break; | break; | ||||
} | } | ||||
break; | break; | ||||
} | |||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
switch (srcData.pixelFormat) | switch (srcData.pixelFormat) | ||||
{ | { | ||||
@@ -1462,6 +1470,8 @@ namespace EdgeTableFillers | |||||
if (tiledFill) { TransformedImageFill<PixelAlpha, PixelRGB, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | 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); } | else { TransformedImageFill<PixelAlpha, PixelRGB, false> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | ||||
break; | break; | ||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
if (tiledFill) { TransformedImageFill<PixelAlpha, PixelAlpha, true> r (destData, srcData, transform, alpha, quality); iter.iterate (r); } | 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); } | 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); } | 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); } | else { ImageFill<PixelARGB, PixelRGB, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | ||||
break; | break; | ||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
if (tiledFill) { ImageFill<PixelARGB, PixelAlpha, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | 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); } | 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); } | 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); } | else { ImageFill<PixelRGB, PixelRGB, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | ||||
break; | break; | ||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
if (tiledFill) { ImageFill<PixelRGB, PixelAlpha, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | 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); } | else { ImageFill<PixelRGB, PixelAlpha, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | ||||
@@ -1512,6 +1526,8 @@ namespace EdgeTableFillers | |||||
} | } | ||||
break; | break; | ||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
switch (srcData.pixelFormat) | switch (srcData.pixelFormat) | ||||
{ | { | ||||
@@ -1523,6 +1539,8 @@ namespace EdgeTableFillers | |||||
if (tiledFill) { ImageFill<PixelAlpha, PixelRGB, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | 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); } | else { ImageFill<PixelAlpha, PixelRGB, false> r (destData, srcData, alpha, x, y); iter.iterate (r); } | ||||
break; | break; | ||||
case Image::SingleChannel: | |||||
case Image::UnknownFormat: | |||||
default: | default: | ||||
if (tiledFill) { ImageFill<PixelAlpha, PixelAlpha, true> r (destData, srcData, alpha, x, y); iter.iterate (r); } | 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); } | 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::ARGB: EdgeTableFillers::renderSolidFill (iter, destData, colour, replaceContents, (PixelARGB*) nullptr); break; | ||||
case Image::RGB: EdgeTableFillers::renderSolidFill (iter, destData, colour, replaceContents, (PixelRGB*) 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; | 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::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::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; | 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::none: return kCTLineBreakByClipping; | ||||
case AttributedString::byChar: return kCTLineBreakByCharWrapping; | case AttributedString::byChar: return kCTLineBreakByCharWrapping; | ||||
case AttributedString::byWord: | |||||
default: return kCTLineBreakByWordWrapping; | default: return kCTLineBreakByWordWrapping; | ||||
} | } | ||||
} | } | ||||
@@ -199,6 +200,7 @@ namespace CoreTextTypeLayout | |||||
{ | { | ||||
case AttributedString::rightToLeft: return kCTWritingDirectionRightToLeft; | case AttributedString::rightToLeft: return kCTWritingDirectionRightToLeft; | ||||
case AttributedString::leftToRight: return kCTWritingDirectionLeftToRight; | case AttributedString::leftToRight: return kCTWritingDirectionLeftToRight; | ||||
case AttributedString::natural: | |||||
default: return kCTWritingDirectionNatural; | default: return kCTWritingDirectionNatural; | ||||
} | } | ||||
} | } | ||||
@@ -27,8 +27,6 @@ | |||||
namespace juce | namespace juce | ||||
{ | { | ||||
Image juce_createIconForFile (const File&); | |||||
//============================================================================== | //============================================================================== | ||||
class FileListTreeItem : public TreeViewItem, | class FileListTreeItem : public TreeViewItem, | ||||
private TimeSliceClient, | private TimeSliceClient, | ||||
@@ -2143,6 +2143,7 @@ void LookAndFeel_V2::createTabButtonShape (TabBarButton& button, Path& p, bool / | |||||
p.lineTo (-overhang, -overhang); | p.lineTo (-overhang, -overhang); | ||||
break; | break; | ||||
case TabbedButtonBar::TabsAtTop: | |||||
default: | default: | ||||
p.startNewSubPath (0.0f, h); | p.startNewSubPath (0.0f, h); | ||||
p.lineTo (indent, 0.0f); | p.lineTo (indent, 0.0f); | ||||
@@ -4093,6 +4093,7 @@ void* MouseCursor::createStandardMouseCursor (MouseCursor::StandardCursorType ty | |||||
return CustomMouseCursorInfo (ImageFileFormat::loadFrom (copyCursorData, copyCursorSize), { 1, 3 }).create(); | return CustomMouseCursorInfo (ImageFileFormat::loadFrom (copyCursorData, copyCursorSize), { 1, 3 }).create(); | ||||
} | } | ||||
case NumStandardCursorTypes: | |||||
default: | default: | ||||
jassertfalse; | jassertfalse; | ||||
return None; | return None; | ||||
@@ -144,6 +144,7 @@ void* MouseCursor::createStandardMouseCursor (MouseCursor::StandardCursorType ty | |||||
case UpDownLeftRightResizeCursor: | case UpDownLeftRightResizeCursor: | ||||
return MouseCursorHelpers::fromHIServices ("move"); | return MouseCursorHelpers::fromHIServices ("move"); | ||||
case NumStandardCursorTypes: | |||||
default: | default: | ||||
jassertfalse; | jassertfalse; | ||||
break; | break; | ||||
@@ -1524,6 +1524,26 @@ private: | |||||
case NSEventTypeTabletProximity: | case NSEventTypeTabletProximity: | ||||
break; | 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: | default: | ||||
return false; | return false; | ||||
} | } | ||||
@@ -3731,6 +3731,7 @@ private: | |||||
case WM_DISPLAYCHANGE: | case WM_DISPLAYCHANGE: | ||||
InvalidateRect (h, 0, 0); | InvalidateRect (h, 0, 0); | ||||
// intentional fall-through... | // intentional fall-through... | ||||
JUCE_FALLTHROUGH | |||||
case WM_SETTINGCHANGE: // note the fall-through in the previous case! | case WM_SETTINGCHANGE: // note the fall-through in the previous case! | ||||
doSettingChange(); | doSettingChange(); | ||||
break; | break; | ||||
@@ -33,12 +33,10 @@ struct MarkerListScope : public Expression::Scope | |||||
Expression getSymbolValue (const String& symbol) const override | 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; | MarkerList* list; | ||||
@@ -116,6 +114,8 @@ Expression RelativeCoordinatePositionerBase::ComponentScope::getSymbolValue (con | |||||
case RelativeCoordinate::StandardStrings::height: return Expression ((double) component.getHeight()); | case RelativeCoordinate::StandardStrings::height: return Expression ((double) component.getHeight()); | ||||
case RelativeCoordinate::StandardStrings::right: return Expression ((double) component.getRight()); | case RelativeCoordinate::StandardStrings::right: return Expression ((double) component.getRight()); | ||||
case RelativeCoordinate::StandardStrings::bottom: return Expression ((double) component.getBottom()); | case RelativeCoordinate::StandardStrings::bottom: return Expression ((double) component.getBottom()); | ||||
case RelativeCoordinate::StandardStrings::parent: | |||||
case RelativeCoordinate::StandardStrings::unknown: | |||||
default: break; | default: break; | ||||
} | } | ||||
@@ -180,6 +180,8 @@ public: | |||||
positioner.registerComponentListener (component); | positioner.registerComponentListener (component); | ||||
break; | break; | ||||
case RelativeCoordinate::StandardStrings::parent: | |||||
case RelativeCoordinate::StandardStrings::unknown: | |||||
default: | default: | ||||
if (auto* parent = component.getParentComponent()) | if (auto* parent = component.getParentComponent()) | ||||
{ | { | ||||
@@ -52,6 +52,11 @@ namespace RelativeRectangleHelpers | |||||
case RelativeCoordinate::StandardStrings::right: | case RelativeCoordinate::StandardStrings::right: | ||||
case RelativeCoordinate::StandardStrings::top: | case RelativeCoordinate::StandardStrings::top: | ||||
case RelativeCoordinate::StandardStrings::bottom: return false; | case RelativeCoordinate::StandardStrings::bottom: return false; | ||||
case RelativeCoordinate::StandardStrings::width: | |||||
case RelativeCoordinate::StandardStrings::height: | |||||
case RelativeCoordinate::StandardStrings::parent: | |||||
case RelativeCoordinate::StandardStrings::unknown: | |||||
default: break; | default: break; | ||||
} | } | ||||
@@ -127,6 +132,10 @@ public: | |||||
case RelativeCoordinate::StandardStrings::top: return rect.top.getExpression(); | case RelativeCoordinate::StandardStrings::top: return rect.top.getExpression(); | ||||
case RelativeCoordinate::StandardStrings::right: return rect.right.getExpression(); | case RelativeCoordinate::StandardStrings::right: return rect.right.getExpression(); | ||||
case RelativeCoordinate::StandardStrings::bottom: return rect.bottom.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; | default: break; | ||||
} | } | ||||
@@ -728,9 +728,10 @@ private: | |||||
int selectedStyle = 0; | int selectedStyle = 0; | ||||
switch (bar.getStyle()) | 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); | styleBox.setSelectedId (selectedStyle); | ||||
@@ -757,6 +758,7 @@ private: | |||||
case 1: toolbar.setStyle (Toolbar::iconsOnly); break; | case 1: toolbar.setStyle (Toolbar::iconsOnly); break; | ||||
case 2: toolbar.setStyle (Toolbar::iconsWithText); break; | case 2: toolbar.setStyle (Toolbar::iconsWithText); break; | ||||
case 3: toolbar.setStyle (Toolbar::textOnly); break; | case 3: toolbar.setStyle (Toolbar::textOnly); break; | ||||
default: break; | |||||
} | } | ||||
palette.resized(); // to make it update the styles | palette.resized(); // to make it update the styles | ||||
@@ -616,8 +616,8 @@ struct CppTokeniserFunctions | |||||
charsOnLine += 2; | charsOnLine += 2; | ||||
break; | break; | ||||
} | } | ||||
// deliberate fall-through... | // deliberate fall-through... | ||||
JUCE_FALLTHROUGH | |||||
default: | default: | ||||
if (c >= 32 && c < 127 && ! (lastWasHexEscapeCode // (have to avoid following a hex escape sequence with a valid hex digit) | 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) | if (wantsFocus) | ||||
owner.moveKeyboardFocusToSibling (false); | owner.moveKeyboardFocusToSibling (false); | ||||
break; | break; | ||||
default: | |||||
break; | |||||
} | } | ||||
} | } | ||||
@@ -500,6 +503,9 @@ private: | |||||
MessageManager::callAsync ([this] {componentMovedOrResized (owner, true, true);}); | MessageManager::callAsync ([this] {componentMovedOrResized (owner, true, true);}); | ||||
return true; | return true; | ||||
default: | |||||
break; | |||||
} | } | ||||
} | } | ||||
else if (e.xany.window == host && host != 0) | else if (e.xany.window == host && host != 0) | ||||
@@ -536,6 +542,9 @@ private: | |||||
return true; | return true; | ||||
} | } | ||||
break; | 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::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::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::SingleChannel: Flipper<PixelAlpha>::flip (dataCopy, srcData.data, srcData.lineStride, imageW, imageH); break; | ||||
case Image::UnknownFormat: | |||||
default: break; | default: break; | ||||
} | } | ||||
@@ -175,6 +175,7 @@ namespace | |||||
break; | break; | ||||
} | } | ||||
// else = special case: fall through to default and treat '!' as a non-special character. | // else = special case: fall through to default and treat '!' as a non-special character. | ||||
JUCE_FALLTHROUGH | |||||
default: | default: | ||||
set.add (c); | set.add (c); | ||||
@@ -1325,6 +1325,7 @@ private: | |||||
return (cameraSensorOrientation + 180) % 360; | return (cameraSensorOrientation + 180) % 360; | ||||
} | } | ||||
break; | break; | ||||
case Desktop::allOrientations: | |||||
default: | default: | ||||
return 0; | return 0; | ||||
} | } | ||||
@@ -394,8 +394,11 @@ private: | |||||
notifyOwnerPreparationFinished (url, Result::fail (errorMessage), nullptr); | notifyOwnerPreparationFinished (url, Result::fail (errorMessage), nullptr); | ||||
return; | return; | ||||
} | } | ||||
case AVKeyValueStatusUnknown: | |||||
case AVKeyValueStatusLoading: | |||||
default: | default: | ||||
{} | |||||
break; | |||||
} | } | ||||
} | } | ||||