1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

Merge branch 'develop' into feature/linux_webview_handleJavascriptEvaluationCallback_jassert_fix

This commit is contained in:
kaz saita 2025-12-18 14:41:59 +09:00 committed by GitHub
commit 3f604bb03e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
69 changed files with 1029 additions and 245 deletions

View file

@ -377,6 +377,11 @@ attributes directly to these creation functions, rather than adding them later.
is specified, then that image will be used for all icon resolutions. If both arguments are
specified, then the appropriate image will be picked for each icon resolution.
`ICON_COMPOSER_BUNDLE`
- An Icon Composer bundle used for MacOS and iOS builds. This argument takes precedence over the
ICON_BIG and ICON_SMALL settings with Xcode versions 26 and later. Older versions of Xcode will
continue to use ICON_BIG and ICON_SMALL, even if this argument is specified.
`COMPANY_COPYRIGHT`
- Copyright text which will be added to the app/plugin's Info.plist. The value of this argument
will be inherited from the `JUCE_COMPANY_COPYRIGHT` property, so if you want to use the same

View file

@ -56,6 +56,9 @@ add_library( ${BINARY_NAME}
"../../../Source/UI/MainComponent.h"
"../../../Source/UI/SettingsContent.h"
"../../../Source/Main.cpp"
"../../../Source/AppIcon.icon/Assets/demorunnerbg.svg"
"../../../Source/AppIcon.icon/Assets/demorunnerplay.svg"
"../../../Source/AppIcon.icon/icon.json"
"../../../Source/JUCEAppIcon.png"
"../../../../../modules/juce_analytics/analytics/juce_Analytics.cpp"
"../../../../../modules/juce_analytics/analytics/juce_Analytics.h"
@ -2777,6 +2780,9 @@ set_source_files_properties(
"../../../Source/UI/DemoContentComponent.h"
"../../../Source/UI/MainComponent.h"
"../../../Source/UI/SettingsContent.h"
"../../../Source/AppIcon.icon/Assets/demorunnerbg.svg"
"../../../Source/AppIcon.icon/Assets/demorunnerplay.svg"
"../../../Source/AppIcon.icon/icon.json"
"../../../Source/JUCEAppIcon.png"
"../../../../../modules/juce_analytics/analytics/juce_Analytics.cpp"
"../../../../../modules/juce_analytics/analytics/juce_Analytics.h"

View file

@ -35,11 +35,12 @@
5E4310B3F6BB639875D3E9B8 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = 49ECA8B998B339A083674A22; };
611298FAC1A543BDD10D4C41 /* include_juce_box2d.cpp */ = {isa = PBXBuildFile; fileRef = 4DF215D350FFE5E119CBA7E5; };
63A2F309E55DAC206E9B97E3 /* App */ = {isa = PBXBuildFile; fileRef = CFF2BBEB242CC8B3B904B5F9; };
675BFB499A7E0AAD2614F529 /* AppIcon.icns */ = {isa = PBXBuildFile; fileRef = 68A0F49281B13E51489A6874; };
6A61CBB4E39BFD392D97528F /* CoreMIDI.framework */ = {isa = PBXBuildFile; fileRef = 61AE09C749B007B70A265D9B; };
6B5560283DEEBD6DD2D6C984 /* include_juce_dsp.mm */ = {isa = PBXBuildFile; fileRef = C1E93FAF6C68A40A664422CD; };
712D81867EC698463252FA79 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = EDDA01B246C6128CAF7A2914; };
71DF4F5EB4C8305688416725 /* DemoContentComponent.cpp */ = {isa = PBXBuildFile; fileRef = E5BFC17E682AB426D203B3E6; };
75DB074DBAE04408A0A917B7 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = E0A3F113BC27B7B4D6F1D693; };
7648F1C856593D10FE42CF80 /* AppIcon.icon */ = {isa = PBXBuildFile; fileRef = FCF36E57A88C67133AFC06A4; };
7B4163348896EB1B86B15160 /* AVFoundation.framework */ = {isa = PBXBuildFile; fileRef = DC192EFA899E6CBE6B5CD394; };
8584640341100008744861A5 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 71A91516AFD980FEE694C0E1; };
89AD16514B1F4133FFEA1DF9 /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = 96D99A08027CA35D6A4E5CFD; };
@ -114,14 +115,17 @@
61AE09C749B007B70A265D9B /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
640B7C54D35F5DF408327886 /* include_juce_core_CompilationTime.cpp */ /* include_juce_core_CompilationTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_core_CompilationTime.cpp; path = ../../JuceLibraryCode/include_juce_core_CompilationTime.cpp; sourceTree = SOURCE_ROOT; };
651ECE3C7BA845DDCFEE48F3 /* juce_osc */ /* juce_osc */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_osc; path = ../../../../modules/juce_osc; sourceTree = SOURCE_ROOT; };
6710661E16D6BD412524EB52 /* demorunnerbg.svg */ /* demorunnerbg.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = demorunnerbg.svg; path = ../../Source/AppIcon.icon/Assets/demorunnerbg.svg; sourceTree = SOURCE_ROOT; };
6847A9B2C5E3C2ED56D8D4E7 /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; };
685A261BE78585293F3EAD36 /* Assets */ /* Assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Assets; path = ../../../Assets; sourceTree = "<group>"; };
68A0F49281B13E51489A6874 /* AppIcon.icns */ /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = AppIcon.icns; path = AppIcon.icns; sourceTree = SOURCE_ROOT; };
6C198AF93E1F6E682189E2F6 /* juce_opengl */ /* juce_opengl */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_opengl; path = ../../../../modules/juce_opengl; sourceTree = SOURCE_ROOT; };
6C2C1AC86623F457427965EF /* juce_box2d */ /* juce_box2d */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_box2d; path = ../../../../modules/juce_box2d; sourceTree = SOURCE_ROOT; };
6C5E26B4D28F8450435B8AE1 /* include_juce_cryptography.mm */ /* include_juce_cryptography.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_cryptography.mm; path = ../../JuceLibraryCode/include_juce_cryptography.mm; sourceTree = SOURCE_ROOT; };
71A91516AFD980FEE694C0E1 /* IOKit.framework */ /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
7A5AAE9EE573FC6105CC4AAC /* SettingsContent.h */ /* SettingsContent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SettingsContent.h; path = ../../Source/UI/SettingsContent.h; sourceTree = SOURCE_ROOT; };
7B3243C92248D379A0489AA4 /* Utilities */ /* Utilities */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Utilities; path = ../../../Utilities; sourceTree = "<group>"; };
7D51C1884CE8FB235D31921B /* icon.json */ /* icon.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = icon.json; path = ../../Source/AppIcon.icon/icon.json; sourceTree = SOURCE_ROOT; };
8447FC9882D85E6DAF0A4852 /* juce_animation */ /* juce_animation */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_animation; path = ../../../../modules/juce_animation; sourceTree = SOURCE_ROOT; };
877340409339CA0F561FB566 /* include_juce_audio_processors_headless_lv2_libs.cpp */ /* include_juce_audio_processors_headless_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_headless_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_headless_lv2_libs.cpp; sourceTree = SOURCE_ROOT; };
87D5F938A115568F9CF3BE5A /* Security.framework */ /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
@ -147,11 +151,11 @@
C64CA4082EC267CDD63E6623 /* juce_javascript */ /* juce_javascript */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_javascript; path = ../../../../modules/juce_javascript; sourceTree = SOURCE_ROOT; };
CB4C64BACC1CA4AAD6D69565 /* include_juce_animation.cpp */ /* include_juce_animation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_animation.cpp; path = ../../JuceLibraryCode/include_juce_animation.cpp; sourceTree = SOURCE_ROOT; };
CCC8AEBCE55002F970222BAD /* include_juce_graphics_Sheenbidi.c */ /* include_juce_graphics_Sheenbidi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = include_juce_graphics_Sheenbidi.c; path = ../../JuceLibraryCode/include_juce_graphics_Sheenbidi.c; sourceTree = SOURCE_ROOT; };
CDFBB9C6A2AE67CE9EE00949 /* demorunnerplay.svg */ /* demorunnerplay.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = demorunnerplay.svg; path = ../../Source/AppIcon.icon/Assets/demorunnerplay.svg; sourceTree = SOURCE_ROOT; };
CE38E6469D98462A2C22C915 /* include_juce_osc.cpp */ /* include_juce_osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_osc.cpp; path = ../../JuceLibraryCode/include_juce_osc.cpp; sourceTree = SOURCE_ROOT; };
CFF2BBEB242CC8B3B904B5F9 /* App */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoRunner.app; sourceTree = BUILT_PRODUCTS_DIR; };
DC192EFA899E6CBE6B5CD394 /* AVFoundation.framework */ /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
E061A1C75FA5722167FC4997 /* include_juce_audio_formats.mm */ /* include_juce_audio_formats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_formats.mm; path = ../../JuceLibraryCode/include_juce_audio_formats.mm; sourceTree = SOURCE_ROOT; };
E0A3F113BC27B7B4D6F1D693 /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
E5BFC17E682AB426D203B3E6 /* DemoContentComponent.cpp */ /* DemoContentComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DemoContentComponent.cpp; path = ../../Source/UI/DemoContentComponent.cpp; sourceTree = SOURCE_ROOT; };
E67AB94002886AF67437D6AE /* include_juce_audio_processors.mm */ /* include_juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors.mm; path = ../../JuceLibraryCode/include_juce_audio_processors.mm; sourceTree = SOURCE_ROOT; };
EB68BD1224CD9748BFA332C0 /* MainComponent.h */ /* MainComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainComponent.h; path = ../../Source/UI/MainComponent.h; sourceTree = SOURCE_ROOT; };
@ -162,6 +166,7 @@
F5F2EA2238973488632FC322 /* include_juce_data_structures.mm */ /* include_juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_data_structures.mm; path = ../../JuceLibraryCode/include_juce_data_structures.mm; sourceTree = SOURCE_ROOT; };
FB1FC613CE260140F1CFD21B /* juce_events */ /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = ../../../../modules/juce_events; sourceTree = SOURCE_ROOT; };
FCD0D758C5767944BEC29730 /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; };
FCF36E57A88C67133AFC06A4 /* AppIcon.icon */ /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = file.icon; name = AppIcon.icon; path = ../../Source/AppIcon.icon; sourceTree = SOURCE_ROOT; };
FDC3CA8D1403C169659F7D8C /* juce_data_structures */ /* juce_data_structures */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_data_structures; path = ../../../../modules/juce_data_structures; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
@ -195,6 +200,15 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
2BAD3DB7D8D886E59B412094 /* Assets */ = {
isa = PBXGroup;
children = (
6710661E16D6BD412524EB52,
CDFBB9C6A2AE67CE9EE00949,
);
name = Assets;
sourceTree = "<group>";
};
4452EAA652B65A9AE648288C /* Frameworks */ = {
isa = PBXGroup;
children = (
@ -293,6 +307,7 @@
CD575607FAA297480EE95F13,
BB12537403CC24C02622582C,
260481E972425474BB8155B0,
B88D35BF4F1EAC840B967834,
ECE79F1433E92BB6213C86F5,
);
name = Source;
@ -319,6 +334,15 @@
name = DemoRunner;
sourceTree = "<group>";
};
B88D35BF4F1EAC840B967834 /* AppIcon.icon */ = {
isa = PBXGroup;
children = (
2BAD3DB7D8D886E59B412094,
7D51C1884CE8FB235D31921B,
);
name = AppIcon.icon;
sourceTree = "<group>";
};
BB12537403CC24C02622582C /* UI */ = {
isa = PBXGroup;
children = (
@ -361,7 +385,8 @@
7B3243C92248D379A0489AA4,
4EC2782DE1779A130835B64D,
9672FCE6167ADB567A9EB2F8,
E0A3F113BC27B7B4D6F1D693,
68A0F49281B13E51489A6874,
FCF36E57A88C67133AFC06A4,
);
name = Resources;
sourceTree = "<group>";
@ -447,7 +472,8 @@
1BA301E39E29966719B710A1,
E33E8FE2E7F8EC8EB4279F1B,
91CD2BCE4CA07E18229EB436,
75DB074DBAE04408A0A917B7,
675BFB499A7E0AAD2614F529,
7648F1C856593D10FE42CF80,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -549,6 +575,7 @@
69330F27DD2C71609336C7D2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
@ -645,6 +672,7 @@
B18D059E5616FA729F764229 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;

View file

@ -12,7 +12,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>Icon.icns</string>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.rmsl.jucedemorunner</string>
<key>CFBundleName</key>

View file

@ -4912,6 +4912,9 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerbg.svg"/>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerplay.svg"/>
<None Include="..\..\Source\AppIcon.icon\icon.json"/>
<None Include="..\..\Source\JUCEAppIcon.png"/>
<None Include="..\..\..\..\modules\juce_audio_devices\native\asio\LICENSE.txt"/>
<None Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\common\README.md"/>

View file

@ -8,6 +8,12 @@
<Filter Include="DemoRunner\Source\UI">
<UniqueIdentifier>{67AC4BA4-ADB7-61F2-40EB-054BFA2565E9}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source\AppIcon.icon\Assets">
<UniqueIdentifier>{582D7890-88DE-64AF-4B99-546B272ADAC5}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source\AppIcon.icon">
<UniqueIdentifier>{2E0E5C08-9649-C07C-383E-3497456B1834}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source">
<UniqueIdentifier>{8C2BA468-929C-4792-FBD2-3009E3068DD0}</UniqueIdentifier>
</Filter>
@ -8939,6 +8945,15 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerbg.svg">
<Filter>DemoRunner\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerplay.svg">
<Filter>DemoRunner\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\icon.json">
<Filter>DemoRunner\Source\AppIcon.icon</Filter>
</None>
<None Include="..\..\Source\JUCEAppIcon.png">
<Filter>DemoRunner\Source</Filter>
</None>

View file

@ -4912,6 +4912,9 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerbg.svg"/>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerplay.svg"/>
<None Include="..\..\Source\AppIcon.icon\icon.json"/>
<None Include="..\..\Source\JUCEAppIcon.png"/>
<None Include="..\..\..\..\modules\juce_audio_devices\native\asio\LICENSE.txt"/>
<None Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\common\README.md"/>

View file

@ -8,6 +8,12 @@
<Filter Include="DemoRunner\Source\UI">
<UniqueIdentifier>{67AC4BA4-ADB7-61F2-40EB-054BFA2565E9}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source\AppIcon.icon\Assets">
<UniqueIdentifier>{582D7890-88DE-64AF-4B99-546B272ADAC5}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source\AppIcon.icon">
<UniqueIdentifier>{2E0E5C08-9649-C07C-383E-3497456B1834}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source">
<UniqueIdentifier>{8C2BA468-929C-4792-FBD2-3009E3068DD0}</UniqueIdentifier>
</Filter>
@ -8939,6 +8945,15 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerbg.svg">
<Filter>DemoRunner\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerplay.svg">
<Filter>DemoRunner\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\icon.json">
<Filter>DemoRunner\Source\AppIcon.icon</Filter>
</None>
<None Include="..\..\Source\JUCEAppIcon.png">
<Filter>DemoRunner\Source</Filter>
</None>

View file

@ -4912,6 +4912,9 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerbg.svg"/>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerplay.svg"/>
<None Include="..\..\Source\AppIcon.icon\icon.json"/>
<None Include="..\..\Source\JUCEAppIcon.png"/>
<None Include="..\..\..\..\modules\juce_audio_devices\native\asio\LICENSE.txt"/>
<None Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\common\README.md"/>

View file

@ -8,6 +8,12 @@
<Filter Include="DemoRunner\Source\UI">
<UniqueIdentifier>{67AC4BA4-ADB7-61F2-40EB-054BFA2565E9}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source\AppIcon.icon\Assets">
<UniqueIdentifier>{582D7890-88DE-64AF-4B99-546B272ADAC5}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source\AppIcon.icon">
<UniqueIdentifier>{2E0E5C08-9649-C07C-383E-3497456B1834}</UniqueIdentifier>
</Filter>
<Filter Include="DemoRunner\Source">
<UniqueIdentifier>{8C2BA468-929C-4792-FBD2-3009E3068DD0}</UniqueIdentifier>
</Filter>
@ -8939,6 +8945,15 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerbg.svg">
<Filter>DemoRunner\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\Assets\demorunnerplay.svg">
<Filter>DemoRunner\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\icon.json">
<Filter>DemoRunner\Source\AppIcon.icon</Filter>
</None>
<None Include="..\..\Source\JUCEAppIcon.png">
<Filter>DemoRunner\Source</Filter>
</None>

View file

@ -35,11 +35,12 @@
611298FAC1A543BDD10D4C41 /* include_juce_box2d.cpp */ = {isa = PBXBuildFile; fileRef = 4DF215D350FFE5E119CBA7E5; };
63A2F309E55DAC206E9B97E3 /* App */ = {isa = PBXBuildFile; fileRef = CFF2BBEB242CC8B3B904B5F9; };
6658EEC5F9D63D3419EB7098 /* CoreServices.framework */ = {isa = PBXBuildFile; fileRef = E07FC48041C3E9F9721F3BCE; };
675BFB499A7E0AAD2614F529 /* AppIcon.icns */ = {isa = PBXBuildFile; fileRef = 68A0F49281B13E51489A6874; };
6A61CBB4E39BFD392D97528F /* CoreMIDI.framework */ = {isa = PBXBuildFile; fileRef = 61AE09C749B007B70A265D9B; };
6B5560283DEEBD6DD2D6C984 /* include_juce_dsp.mm */ = {isa = PBXBuildFile; fileRef = C1E93FAF6C68A40A664422CD; };
712D81867EC698463252FA79 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = EDDA01B246C6128CAF7A2914; };
71DF4F5EB4C8305688416725 /* DemoContentComponent.cpp */ = {isa = PBXBuildFile; fileRef = E5BFC17E682AB426D203B3E6; };
75DB074DBAE04408A0A917B7 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = E0A3F113BC27B7B4D6F1D693; };
7648F1C856593D10FE42CF80 /* AppIcon.icon */ = {isa = PBXBuildFile; fileRef = FCF36E57A88C67133AFC06A4; };
7B4163348896EB1B86B15160 /* AVFoundation.framework */ = {isa = PBXBuildFile; fileRef = DC192EFA899E6CBE6B5CD394; };
7F57DB52C3CEFDC26DDD38FC /* CoreImage.framework */ = {isa = PBXBuildFile; fileRef = B28EFB9D1DF0B6D6499A7DEF; };
89AD16514B1F4133FFEA1DF9 /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = 96D99A08027CA35D6A4E5CFD; };
@ -111,14 +112,17 @@
61AE09C749B007B70A265D9B /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
640B7C54D35F5DF408327886 /* include_juce_core_CompilationTime.cpp */ /* include_juce_core_CompilationTime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_core_CompilationTime.cpp; path = ../../JuceLibraryCode/include_juce_core_CompilationTime.cpp; sourceTree = SOURCE_ROOT; };
651ECE3C7BA845DDCFEE48F3 /* juce_osc */ /* juce_osc */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_osc; path = ../../../../modules/juce_osc; sourceTree = SOURCE_ROOT; };
6710661E16D6BD412524EB52 /* demorunnerbg.svg */ /* demorunnerbg.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = demorunnerbg.svg; path = ../../Source/AppIcon.icon/Assets/demorunnerbg.svg; sourceTree = SOURCE_ROOT; };
6847A9B2C5E3C2ED56D8D4E7 /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; };
685A261BE78585293F3EAD36 /* Assets */ /* Assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Assets; path = ../../../Assets; sourceTree = "<group>"; };
68A0F49281B13E51489A6874 /* AppIcon.icns */ /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = AppIcon.icns; path = AppIcon.icns; sourceTree = SOURCE_ROOT; };
6C198AF93E1F6E682189E2F6 /* juce_opengl */ /* juce_opengl */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_opengl; path = ../../../../modules/juce_opengl; sourceTree = SOURCE_ROOT; };
6C2C1AC86623F457427965EF /* juce_box2d */ /* juce_box2d */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_box2d; path = ../../../../modules/juce_box2d; sourceTree = SOURCE_ROOT; };
6C5E26B4D28F8450435B8AE1 /* include_juce_cryptography.mm */ /* include_juce_cryptography.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_cryptography.mm; path = ../../JuceLibraryCode/include_juce_cryptography.mm; sourceTree = SOURCE_ROOT; };
76A157A111866670A4678F04 /* CoreGraphics.framework */ /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
7983C452610C1638B7E78F12 /* ImageIO.framework */ /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
7A5AAE9EE573FC6105CC4AAC /* SettingsContent.h */ /* SettingsContent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SettingsContent.h; path = ../../Source/UI/SettingsContent.h; sourceTree = SOURCE_ROOT; };
7D51C1884CE8FB235D31921B /* icon.json */ /* icon.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = icon.json; path = ../../Source/AppIcon.icon/icon.json; sourceTree = SOURCE_ROOT; };
7FBD555B32197FEACDFF5AFB /* LaunchScreen.storyboard */ /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = LaunchScreen.storyboard; sourceTree = SOURCE_ROOT; };
8135645508EEFDBDCDF2ADC6 /* Images.xcassets */ /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DemoRunner/Images.xcassets; sourceTree = SOURCE_ROOT; };
8447FC9882D85E6DAF0A4852 /* juce_animation */ /* juce_animation */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_animation; path = ../../../../modules/juce_animation; sourceTree = SOURCE_ROOT; };
@ -146,12 +150,12 @@
C64CA4082EC267CDD63E6623 /* juce_javascript */ /* juce_javascript */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_javascript; path = ../../../../modules/juce_javascript; sourceTree = SOURCE_ROOT; };
CB4C64BACC1CA4AAD6D69565 /* include_juce_animation.cpp */ /* include_juce_animation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_animation.cpp; path = ../../JuceLibraryCode/include_juce_animation.cpp; sourceTree = SOURCE_ROOT; };
CCC8AEBCE55002F970222BAD /* include_juce_graphics_Sheenbidi.c */ /* include_juce_graphics_Sheenbidi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = include_juce_graphics_Sheenbidi.c; path = ../../JuceLibraryCode/include_juce_graphics_Sheenbidi.c; sourceTree = SOURCE_ROOT; };
CDFBB9C6A2AE67CE9EE00949 /* demorunnerplay.svg */ /* demorunnerplay.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = demorunnerplay.svg; path = ../../Source/AppIcon.icon/Assets/demorunnerplay.svg; sourceTree = SOURCE_ROOT; };
CE38E6469D98462A2C22C915 /* include_juce_osc.cpp */ /* include_juce_osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_osc.cpp; path = ../../JuceLibraryCode/include_juce_osc.cpp; sourceTree = SOURCE_ROOT; };
CFF2BBEB242CC8B3B904B5F9 /* App */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoRunner.app; sourceTree = BUILT_PRODUCTS_DIR; };
DC192EFA899E6CBE6B5CD394 /* AVFoundation.framework */ /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
E061A1C75FA5722167FC4997 /* include_juce_audio_formats.mm */ /* include_juce_audio_formats.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_formats.mm; path = ../../JuceLibraryCode/include_juce_audio_formats.mm; sourceTree = SOURCE_ROOT; };
E07FC48041C3E9F9721F3BCE /* CoreServices.framework */ /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
E0A3F113BC27B7B4D6F1D693 /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
E5BFC17E682AB426D203B3E6 /* DemoContentComponent.cpp */ /* DemoContentComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DemoContentComponent.cpp; path = ../../Source/UI/DemoContentComponent.cpp; sourceTree = SOURCE_ROOT; };
E67AB94002886AF67437D6AE /* include_juce_audio_processors.mm */ /* include_juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors.mm; path = ../../JuceLibraryCode/include_juce_audio_processors.mm; sourceTree = SOURCE_ROOT; };
EB68BD1224CD9748BFA332C0 /* MainComponent.h */ /* MainComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainComponent.h; path = ../../Source/UI/MainComponent.h; sourceTree = SOURCE_ROOT; };
@ -163,6 +167,7 @@
F90C8B0233A54F1445343F67 /* UIKit.framework */ /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
FB1FC613CE260140F1CFD21B /* juce_events */ /* juce_events */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_events; path = ../../../../modules/juce_events; sourceTree = SOURCE_ROOT; };
FCD0D758C5767944BEC29730 /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; };
FCF36E57A88C67133AFC06A4 /* AppIcon.icon */ /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = file.icon; name = AppIcon.icon; path = ../../Source/AppIcon.icon; sourceTree = SOURCE_ROOT; };
FDC3CA8D1403C169659F7D8C /* juce_data_structures */ /* juce_data_structures */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_data_structures; path = ../../../../modules/juce_data_structures; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
@ -199,6 +204,15 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
2BAD3DB7D8D886E59B412094 /* Assets */ = {
isa = PBXGroup;
children = (
6710661E16D6BD412524EB52,
CDFBB9C6A2AE67CE9EE00949,
);
name = Assets;
sourceTree = "<group>";
};
4452EAA652B65A9AE648288C /* Frameworks */ = {
isa = PBXGroup;
children = (
@ -300,6 +314,7 @@
CD575607FAA297480EE95F13,
BB12537403CC24C02622582C,
260481E972425474BB8155B0,
B88D35BF4F1EAC840B967834,
ECE79F1433E92BB6213C86F5,
);
name = Source;
@ -326,6 +341,15 @@
name = DemoRunner;
sourceTree = "<group>";
};
B88D35BF4F1EAC840B967834 /* AppIcon.icon */ = {
isa = PBXGroup;
children = (
2BAD3DB7D8D886E59B412094,
7D51C1884CE8FB235D31921B,
);
name = AppIcon.icon;
sourceTree = "<group>";
};
BB12537403CC24C02622582C /* UI */ = {
isa = PBXGroup;
children = (
@ -365,7 +389,8 @@
4EC2782DE1779A130835B64D,
8135645508EEFDBDCDF2ADC6,
7FBD555B32197FEACDFF5AFB,
E0A3F113BC27B7B4D6F1D693,
68A0F49281B13E51489A6874,
FCF36E57A88C67133AFC06A4,
);
name = Resources;
sourceTree = "<group>";
@ -451,7 +476,8 @@
47ED2C78B05B8A6A00E36C46,
8E63755144E29269FD82C897,
1C9AA8660D0DE180064ACF7B,
75DB074DBAE04408A0A917B7,
675BFB499A7E0AAD2614F529,
7648F1C856593D10FE42CF80,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -22,6 +22,7 @@
juce_add_gui_app(DemoRunner
BUNDLE_ID com.juce.demorunner
ICON_BIG ${CMAKE_CURRENT_SOURCE_DIR}/Source/JUCEAppIcon.png
ICON_COMPOSER_BUNDLE "${CMAKE_CURRENT_SOURCE_DIR}/Source/AppIcon.icon"
NEEDS_CURL TRUE
NEEDS_WEB_BROWSER TRUE
MICROPHONE_PERMISSION_ENABLED TRUE

View file

@ -28,6 +28,15 @@
file="Source/UI/SettingsContent.h"/>
</GROUP>
<FILE id="fcr468" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>
<GROUP id="{4855AA6F-818F-EDED-5367-117FE2CF41F4}" name="AppIcon.icon">
<GROUP id="{019A2775-58CE-001B-D28C-4D24E24823BD}" name="Assets">
<FILE id="t8hFrS" name="demorunnerbg.svg" compile="0" resource="0"
file="Source/AppIcon.icon/Assets/demorunnerbg.svg"/>
<FILE id="cBIleJ" name="demorunnerplay.svg" compile="0" resource="0"
file="Source/AppIcon.icon/Assets/demorunnerplay.svg"/>
</GROUP>
<FILE id="a17hwW" name="icon.json" compile="0" resource="0" file="Source/AppIcon.icon/icon.json"/>
</GROUP>
<FILE id="YyqWd2" name="JUCEAppIcon.png" compile="0" resource="0" file="Source/JUCEAppIcon.png"/>
</GROUP>
</MAINGROUP>
@ -36,7 +45,7 @@
customXcodeResourceFolders="../Assets&#10;../Audio &#10;../DSP &#10;../GUI &#10;../Utilities"
microphonePermissionNeeded="1" cameraPermissionNeeded="1" applicationCategory="public.app-category.developer-tools"
iosBluetoothPermissionNeeded="1" extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1"
extraLinkerFlags="-Wl,-weak_reference_mismatches,weak">
extraLinkerFlags="-Wl,-weak_reference_mismatches,weak" iconComposerIcon="a17hwW">
<CONFIGURATIONS>
<CONFIGURATION isDebug="1" name="Debug" recommendedWarnings="LLVM"/>
<CONFIGURATION isDebug="0" name="Release" recommendedWarnings="LLVM"/>
@ -141,7 +150,7 @@
iosBluetoothPermissionNeeded="1" iosScreenOrientation="UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight,UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown"
iPadScreenOrientation="UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight,UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown"
UIRequiresFullScreen="0" extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1"
extraLinkerFlags="-Wl,-weak_reference_mismatches,weak">
extraLinkerFlags="-Wl,-weak_reference_mismatches,weak" iconComposerIcon="a17hwW">
<CONFIGURATIONS>
<CONFIGURATION isDebug="1" name="Debug" recommendedWarnings="LLVM"/>
<CONFIGURATION isDebug="0" name="Release" recommendedWarnings="LLVM"/>

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1024"
height="1024"
viewBox="0 0 1024 1024"
version="1.1"
id="svg10"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs10" /><path
id="ellipse1"
style="opacity:1;fill:#8dc63f;stroke:none;stroke-width:0;stroke-dasharray:none"
d="M 512,102 A 410,410 0 0 0 102,512 410,410 0 0 0 512,922 410,410 0 0 0 922,512 410,410 0 0 0 512,102 Z m 0,60.29412 A 349.70588,349.70588 0 0 1 861.70588,512 349.70588,349.70588 0 0 1 512,861.70588 349.70588,349.70588 0 0 1 162.29412,512 349.70588,349.70588 0 0 1 512,162.29412 Z" /><path
d="m 557.74075,584.53575 c 24.52179,61.52243 51.27562,122.92312 84.24282,184.1717 a 42.226977,42.597119 0 0 0 61.04816,14.33089 331.7834,334.69165 0 0 0 85.3588,-87.71966 41.44276,41.80603 0 0 0 -22.95337,-63.13498 C 700.1663,612.43688 639.63092,588.12608 580.60365,562.50697 a 17.132088,17.282259 0 0 0 -22.8629,22.02878 z"
fill="#f3bd48"
id="path2"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 590.91909,532.71941 c 62.04349,26.86661 125.47444,52.18148 194.15361,72.08042 a 42.226977,42.597119 0 0 0 53.17582,-33.13449 327.95279,330.82747 0 0 0 -1.11599,-125.08337 42.226977,42.597119 0 0 0 -60.86718,-28.87477 c -61.77205,32.61722 -123.42342,58.90573 -184.924,83.24695 a 16.981278,17.130126 0 0 0 -0.42226,31.76526 z"
fill="#f09f53"
id="path3"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="M 527.57862,592.75092 A 17.252737,17.403965 0 0 0 495.8179,592.2641 c -26.8443,61.88755 -52.08998,125.11382 -71.96685,193.51262 a 41.774545,42.14072 0 0 0 33.41965,53.33768 339.23342,342.20698 0 0 0 54.8649,4.50313 335.40285,338.34283 0 0 0 69.01096,-7.18067 41.71422,42.079868 0 0 0 28.74449,-60.85301 C 577.5271,714.54826 551.4972,653.57352 527.57862,592.75092 Z"
fill="#ecdc13"
id="path4"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 499.58815,434.0158 a 17.252737,17.403965 0 0 0 31.76075,0.48684 c 27.14588,-62.49607 52.5424,-126.45259 72.38908,-195.73377 a 41.834868,42.201575 0 0 0 -33.17835,-53.21597 337.81583,340.77695 0 0 0 -125.98718,1.67347 41.684058,42.04944 0 0 0 -28.5937,60.82258 c 32.69575,62.16137 59.14793,124.14018 83.6094,185.96685 z"
fill="#a95a96"
id="path5"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 255.90835,396.80418 c 68.10609,20.47704 131.05444,45.94405 192.49468,72.74979 A 17.132088,17.282259 0 0 0 471.23578,447.4339 C 445.68845,382.96012 418.05993,318.60804 383.22269,254.37768 a 42.226977,42.597119 0 0 0 -61.04814,-14.33088 332.35645,335.26975 0 0 0 -89.94346,93.86578 41.653895,42.019015 0 0 0 23.67726,62.8916 z"
fill="#2b8ec1"
id="path6"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 466.62096,580.54989 a 17.132088,17.282259 0 0 0 -22.13901,-22.81987 c -62.82768,25.0106 -125.53475,51.99891 -188.091,85.86361 a 41.44276,41.80603 0 0 0 -14.14604,61.279 331.99452,334.90464 0 0 0 90.87849,86.44172 42.226977,42.597119 0 0 0 62.73722,-23.21542 c 20.11813,-66.26896 44.73043,-127.54796 70.76034,-187.54904 z"
fill="#add14c"
id="path7"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 559.45998,448.31627 a 17.101925,17.251833 0 0 0 22.10885,22.85033 c 63.15947,-25.1019 126.16815,-52.33362 189.05622,-86.44174 a 41.503085,41.866882 0 0 0 14.50797,-60.85303 332.17549,335.08718 0 0 0 -90.75785,-88.84542 42.226977,42.597119 0 0 0 -63.12932,23.00245 C 610.97689,325.33231 585.882,387.58495 559.45998,448.31627 Z"
fill="#e74253"
id="path8"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="M 433.11085,497.02912 C 370.73557,469.97994 307.03316,444.57381 238.02221,424.52273 a 42.226977,42.597119 0 0 0 -53.29647,33.46918 331.2103,334.11355 0 0 0 -4.34335,53.85492 327.28923,330.1581 0 0 0 7.84216,71.98912 42.046003,42.41456 0 0 0 60.59571,27.62728 c 61.34976,-32.43465 122.60904,-58.63191 183.77781,-82.82097 a 16.981278,17.130126 0 0 0 0.51278,-31.61314 z"
fill="#01b699"
id="path9"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1024"
height="1024"
viewBox="0 0 1024 1024"
version="1.1"
id="svg10"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs10" /><path
id="path10"
style="baseline-shift:baseline;display:inline;overflow:visible;opacity:1;fill:#ffffff;stroke:none;stroke-width:0;stroke-linejoin:round;stroke-dasharray:none;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
d="m 423.56078,298.30917 c -29.46344,1.49229 -56.33329,26.03664 -55.6013,58.42759 l 7.05392,312.06918 c 0.97599,43.18795 50.336,70.22114 87.24983,47.7819 L 729.00583,554.4414 c 36.91384,-22.43922 35.64059,-78.70127 -2.24927,-99.44996 L 452.96592,305.06281 c -9.47244,-5.18717 -19.58398,-7.25107 -29.40514,-6.75364 z" /></svg>

After

Width:  |  Height:  |  Size: 860 B

View file

@ -0,0 +1,50 @@
{
"fill" : "system-light",
"groups" : [
{
"blur-material" : 0.5,
"hidden" : false,
"layers" : [
{
"glass" : true,
"hidden" : false,
"image-name" : "demorunnerplay.svg",
"name" : "demorunnerplay",
"opacity" : 1
}
],
"opacity" : 1,
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : true,
"value" : 0.6
}
},
{
"blur-material" : null,
"layers" : [
{
"hidden" : false,
"image-name" : "demorunnerbg.svg",
"name" : "demorunnerbg"
}
],
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : false,
"value" : 0
}
}
],
"supported-platforms" : {
"squares" : "shared"
}
}

View file

@ -9,7 +9,8 @@
microphonePermissionNeeded="1" sendAppleEventsPermissionNeeded="1"
sendAppleEventsPermissionText="This is required for some third-party plug-ins to function correctly."
customXcodeResourceFolders="../../examples/Assets" applicationCategory="public.app-category.developer-tools"
extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1" extraLinkerFlags="-Wl,-weak_reference_mismatches,weak">
extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1" extraLinkerFlags="-Wl,-weak_reference_mismatches,weak"
iconComposerIcon="XbiViB">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" isDebug="1" targetName="AudioPluginHost" recommendedWarnings="LLVM"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="AudioPluginHost"
@ -131,7 +132,8 @@
<XCODE_IPHONE targetFolder="Builds/iOS" iosScreenOrientation="" iPadScreenOrientation=""
iosDeviceFamily="1,2" microphonePermissionNeeded="1" iosBackgroundAudio="1"
iosBackgroundBle="1" smallIcon="c97aUr" bigIcon="c97aUr" customXcodeResourceFolders="../../examples/Assets"
extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1" extraLinkerFlags="-Wl,-weak_reference_mismatches,weak">
extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1" extraLinkerFlags="-Wl,-weak_reference_mismatches,weak"
iconComposerIcon="XbiViB">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" enablePluginBinaryCopyStep="1" isDebug="1" optimisation="1"
linkTimeOptimisation="0" targetName="Plugin Host" recommendedWarnings="LLVM"/>
@ -213,6 +215,14 @@
<FILE id="ygZQZ1" name="PluginWindow.h" compile="0" resource="0" file="Source/UI/PluginWindow.h"/>
</GROUP>
<FILE id="OmIhwQ" name="HostStartup.cpp" compile="1" resource="0" file="Source/HostStartup.cpp"/>
<GROUP id="{01F39B17-CE35-0084-0EB9-0A5568EA6D44}" name="AppIcon.icon">
<GROUP id="{33FB5817-3017-E31C-F692-79C18943F756}" name="Assets">
<FILE id="Qqb1Ar" name="juceicon.svg" compile="0" resource="0" file="Source/AppIcon.icon/Assets/juceicon.svg"/>
<FILE id="quO9K9" name="pluginhostfg.svg" compile="0" resource="0"
file="Source/AppIcon.icon/Assets/pluginhostfg.svg"/>
</GROUP>
<FILE id="XbiViB" name="icon.json" compile="0" resource="0" file="Source/AppIcon.icon/icon.json"/>
</GROUP>
<FILE id="c97aUr" name="JUCEAppIcon.png" compile="0" resource="0" file="Source/JUCEAppIcon.png"/>
</GROUP>
<GROUP id="{63C773C8-4305-87DD-DB3F-6D1143EFEC61}" name="BinaryData">

View file

@ -64,6 +64,9 @@ add_library( ${BINARY_NAME}
"../../../Source/UI/MainHostWindow.h"
"../../../Source/UI/PluginWindow.h"
"../../../Source/HostStartup.cpp"
"../../../Source/AppIcon.icon/Assets/juceicon.svg"
"../../../Source/AppIcon.icon/Assets/pluginhostfg.svg"
"../../../Source/AppIcon.icon/icon.json"
"../../../Source/JUCEAppIcon.png"
"../../../../../examples/Assets/cassette_recorder.wav"
"../../../../../examples/Assets/cello.wav"
@ -2552,6 +2555,9 @@ set_source_files_properties(
"../../../Source/UI/GraphEditorPanel.h"
"../../../Source/UI/MainHostWindow.h"
"../../../Source/UI/PluginWindow.h"
"../../../Source/AppIcon.icon/Assets/juceicon.svg"
"../../../Source/AppIcon.icon/Assets/pluginhostfg.svg"
"../../../Source/AppIcon.icon/icon.json"
"../../../Source/JUCEAppIcon.png"
"../../../../../examples/Assets/cassette_recorder.wav"
"../../../../../examples/Assets/cello.wav"

View file

@ -14,6 +14,7 @@
09309BD494A05931864B6730 /* PluginGraph.cpp */ = {isa = PBXBuildFile; fileRef = 0B1CC8C80F6F99BDE7D6AEC9; };
0F20A4AE04736634F097F5A6 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = B285CAB91AE928C476CA4F9C; };
15CCE43D7DCFC649638919D4 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; };
17928C3B79A379E4C6029D3E /* AppIcon.icon */ = {isa = PBXBuildFile; fileRef = 8D0F99961E3A2FF09E7D2DEC; };
19BE669F744C58C9B8742649 /* include_juce_graphics_Harfbuzz.cpp */ = {isa = PBXBuildFile; fileRef = E19F52E4D8928B850832C57F; };
1AD3A3C7CD2D1F6DC4B65205 /* Metal.framework */ = {isa = PBXBuildFile; fileRef = 3E94492697BD64D0F185D60E; settings = { ATTRIBUTES = (Weak, ); }; };
21D330A5B13178B12BEAFC3C /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = D4EBC17BDB7F88CCBC76730B; };
@ -21,7 +22,6 @@
2C3D221D2AA87F07B3F1044D /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 8FE7B37CDE0818DB27BDDEBD; };
3154B78F0813DBD8A2C9234D /* include_juce_audio_processors_headless.mm */ = {isa = PBXBuildFile; fileRef = DAB71FA843B80756B5521A4E; };
3E1689E23B9C85F03209DCEF /* GraphEditorPanel.cpp */ = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; };
443244451A0F2064D4767337 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; };
4DB15177DDC357F4503F88CF /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = B457EE687507BF1DEEA7581F; };
5C4D406B924230F83E3580AD /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = 65968EA1B476D71F14DE1D58; };
68FBFDA1FE637B3EDA09A592 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 4DF6E6E41E10965AD169143B; };
@ -33,6 +33,7 @@
8390CF6AEF2090680E4535F7 /* MetalKit.framework */ = {isa = PBXBuildFile; fileRef = 118ABD8E91DF2E400358D8CD; settings = { ATTRIBUTES = (Weak, ); }; };
8DD3EB0C33E3E7B30C086034 /* include_juce_audio_processors_headless_ara.cpp */ = {isa = PBXBuildFile; fileRef = A83A4730C7AC85876911E149; };
9056B642BEF870098DE344E5 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = 03FA420AACDD03D50AA16E4A; };
937574F3E6597DC4573F370E /* AppIcon.icns */ = {isa = PBXBuildFile; fileRef = 6FDEDC8A2EE1095C83DCAF09; };
970A893BD34180916C9D01C4 /* ARAPlugin.cpp */ = {isa = PBXBuildFile; fileRef = 6A01D5F304346E0332264056; };
A0144A682BF4843C8CF53FE4 /* BinaryData.cpp */ = {isa = PBXBuildFile; fileRef = 6D107D7946DC5976B766345B; };
A02C9F4C4B840C27B6CAFEBD /* QuartzCore.framework */ = {isa = PBXBuildFile; fileRef = 89309C0C5F3269BD06BE7F27; };
@ -64,9 +65,9 @@
0B1CC8C80F6F99BDE7D6AEC9 /* PluginGraph.cpp */ /* PluginGraph.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginGraph.cpp; path = ../../Source/Plugins/PluginGraph.cpp; sourceTree = SOURCE_ROOT; };
118ABD8E91DF2E400358D8CD /* MetalKit.framework */ /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
11E6340DB6A6F68F5040101B /* reverb_ir.wav */ /* reverb_ir.wav */ = {isa = PBXFileReference; lastKnownFileType = file.wav; name = reverb_ir.wav; path = ../../../../examples/Assets/reverb_ir.wav; sourceTree = SOURCE_ROOT; };
16F7FAF232A9DA67E656C776 /* juceicon.svg */ /* juceicon.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = juceicon.svg; path = ../../Source/AppIcon.icon/Assets/juceicon.svg; sourceTree = SOURCE_ROOT; };
17A29FEB16D4439351511947 /* guitar_amp.wav */ /* guitar_amp.wav */ = {isa = PBXFileReference; lastKnownFileType = file.wav; name = guitar_amp.wav; path = ../../../../examples/Assets/guitar_amp.wav; sourceTree = SOURCE_ROOT; };
1DADAD8E34AAF4AFF1C69DC4 /* BinaryData.h */ /* BinaryData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = SOURCE_ROOT; };
2A6983F82B13F9E8B10299AE /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
2BE6C2DFD6EBB9A89109AEB5 /* include_juce_gui_extra.mm */ /* include_juce_gui_extra.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_extra.mm; path = ../../JuceLibraryCode/include_juce_gui_extra.mm; sourceTree = SOURCE_ROOT; };
36689CA4EFC2AF183A0848AE /* include_juce_dsp.mm */ /* include_juce_dsp.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_dsp.mm; path = ../../JuceLibraryCode/include_juce_dsp.mm; sourceTree = SOURCE_ROOT; };
37E4D5C341406B7072120006 /* include_juce_opengl.mm */ /* include_juce_opengl.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_opengl.mm; path = ../../JuceLibraryCode/include_juce_opengl.mm; sourceTree = SOURCE_ROOT; };
@ -93,6 +94,8 @@
6A01D5F304346E0332264056 /* ARAPlugin.cpp */ /* ARAPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ARAPlugin.cpp; path = ../../Source/Plugins/ARAPlugin.cpp; sourceTree = SOURCE_ROOT; };
6A71B2BCAC4239072BC2BD7E /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; };
6D107D7946DC5976B766345B /* BinaryData.cpp */ /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
6FDEDC8A2EE1095C83DCAF09 /* AppIcon.icns */ /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = AppIcon.icns; path = AppIcon.icns; sourceTree = SOURCE_ROOT; };
7294E2139555BCA6E58BC4CB /* icon.json */ /* icon.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = icon.json; path = ../../Source/AppIcon.icon/icon.json; sourceTree = SOURCE_ROOT; };
7DA35787B5F6F7440D667CC8 /* RecentFilesMenuTemplate.nib */ /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; };
81C1A7770E082F56FE5A90A7 /* juce_opengl */ /* juce_opengl */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_opengl; path = ../../../../modules/juce_opengl; sourceTree = SOURCE_ROOT; };
82800DBA287EF4BAB13B42FB /* include_juce_graphics.mm */ /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; };
@ -101,6 +104,7 @@
87A7AAB053051C49EAF4EE88 /* InternalPlugins.cpp */ /* InternalPlugins.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InternalPlugins.cpp; path = ../../Source/Plugins/InternalPlugins.cpp; sourceTree = SOURCE_ROOT; };
89309C0C5F3269BD06BE7F27 /* QuartzCore.framework */ /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
8AE5B3D0B3DE53FC27B9E88F /* include_juce_audio_processors_headless_lv2_libs.cpp */ /* include_juce_audio_processors_headless_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_headless_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_headless_lv2_libs.cpp; sourceTree = SOURCE_ROOT; };
8D0F99961E3A2FF09E7D2DEC /* AppIcon.icon */ /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = file.icon; name = AppIcon.icon; path = ../../Source/AppIcon.icon; sourceTree = SOURCE_ROOT; };
8D8BBC353637DA442C5575DA /* App */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AudioPluginHost.app; sourceTree = BUILT_PRODUCTS_DIR; };
8FE7B37CDE0818DB27BDDEBD /* include_juce_gui_basics.mm */ /* include_juce_gui_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_basics.mm; path = ../../JuceLibraryCode/include_juce_gui_basics.mm; sourceTree = SOURCE_ROOT; };
9320A145F2A8ACD687D6608E /* juce_dsp */ /* juce_dsp */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_dsp; path = ../../../../modules/juce_dsp; sourceTree = SOURCE_ROOT; };
@ -126,6 +130,7 @@
C1981AC950A91C9050CE8358 /* Security.framework */ /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
C37B2E77AAB6C9E13729BF99 /* IOConfigurationWindow.cpp */ /* IOConfigurationWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IOConfigurationWindow.cpp; path = ../../Source/Plugins/IOConfigurationWindow.cpp; sourceTree = SOURCE_ROOT; };
CA726B9AA0EC87B58D005C8D /* ARAPlugin.h */ /* ARAPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ARAPlugin.h; path = ../../Source/Plugins/ARAPlugin.h; sourceTree = SOURCE_ROOT; };
CBAE7E81038388E1B80BA819 /* pluginhostfg.svg */ /* pluginhostfg.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = pluginhostfg.svg; path = ../../Source/AppIcon.icon/Assets/pluginhostfg.svg; sourceTree = SOURCE_ROOT; };
D313CF37B25D7FD313C4F336 /* OpenGL.framework */ /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
D4EBC17BDB7F88CCBC76730B /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
DAB71FA843B80756B5521A4E /* include_juce_audio_processors_headless.mm */ /* include_juce_audio_processors_headless.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors_headless.mm; path = ../../JuceLibraryCode/include_juce_audio_processors_headless.mm; sourceTree = SOURCE_ROOT; };
@ -180,6 +185,15 @@
name = BinaryData;
sourceTree = "<group>";
};
59BB5CF70EC14DFD74F5ED85 /* AppIcon.icon */ = {
isa = PBXGroup;
children = (
B91A28F8942AEAAD82FA11D7,
7294E2139555BCA6E58BC4CB,
);
name = AppIcon.icon;
sourceTree = "<group>";
};
65BEFC705A89E5C8A9E35C97 /* Source */ = {
isa = PBXGroup;
children = (
@ -275,7 +289,8 @@
5F0ADA39C70C892758A941F6,
57DF618F1DE781556B7AFC32,
7DA35787B5F6F7440D667CC8,
2A6983F82B13F9E8B10299AE,
6FDEDC8A2EE1095C83DCAF09,
8D0F99961E3A2FF09E7D2DEC,
);
name = Resources;
sourceTree = "<group>";
@ -286,11 +301,21 @@
9F51E92D8C77FA9DDD1F7B10,
DE7B77306553B1204071B39A,
A66EFAC64B1B67B536C73415,
59BB5CF70EC14DFD74F5ED85,
B2A1E626CC120982805754F6,
);
name = Source;
sourceTree = "<group>";
};
B91A28F8942AEAAD82FA11D7 /* Assets */ = {
isa = PBXGroup;
children = (
16F7FAF232A9DA67E656C776,
CBAE7E81038388E1B80BA819,
);
name = Assets;
sourceTree = "<group>";
};
D1C4804CD275CB57A5C89A2D /* Frameworks */ = {
isa = PBXGroup;
children = (
@ -411,7 +436,8 @@
files = (
FE22E1AF24FA9ED43E983B81,
D92C7BF86C9CCF6B4D14F809,
443244451A0F2064D4767337,
937574F3E6597DC4573F370E,
17928C3B79A379E4C6029D3E,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -459,6 +485,7 @@
49453CC5AD9F08D2738464AC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
@ -598,6 +625,7 @@
C8B793AC1BEFBE7A99BE8352 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;

View file

@ -10,7 +10,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>Icon.icns</string>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.juce.audiopluginhost</string>
<key>CFBundleName</key>

View file

@ -4486,6 +4486,9 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\juceicon.svg"/>
<None Include="..\..\Source\AppIcon.icon\Assets\pluginhostfg.svg"/>
<None Include="..\..\Source\AppIcon.icon\icon.json"/>
<None Include="..\..\Source\JUCEAppIcon.png"/>
<None Include="..\..\..\..\examples\Assets\cassette_recorder.wav"/>
<None Include="..\..\..\..\examples\Assets\cello.wav"/>

View file

@ -8,6 +8,12 @@
<Filter Include="AudioPluginHost\Source\UI">
<UniqueIdentifier>{8C61EB30-11E6-7029-4CC8-56C52EB1F1C3}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source\AppIcon.icon\Assets">
<UniqueIdentifier>{94E5947C-3A5C-01B7-75B0-CA217E2F5AF8}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source\AppIcon.icon">
<UniqueIdentifier>{DFD1926B-9FC8-19E6-7DE8-9B50A73FCEA8}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source">
<UniqueIdentifier>{57E59C1B-8971-243F-9A1A-8EABFD456232}</UniqueIdentifier>
</Filter>
@ -8117,6 +8123,15 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\juceicon.svg">
<Filter>AudioPluginHost\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\Assets\pluginhostfg.svg">
<Filter>AudioPluginHost\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\icon.json">
<Filter>AudioPluginHost\Source\AppIcon.icon</Filter>
</None>
<None Include="..\..\Source\JUCEAppIcon.png">
<Filter>AudioPluginHost\Source</Filter>
</None>

View file

@ -4486,6 +4486,9 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\juceicon.svg"/>
<None Include="..\..\Source\AppIcon.icon\Assets\pluginhostfg.svg"/>
<None Include="..\..\Source\AppIcon.icon\icon.json"/>
<None Include="..\..\Source\JUCEAppIcon.png"/>
<None Include="..\..\..\..\examples\Assets\cassette_recorder.wav"/>
<None Include="..\..\..\..\examples\Assets\cello.wav"/>

View file

@ -8,6 +8,12 @@
<Filter Include="AudioPluginHost\Source\UI">
<UniqueIdentifier>{8C61EB30-11E6-7029-4CC8-56C52EB1F1C3}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source\AppIcon.icon\Assets">
<UniqueIdentifier>{94E5947C-3A5C-01B7-75B0-CA217E2F5AF8}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source\AppIcon.icon">
<UniqueIdentifier>{DFD1926B-9FC8-19E6-7DE8-9B50A73FCEA8}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source">
<UniqueIdentifier>{57E59C1B-8971-243F-9A1A-8EABFD456232}</UniqueIdentifier>
</Filter>
@ -8117,6 +8123,15 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\juceicon.svg">
<Filter>AudioPluginHost\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\Assets\pluginhostfg.svg">
<Filter>AudioPluginHost\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\icon.json">
<Filter>AudioPluginHost\Source\AppIcon.icon</Filter>
</None>
<None Include="..\..\Source\JUCEAppIcon.png">
<Filter>AudioPluginHost\Source</Filter>
</None>

View file

@ -4486,6 +4486,9 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\juceicon.svg"/>
<None Include="..\..\Source\AppIcon.icon\Assets\pluginhostfg.svg"/>
<None Include="..\..\Source\AppIcon.icon\icon.json"/>
<None Include="..\..\Source\JUCEAppIcon.png"/>
<None Include="..\..\..\..\examples\Assets\cassette_recorder.wav"/>
<None Include="..\..\..\..\examples\Assets\cello.wav"/>

View file

@ -8,6 +8,12 @@
<Filter Include="AudioPluginHost\Source\UI">
<UniqueIdentifier>{8C61EB30-11E6-7029-4CC8-56C52EB1F1C3}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source\AppIcon.icon\Assets">
<UniqueIdentifier>{94E5947C-3A5C-01B7-75B0-CA217E2F5AF8}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source\AppIcon.icon">
<UniqueIdentifier>{DFD1926B-9FC8-19E6-7DE8-9B50A73FCEA8}</UniqueIdentifier>
</Filter>
<Filter Include="AudioPluginHost\Source">
<UniqueIdentifier>{57E59C1B-8971-243F-9A1A-8EABFD456232}</UniqueIdentifier>
</Filter>
@ -8117,6 +8123,15 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\AppIcon.icon\Assets\juceicon.svg">
<Filter>AudioPluginHost\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\Assets\pluginhostfg.svg">
<Filter>AudioPluginHost\Source\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\AppIcon.icon\icon.json">
<Filter>AudioPluginHost\Source\AppIcon.icon</Filter>
</None>
<None Include="..\..\Source\JUCEAppIcon.png">
<Filter>AudioPluginHost\Source</Filter>
</None>

View file

@ -16,6 +16,7 @@
0F20A4AE04736634F097F5A6 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = B285CAB91AE928C476CA4F9C; };
1570FCC5CDB7A44DF0077E39 /* CoreGraphics.framework */ = {isa = PBXBuildFile; fileRef = 2F7D965A1284CEF0B20EB657; };
15CCE43D7DCFC649638919D4 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; };
17928C3B79A379E4C6029D3E /* AppIcon.icon */ = {isa = PBXBuildFile; fileRef = 8D0F99961E3A2FF09E7D2DEC; };
19BE669F744C58C9B8742649 /* include_juce_graphics_Harfbuzz.cpp */ = {isa = PBXBuildFile; fileRef = E19F52E4D8928B850832C57F; };
1AD3A3C7CD2D1F6DC4B65205 /* Metal.framework */ = {isa = PBXBuildFile; fileRef = 3E94492697BD64D0F185D60E; settings = { ATTRIBUTES = (Weak, ); }; };
21D330A5B13178B12BEAFC3C /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = D4EBC17BDB7F88CCBC76730B; };
@ -24,7 +25,6 @@
2C3D221D2AA87F07B3F1044D /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 8FE7B37CDE0818DB27BDDEBD; };
3154B78F0813DBD8A2C9234D /* include_juce_audio_processors_headless.mm */ = {isa = PBXBuildFile; fileRef = DAB71FA843B80756B5521A4E; };
3E1689E23B9C85F03209DCEF /* GraphEditorPanel.cpp */ = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; };
443244451A0F2064D4767337 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; };
4DB15177DDC357F4503F88CF /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = B457EE687507BF1DEEA7581F; };
50AFD116DCA6EC228EFB322D /* UIKit.framework */ = {isa = PBXBuildFile; fileRef = F9EDC54DFBCF3A63E0AA5D73; };
59F4F23BFFDAB414B4801F85 /* Images.xcassets */ = {isa = PBXBuildFile; fileRef = 29E0972229FB44D969035B4E; };
@ -39,6 +39,7 @@
8DD3EB0C33E3E7B30C086034 /* include_juce_audio_processors_headless_ara.cpp */ = {isa = PBXBuildFile; fileRef = A83A4730C7AC85876911E149; };
9056B642BEF870098DE344E5 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = 03FA420AACDD03D50AA16E4A; };
92EE84159C7027A137F06204 /* CoreText.framework */ = {isa = PBXBuildFile; fileRef = 66643EDF46AE8C5B7956B91D; };
937574F3E6597DC4573F370E /* AppIcon.icns */ = {isa = PBXBuildFile; fileRef = 6FDEDC8A2EE1095C83DCAF09; };
970A893BD34180916C9D01C4 /* ARAPlugin.cpp */ = {isa = PBXBuildFile; fileRef = 6A01D5F304346E0332264056; };
A0144A682BF4843C8CF53FE4 /* BinaryData.cpp */ = {isa = PBXBuildFile; fileRef = 6D107D7946DC5976B766345B; };
A02C9F4C4B840C27B6CAFEBD /* QuartzCore.framework */ = {isa = PBXBuildFile; fileRef = 89309C0C5F3269BD06BE7F27; };
@ -68,10 +69,10 @@
0B1CC8C80F6F99BDE7D6AEC9 /* PluginGraph.cpp */ /* PluginGraph.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PluginGraph.cpp; path = ../../Source/Plugins/PluginGraph.cpp; sourceTree = SOURCE_ROOT; };
118ABD8E91DF2E400358D8CD /* MetalKit.framework */ /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
11E6340DB6A6F68F5040101B /* reverb_ir.wav */ /* reverb_ir.wav */ = {isa = PBXFileReference; lastKnownFileType = file.wav; name = reverb_ir.wav; path = ../../../../examples/Assets/reverb_ir.wav; sourceTree = SOURCE_ROOT; };
16F7FAF232A9DA67E656C776 /* juceicon.svg */ /* juceicon.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = juceicon.svg; path = ../../Source/AppIcon.icon/Assets/juceicon.svg; sourceTree = SOURCE_ROOT; };
17A29FEB16D4439351511947 /* guitar_amp.wav */ /* guitar_amp.wav */ = {isa = PBXFileReference; lastKnownFileType = file.wav; name = guitar_amp.wav; path = ../../../../examples/Assets/guitar_amp.wav; sourceTree = SOURCE_ROOT; };
1DADAD8E34AAF4AFF1C69DC4 /* BinaryData.h */ /* BinaryData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = SOURCE_ROOT; };
29E0972229FB44D969035B4E /* Images.xcassets */ /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AudioPluginHost/Images.xcassets; sourceTree = SOURCE_ROOT; };
2A6983F82B13F9E8B10299AE /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
2BE6C2DFD6EBB9A89109AEB5 /* include_juce_gui_extra.mm */ /* include_juce_gui_extra.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_extra.mm; path = ../../JuceLibraryCode/include_juce_gui_extra.mm; sourceTree = SOURCE_ROOT; };
2F7D965A1284CEF0B20EB657 /* CoreGraphics.framework */ /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
36689CA4EFC2AF183A0848AE /* include_juce_dsp.mm */ /* include_juce_dsp.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_dsp.mm; path = ../../JuceLibraryCode/include_juce_dsp.mm; sourceTree = SOURCE_ROOT; };
@ -99,6 +100,8 @@
6A01D5F304346E0332264056 /* ARAPlugin.cpp */ /* ARAPlugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ARAPlugin.cpp; path = ../../Source/Plugins/ARAPlugin.cpp; sourceTree = SOURCE_ROOT; };
6A71B2BCAC4239072BC2BD7E /* juce_audio_basics */ /* juce_audio_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_basics; path = ../../../../modules/juce_audio_basics; sourceTree = SOURCE_ROOT; };
6D107D7946DC5976B766345B /* BinaryData.cpp */ /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
6FDEDC8A2EE1095C83DCAF09 /* AppIcon.icns */ /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = AppIcon.icns; path = AppIcon.icns; sourceTree = SOURCE_ROOT; };
7294E2139555BCA6E58BC4CB /* icon.json */ /* icon.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = icon.json; path = ../../Source/AppIcon.icon/icon.json; sourceTree = SOURCE_ROOT; };
7D924E83DABA5B54205C52F4 /* CoreServices.framework */ /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
81C1A7770E082F56FE5A90A7 /* juce_opengl */ /* juce_opengl */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_opengl; path = ../../../../modules/juce_opengl; sourceTree = SOURCE_ROOT; };
82800DBA287EF4BAB13B42FB /* include_juce_graphics.mm */ /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; };
@ -108,6 +111,7 @@
89309C0C5F3269BD06BE7F27 /* QuartzCore.framework */ /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
8AE5B3D0B3DE53FC27B9E88F /* include_juce_audio_processors_headless_lv2_libs.cpp */ /* include_juce_audio_processors_headless_lv2_libs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_headless_lv2_libs.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_headless_lv2_libs.cpp; sourceTree = SOURCE_ROOT; };
8C6CD9119127C4AEBADABA25 /* UniformTypeIdentifiers.framework */ /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; };
8D0F99961E3A2FF09E7D2DEC /* AppIcon.icon */ /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = file.icon; name = AppIcon.icon; path = ../../Source/AppIcon.icon; sourceTree = SOURCE_ROOT; };
8D8BBC353637DA442C5575DA /* App */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Plugin Host.app"; sourceTree = BUILT_PRODUCTS_DIR; };
8FE7B37CDE0818DB27BDDEBD /* include_juce_gui_basics.mm */ /* include_juce_gui_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_gui_basics.mm; path = ../../JuceLibraryCode/include_juce_gui_basics.mm; sourceTree = SOURCE_ROOT; };
9320A145F2A8ACD687D6608E /* juce_dsp */ /* juce_dsp */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_dsp; path = ../../../../modules/juce_dsp; sourceTree = SOURCE_ROOT; };
@ -132,6 +136,7 @@
B95B9D6774059DBB19F2B4E2 /* InternalPlugins.h */ /* InternalPlugins.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InternalPlugins.h; path = ../../Source/Plugins/InternalPlugins.h; sourceTree = SOURCE_ROOT; };
C37B2E77AAB6C9E13729BF99 /* IOConfigurationWindow.cpp */ /* IOConfigurationWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IOConfigurationWindow.cpp; path = ../../Source/Plugins/IOConfigurationWindow.cpp; sourceTree = SOURCE_ROOT; };
CA726B9AA0EC87B58D005C8D /* ARAPlugin.h */ /* ARAPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ARAPlugin.h; path = ../../Source/Plugins/ARAPlugin.h; sourceTree = SOURCE_ROOT; };
CBAE7E81038388E1B80BA819 /* pluginhostfg.svg */ /* pluginhostfg.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = pluginhostfg.svg; path = ../../Source/AppIcon.icon/Assets/pluginhostfg.svg; sourceTree = SOURCE_ROOT; };
CFFA8E9A7820C5A27B4393C9 /* CoreImage.framework */ /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
D0026F0A29B486D87E92BB8B /* OpenGLES.framework */ /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D4EBC17BDB7F88CCBC76730B /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
@ -192,6 +197,15 @@
name = BinaryData;
sourceTree = "<group>";
};
59BB5CF70EC14DFD74F5ED85 /* AppIcon.icon */ = {
isa = PBXGroup;
children = (
B91A28F8942AEAAD82FA11D7,
7294E2139555BCA6E58BC4CB,
);
name = AppIcon.icon;
sourceTree = "<group>";
};
65BEFC705A89E5C8A9E35C97 /* Source */ = {
isa = PBXGroup;
children = (
@ -288,7 +302,8 @@
57DF618F1DE781556B7AFC32,
29E0972229FB44D969035B4E,
F58EBA72DA53F75945B91321,
2A6983F82B13F9E8B10299AE,
6FDEDC8A2EE1095C83DCAF09,
8D0F99961E3A2FF09E7D2DEC,
);
name = Resources;
sourceTree = "<group>";
@ -299,11 +314,21 @@
9F51E92D8C77FA9DDD1F7B10,
DE7B77306553B1204071B39A,
A66EFAC64B1B67B536C73415,
59BB5CF70EC14DFD74F5ED85,
B2A1E626CC120982805754F6,
);
name = Source;
sourceTree = "<group>";
};
B91A28F8942AEAAD82FA11D7 /* Assets */ = {
isa = PBXGroup;
children = (
16F7FAF232A9DA67E656C776,
CBAE7E81038388E1B80BA819,
);
name = Assets;
sourceTree = "<group>";
};
D1C4804CD275CB57A5C89A2D /* Frameworks */ = {
isa = PBXGroup;
children = (
@ -428,7 +453,8 @@
FE22E1AF24FA9ED43E983B81,
59F4F23BFFDAB414B4801F85,
E283262A07376A7EDFCEAF6F,
443244451A0F2064D4767337,
937574F3E6597DC4573F370E,
17928C3B79A379E4C6029D3E,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -33,6 +33,7 @@
juce_add_gui_app(AudioPluginHost
BUNDLE_ID com.juce.pluginhost
ICON_BIG "${CMAKE_CURRENT_SOURCE_DIR}/Source/JUCEAppIcon.png"
ICON_COMPOSER_BUNDLE "${CMAKE_CURRENT_SOURCE_DIR}/Source/AppIcon.icon"
MICROPHONE_PERMISSION_ENABLED TRUE
PLUGINHOST_AU TRUE)

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1024"
height="1024"
viewBox="0 0 1024 1024"
version="1.1"
id="svg10"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs10" /><path
id="ellipse1"
style="opacity:1;fill:#8dc63f;stroke:none;stroke-width:0;stroke-dasharray:none"
d="M 512,102 A 410,410 0 0 0 102,512 410,410 0 0 0 512,922 410,410 0 0 0 922,512 410,410 0 0 0 512,102 Z m 0,60.29412 A 349.70588,349.70588 0 0 1 861.70588,512 349.70588,349.70588 0 0 1 512,861.70588 349.70588,349.70588 0 0 1 162.29412,512 349.70588,349.70588 0 0 1 512,162.29412 Z" /><path
d="m 557.74075,584.53575 c 24.52179,61.52243 51.27562,122.92312 84.24282,184.1717 a 42.226977,42.597119 0 0 0 61.04816,14.33089 331.7834,334.69165 0 0 0 85.3588,-87.71966 41.44276,41.80603 0 0 0 -22.95337,-63.13498 C 700.1663,612.43688 639.63092,588.12608 580.60365,562.50697 a 17.132088,17.282259 0 0 0 -22.8629,22.02878 z"
fill="#f3bd48"
id="path2"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 590.91909,532.71941 c 62.04349,26.86661 125.47444,52.18148 194.15361,72.08042 a 42.226977,42.597119 0 0 0 53.17582,-33.13449 327.95279,330.82747 0 0 0 -1.11599,-125.08337 42.226977,42.597119 0 0 0 -60.86718,-28.87477 c -61.77205,32.61722 -123.42342,58.90573 -184.924,83.24695 a 16.981278,17.130126 0 0 0 -0.42226,31.76526 z"
fill="#f09f53"
id="path3"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="M 527.57862,592.75092 A 17.252737,17.403965 0 0 0 495.8179,592.2641 c -26.8443,61.88755 -52.08998,125.11382 -71.96685,193.51262 a 41.774545,42.14072 0 0 0 33.41965,53.33768 339.23342,342.20698 0 0 0 54.8649,4.50313 335.40285,338.34283 0 0 0 69.01096,-7.18067 41.71422,42.079868 0 0 0 28.74449,-60.85301 C 577.5271,714.54826 551.4972,653.57352 527.57862,592.75092 Z"
fill="#ecdc13"
id="path4"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 499.58815,434.0158 a 17.252737,17.403965 0 0 0 31.76075,0.48684 c 27.14588,-62.49607 52.5424,-126.45259 72.38908,-195.73377 a 41.834868,42.201575 0 0 0 -33.17835,-53.21597 337.81583,340.77695 0 0 0 -125.98718,1.67347 41.684058,42.04944 0 0 0 -28.5937,60.82258 c 32.69575,62.16137 59.14793,124.14018 83.6094,185.96685 z"
fill="#a95a96"
id="path5"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 255.90835,396.80418 c 68.10609,20.47704 131.05444,45.94405 192.49468,72.74979 A 17.132088,17.282259 0 0 0 471.23578,447.4339 C 445.68845,382.96012 418.05993,318.60804 383.22269,254.37768 a 42.226977,42.597119 0 0 0 -61.04814,-14.33088 332.35645,335.26975 0 0 0 -89.94346,93.86578 41.653895,42.019015 0 0 0 23.67726,62.8916 z"
fill="#2b8ec1"
id="path6"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 466.62096,580.54989 a 17.132088,17.282259 0 0 0 -22.13901,-22.81987 c -62.82768,25.0106 -125.53475,51.99891 -188.091,85.86361 a 41.44276,41.80603 0 0 0 -14.14604,61.279 331.99452,334.90464 0 0 0 90.87849,86.44172 42.226977,42.597119 0 0 0 62.73722,-23.21542 c 20.11813,-66.26896 44.73043,-127.54796 70.76034,-187.54904 z"
fill="#add14c"
id="path7"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 559.45998,448.31627 a 17.101925,17.251833 0 0 0 22.10885,22.85033 c 63.15947,-25.1019 126.16815,-52.33362 189.05622,-86.44174 a 41.503085,41.866882 0 0 0 14.50797,-60.85303 332.17549,335.08718 0 0 0 -90.75785,-88.84542 42.226977,42.597119 0 0 0 -63.12932,23.00245 C 610.97689,325.33231 585.882,387.58495 559.45998,448.31627 Z"
fill="#e74253"
id="path8"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="M 433.11085,497.02912 C 370.73557,469.97994 307.03316,444.57381 238.02221,424.52273 a 42.226977,42.597119 0 0 0 -53.29647,33.46918 331.2103,334.11355 0 0 0 -4.34335,53.85492 327.28923,330.1581 0 0 0 7.84216,71.98912 42.046003,42.41456 0 0 0 60.59571,27.62728 c 61.34976,-32.43465 122.60904,-58.63191 183.77781,-82.82097 a 16.981278,17.130126 0 0 0 0.51278,-31.61314 z"
fill="#01b699"
id="path9"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1024"
height="1024"
viewBox="0 0 1024 1024"
version="1.1"
id="svg10"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs10" /><path
style="opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none;baseline-shift:baseline;display:inline;overflow:visible;fill:#ffffff;stroke-linejoin:round;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
d="m 73.929859,327.16725 -0.712592,-48.45629 c -0.06497,-4.4178 -3.592753,-8.92329 -7.682166,-10.59004 -33.303539,-13.57372 -36.60516,-46.72625 -34.419568,-81.05791 0.280699,-4.40925 4.175288,-8.04405 8.592808,-8.12585 l 9.062872,-0.16783 v -34.65374 a 7.9999997,7.9999997 135 0 1 8,-8 h 16.85917 a 7.9999997,7.9999997 45 0 1 8,8 v 34.02183 H 100.5876 v -34.02183 a 7.9999997,7.9999997 135 0 1 8,-8 h 15.91132 a 7.9999997,7.9999997 45 0 1 8,8 v 33.70587 l 10.64241,-0.18038 c 4.41764,-0.0749 8.118,3.44424 8.22671,7.86117 0.87651,35.61407 -0.80889,71.54752 -34.8469,83.12679 -4.18016,1.42203 -7.66608,5.66412 -7.60112,10.08192 l 0.7126,48.45628 a 7.88322,7.88322 134.57873 0 1 -7.88237,7.99913 l -19.702757,1e-5 a 8.1185094,8.1185094 44.57873 0 1 -8.117634,-7.99913 z"
id="path13"
transform="matrix(3.0147059,0,0,3.0147059,237.49837,-134.67059)" /></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,47 @@
{
"fill" : "system-light",
"groups" : [
{
"blur-material" : 0.5,
"hidden" : false,
"layers" : [
{
"image-name" : "pluginhostfg.svg",
"name" : "pluginhostfg"
}
],
"opacity" : 1,
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : true,
"value" : 0.6
}
},
{
"blur-material" : null,
"layers" : [
{
"hidden" : false,
"image-name" : "juceicon.svg",
"name" : "juceicon"
}
],
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : false,
"value" : 0
}
}
],
"supported-platforms" : {
"squares" : "shared"
}
}

View file

@ -375,6 +375,7 @@ function(_juce_write_configure_time_info target)
_juce_append_target_property(file_content SHOULD_ADD_STORYBOARD ${target} JUCE_SHOULD_ADD_STORYBOARD)
_juce_append_target_property(file_content LAUNCH_STORYBOARD_FILE ${target} JUCE_LAUNCH_STORYBOARD_FILE)
_juce_append_target_property(file_content ICON_FILE ${target} JUCE_ICON_FILE)
_juce_append_target_property(file_content ICON_COMPOSER_BUNDLE ${target} JUCE_ICON_COMPOSER_BUNDLE)
_juce_append_target_property(file_content PROJECT_NAME ${target} JUCE_PRODUCT_NAME)
_juce_append_target_property(file_content COMPANY_COPYRIGHT ${target} JUCE_COMPANY_COPYRIGHT)
_juce_append_target_property(file_content COMPANY_NAME ${target} JUCE_COMPANY_NAME)
@ -636,6 +637,7 @@ function(_juce_generate_icon source_target dest_target)
get_target_property(juce_library_code ${source_target} JUCE_GENERATED_SOURCES_DIRECTORY)
get_target_property(juce_property_icon_big ${source_target} JUCE_ICON_BIG)
get_target_property(juce_property_icon_small ${source_target} JUCE_ICON_SMALL)
get_target_property(juce_property_icon_composer_bundle ${source_target} JUCE_ICON_COMPOSER_BUNDLE)
set(icon_args)
@ -647,8 +649,38 @@ function(_juce_generate_icon source_target dest_target)
list(APPEND icon_args "${juce_property_icon_small}")
endif()
get_filename_component(icon_composer_icon_name "${juce_property_icon_composer_bundle}" NAME_WE)
if(juce_property_icon_composer_bundle AND (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS"))
set_source_files_properties("${juce_property_icon_composer_bundle}"
PROPERTIES
MACOSX_PACKAGE_LOCATION Resources
XCODE_EXPLICIT_FILE_TYPE folder.iconcomposer.icon
)
target_sources(${dest_target} PRIVATE "${juce_property_icon_composer_bundle}")
set_target_properties(${dest_target} PROPERTIES
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "${icon_composer_icon_name}")
if((CMAKE_SYSTEM_NAME STREQUAL "Darwin") AND (NOT CMAKE_GENERATOR STREQUAL "Xcode"))
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}"
"-Dbundle_dir='$<TARGET_BUNDLE_DIR:${target}>'"
"-Dicon_path=${juce_property_icon_composer_bundle}"
"-P" "${JUCE_CMAKE_UTILS_DIR}/generateXcassetsFromIcon.cmake"
VERBATIM)
endif()
endif()
set(generated_icon)
set(apple_app_icon_name "${icon_composer_icon_name}")
if(NOT apple_app_icon_name)
set(apple_app_icon_name "AppIcon")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
if(NOT icon_args)
return()
@ -656,9 +688,9 @@ function(_juce_generate_icon source_target dest_target)
_juce_check_icon_files_exist("${icon_args}")
set(generated_icon "${juce_library_code}/Icon.icns")
set(generated_icon "${juce_library_code}/${apple_app_icon_name}.icns")
# To get compiled properly, we need the icon before the plist is generated!
_juce_execute_juceaide(macicon "${generated_icon}" ${icon_args})
_juce_execute_juceaide(macicon "${generated_icon}" "${apple_app_icon_name}" ${icon_args})
set_source_files_properties(${generated_icon} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
if(NOT icon_args)
@ -679,15 +711,19 @@ function(_juce_generate_icon source_target dest_target)
set(generated_icon "${out_path}/Images.xcassets")
# To get compiled properly, we need iOS assets at configure time!
_juce_execute_juceaide(iosassets "${out_path}" ${icon_args})
_juce_execute_juceaide(iosassets "${out_path}" "${apple_app_icon_name}" ${icon_args})
endif()
if(NOT generated_icon)
return()
endif()
set_target_properties(${dest_target} PROPERTIES
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon")
get_target_property(existing_appicon ${dest_target} XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME)
if(NOT existing_appicon)
set_target_properties(${dest_target} PROPERTIES
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "${apple_app_icon_name}")
endif()
get_target_property(add_storyboard ${source_target} JUCE_SHOULD_ADD_STORYBOARD)
@ -1998,6 +2034,7 @@ function(_juce_initialise_target target)
REQUIRES_FULL_SCREEN # iOS only
ICON_BIG
ICON_SMALL
ICON_COMPOSER_BUNDLE # MacOS/iOS only
COMPANY_COPYRIGHT
COMPANY_NAME
COMPANY_WEBSITE

View file

@ -0,0 +1,91 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
find_program(JUCE_XCRUN xcrun)
if(NOT JUCE_XCRUN)
message(WARNING "No xcrun was found. Can't generate Icon Composer assets. Please ensure that the"
" Xcode command-line tools are installed.")
return()
endif()
function(get_actool_version output_var)
execute_process(
COMMAND xcrun actool --version
OUTPUT_VARIABLE cmd_output
ERROR_VARIABLE cmd_error
RESULT_VARIABLE cmd_result
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT cmd_result EQUAL 0)
set(${output_var} "" PARENT_SCOPE)
return()
endif()
string(REGEX REPLACE "[ \t\r\n]+" "" cmd_output "${cmd_output}")
string(REGEX MATCH "<key>short-bundle-version</key>[^<]*<string>(.*)</string>" match_found "${cmd_output}")
if(match_found)
set(${output_var} "${CMAKE_MATCH_1}" PARENT_SCOPE)
else()
set(${output_var} "" PARENT_SCOPE)
endif()
endfunction()
get_actool_version(actool_version)
if(NOT "${actool_version}" VERSION_GREATER_EQUAL "26.0")
message(WARNING "Couldn't find actool with version 26.0 or greater."
" Icon Composer assets will not be generated.")
return()
endif()
get_filename_component(icon_name "${icon_path}" NAME_WE)
execute_process(
COMMAND "${JUCE_XCRUN}" actool
--compile "${bundle_dir}/Contents/Resources"
--platform macosx
--minimum-deployment-target 10.11
--output-partial-info-plist /dev/null
--app-icon "${icon_name}"
"${icon_path}"
OUTPUT_VARIABLE result_stdout
ERROR_VARIABLE result_stderr
RESULT_VARIABLE result)
if(result)
message(STATUS "${result_stdout}")
message(WARNING "${result_stderr}")
message(ERROR "Failed to generate Icon Composer asset. actool returned with exit code ${result}")
endif()

View file

@ -494,11 +494,12 @@ namespace juce::build_tools
RelativePath createXcassetsFolderFromIcons (const Icons& icons,
const File& targetFolder,
String projectFilenameRootString)
String projectFilenameRootString,
String iconName)
{
const auto assets = targetFolder.getChildFile (projectFilenameRootString)
.getChildFile ("Images.xcassets");
const auto iconSet = assets.getChildFile ("AppIcon.appiconset");
const auto iconSet = assets.getChildFile (iconName + ".appiconset");
const auto launchImage = assets.getChildFile ("LaunchImage.launchimage");
overwriteFileIfDifferentOrThrow (iconSet.getChildFile ("Contents.json"), getiOSAppIconContents());

View file

@ -61,6 +61,7 @@ namespace juce::build_tools
RelativePath createXcassetsFolderFromIcons (const Icons& icons,
const File& targetFolder,
String projectFilenameRootString);
String projectFilenameRootString,
String iconName);
} // namespace juce::build_tools

View file

@ -184,8 +184,13 @@ namespace juce::build_tools
addPlistDictionaryKey (*dict, "CFBundleExecutable", executableName);
if (! iOS) // (NB: on iOS this causes error ITMS-90032 during publishing)
{
addPlistDictionaryKey (*dict, "CFBundleIconFile", iconFile.exists() ? iconFile.getFileName() : String());
if (iconComposerIcon.exists())
addPlistDictionaryKey (*dict, "CFBundleIconName", iconComposerIcon.getFileNameWithoutExtension());
}
addPlistDictionaryKey (*dict, "CFBundleIdentifier", bundleIdentifier);
addPlistDictionaryKey (*dict, "CFBundleName", projectName);

View file

@ -69,6 +69,7 @@ namespace juce::build_tools
String localNetworkPermissionText;
File iconFile;
File iconComposerIcon;
String projectName;
String marketingVersion;
String currentProjectVersion;

View file

@ -117,12 +117,26 @@ struct IconParseResults
{
juce::build_tools::Icons icons;
juce::File output;
juce::String iconName;
};
IconParseResults parseIconArguments (juce::ArgumentList&& args)
enum class IconNameSpecified
{
args.checkMinNumArguments (2);
no,
yes
};
IconParseResults parseIconArguments (juce::ArgumentList&& args, IconNameSpecified iconNameSpecified)
{
args.checkMinNumArguments (iconNameSpecified == IconNameSpecified::yes ? 3 : 2);
const auto output = args.arguments.removeAndReturn (0);
const auto iconName = std::invoke ([&]
{
if (iconNameSpecified == IconNameSpecified::yes)
return args.arguments.removeAndReturn (0).text;
return juce::String{};
});
const auto popFile = [&args]() -> juce::File
{
@ -135,28 +149,29 @@ IconParseResults parseIconArguments (juce::ArgumentList&& args)
const auto smallIcon = popFile();
const auto bigIcon = popFile();
return { juce::build_tools::Icons::fromFilesSmallAndBig (smallIcon, bigIcon), output.text };
return { juce::build_tools::Icons::fromFilesSmallAndBig (smallIcon, bigIcon), output.text, iconName };
}
int writeMacIcon (juce::ArgumentList&& argumentList)
{
const auto parsed = parseIconArguments (std::move (argumentList));
const auto parsed = parseIconArguments (std::move (argumentList), IconNameSpecified::yes);
juce::build_tools::writeMacIcon (parsed.icons, parsed.output);
return 0;
}
int writeiOSAssets (juce::ArgumentList&& argumentList)
{
const auto parsed = parseIconArguments (std::move (argumentList));
const auto parsed = parseIconArguments (std::move (argumentList), IconNameSpecified::yes);
juce::build_tools::createXcassetsFolderFromIcons (parsed.icons,
parsed.output.getParentDirectory(),
parsed.output.getFileName());
parsed.output.getFileName(),
parsed.iconName);
return 0;
}
int writeWinIcon (juce::ArgumentList&& argumentList)
{
const auto parsed = parseIconArguments (std::move (argumentList));
const auto parsed = parseIconArguments (std::move (argumentList), IconNameSpecified::no);
juce::build_tools::writeWinIcon (parsed.icons, parsed.output);
return 0;
}
@ -284,6 +299,7 @@ juce::build_tools::PlistOptions parsePlistOptions (const juce::File& file,
updateField ("SUPPRESS_AU_PLIST_RESOURCE_USAGE", result.suppressResourceUsage);
updateField ("BUNDLE_ID", result.bundleIdentifier);
updateField ("ICON_FILE", result.iconFile);
updateField ("ICON_COMPOSER_BUNDLE", result.iconComposerIcon);
result.type = type;

View file

@ -6,7 +6,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>Icon.icns</string>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.juce.NetworkGraphicsDemo</string>
<key>CFBundleName</key>

View file

@ -7,7 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
006DF460F8DF66EFFA80D968 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 70F1CAF3C4C561DD81E6AFC1; };
0977FEC02DAF29438583198A /* include_juce_core.mm */ = {isa = PBXBuildFile; fileRef = 01E0EEF68A11C1CAF180E173; };
0FA2A3321630EBE83E439D99 /* include_juce_cryptography.mm */ = {isa = PBXBuildFile; fileRef = AFF729977947528F3E4AAA96; };
204FE224D562F0519DE438A4 /* include_juce_core_CompilationTime.cpp */ = {isa = PBXBuildFile; fileRef = BD85090C86849423E95A0014; };
@ -20,6 +19,7 @@
65B2C4ED19229E0EDC8EF993 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 696F7896036B652369517438; };
67DF295E93E54432043126DF /* CoreAudio.framework */ = {isa = PBXBuildFile; fileRef = 6799B056504F9F017998B9E2; };
6C2200C52B65E1BE80544E50 /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = AF330F41D1A4865108690E3C; };
6E24A926494D678975AA56E5 /* AppIcon.icns */ = {isa = PBXBuildFile; fileRef = 3A798A17A29957CC426E04FB; };
770AB74B1D3A0108F764DD47 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 4D1DB6D77B6F3DE7A569780B; };
77745BF98931B91341FE17F6 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = F3292E3563DB7ABB076DB400; };
80B9F7ED2009922C693B7DD4 /* DiscRecording.framework */ = {isa = PBXBuildFile; fileRef = CB82A14817C3E2ABBBBC3864; };
@ -57,6 +57,7 @@
25DEDA8C9F94A6C8DFC8E53E /* SharedCanvas.h */ /* SharedCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SharedCanvas.h; path = ../../Source/SharedCanvas.h; sourceTree = SOURCE_ROOT; };
2E13A899F4E3C99054A3656F /* Accelerate.framework */ /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
33AA348465F512DBA8778DAF /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; };
3A798A17A29957CC426E04FB /* AppIcon.icns */ /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = AppIcon.icns; path = AppIcon.icns; sourceTree = SOURCE_ROOT; };
3BF06B70407FFDBE9534F942 /* include_juce_osc.cpp */ /* include_juce_osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_osc.cpp; path = ../../JuceLibraryCode/include_juce_osc.cpp; sourceTree = SOURCE_ROOT; };
448838BE6E937D450A3C84CE /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
4D1DB6D77B6F3DE7A569780B /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
@ -70,7 +71,6 @@
68EBC0BF5F01E05FDCB3EEAF /* juce_opengl */ /* juce_opengl */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_opengl; path = ../../../../modules/juce_opengl; sourceTree = SOURCE_ROOT; };
696F7896036B652369517438 /* RecentFilesMenuTemplate.nib */ /* RecentFilesMenuTemplate.nib */ = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = SOURCE_ROOT; };
6D1F9E505D20C09647124F0A /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; };
70F1CAF3C4C561DD81E6AFC1 /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
74711D7544168CCAC4969A07 /* BinaryData.cpp */ /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
7525879E73E8AF32FFA0CDDE /* include_juce_data_structures.mm */ /* include_juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_data_structures.mm; path = ../../JuceLibraryCode/include_juce_data_structures.mm; sourceTree = SOURCE_ROOT; };
77C0AC21C1028911123844FC /* Main.cpp */ /* Main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = SOURCE_ROOT; };
@ -146,7 +146,7 @@
children = (
1FD6DBAC73414DD4C152E34E,
696F7896036B652369517438,
70F1CAF3C4C561DD81E6AFC1,
3A798A17A29957CC426E04FB,
);
name = Resources;
sourceTree = "<group>";
@ -343,7 +343,7 @@
buildActionMask = 2147483647;
files = (
65B2C4ED19229E0EDC8EF993,
006DF460F8DF66EFFA80D968,
6E24A926494D678975AA56E5,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -7,7 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
006DF460F8DF66EFFA80D968 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 70F1CAF3C4C561DD81E6AFC1; };
0977FEC02DAF29438583198A /* include_juce_core.mm */ = {isa = PBXBuildFile; fileRef = 01E0EEF68A11C1CAF180E173; };
0E041BED84BAC24200949A78 /* UniformTypeIdentifiers.framework */ = {isa = PBXBuildFile; fileRef = 961965555B4DAA5BE2361933; settings = { ATTRIBUTES = (Weak, ); }; };
0FA2A3321630EBE83E439D99 /* include_juce_cryptography.mm */ = {isa = PBXBuildFile; fileRef = AFF729977947528F3E4AAA96; };
@ -24,6 +23,7 @@
64DEB67F9523F28D899D1821 /* MetalKit.framework */ = {isa = PBXBuildFile; fileRef = C8C4E9A4028028FF1F5B76F2; settings = { ATTRIBUTES = (Weak, ); }; };
67DF295E93E54432043126DF /* CoreAudio.framework */ = {isa = PBXBuildFile; fileRef = 6799B056504F9F017998B9E2; };
6C2200C52B65E1BE80544E50 /* include_juce_audio_devices.mm */ = {isa = PBXBuildFile; fileRef = AF330F41D1A4865108690E3C; };
6E24A926494D678975AA56E5 /* AppIcon.icns */ = {isa = PBXBuildFile; fileRef = 3A798A17A29957CC426E04FB; };
770AB74B1D3A0108F764DD47 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 4D1DB6D77B6F3DE7A569780B; };
78CB229C1BA5093078BC6195 /* UserNotifications.framework */ = {isa = PBXBuildFile; fileRef = E8976208A3585295BF93D50D; settings = { ATTRIBUTES = (Weak, ); }; };
80EE2C27B466BAFD83881D3F /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 2E13A899F4E3C99054A3656F; };
@ -64,6 +64,7 @@
2E13A899F4E3C99054A3656F /* Accelerate.framework */ /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
33AA348465F512DBA8778DAF /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; };
379F77D23BFAE3795282CEB3 /* UIKit.framework */ /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
3A798A17A29957CC426E04FB /* AppIcon.icns */ /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = AppIcon.icns; path = AppIcon.icns; sourceTree = SOURCE_ROOT; };
3BF06B70407FFDBE9534F942 /* include_juce_osc.cpp */ /* include_juce_osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_osc.cpp; path = ../../JuceLibraryCode/include_juce_osc.cpp; sourceTree = SOURCE_ROOT; };
448838BE6E937D450A3C84CE /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
4D1DB6D77B6F3DE7A569780B /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
@ -77,7 +78,6 @@
6799B056504F9F017998B9E2 /* CoreAudio.framework */ /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
68EBC0BF5F01E05FDCB3EEAF /* juce_opengl */ /* juce_opengl */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_opengl; path = ../../../../modules/juce_opengl; sourceTree = SOURCE_ROOT; };
6D1F9E505D20C09647124F0A /* include_juce_audio_basics.mm */ /* include_juce_audio_basics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_basics.mm; path = ../../JuceLibraryCode/include_juce_audio_basics.mm; sourceTree = SOURCE_ROOT; };
70F1CAF3C4C561DD81E6AFC1 /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
74711D7544168CCAC4969A07 /* BinaryData.cpp */ /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
7525879E73E8AF32FFA0CDDE /* include_juce_data_structures.mm */ /* include_juce_data_structures.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_data_structures.mm; path = ../../JuceLibraryCode/include_juce_data_structures.mm; sourceTree = SOURCE_ROOT; };
77C0AC21C1028911123844FC /* Main.cpp */ /* Main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = SOURCE_ROOT; };
@ -161,7 +161,7 @@
1FD6DBAC73414DD4C152E34E,
5273768FBB55D0DD57A5E70C,
9D2DAC7D0C9DB77CB83E2992,
70F1CAF3C4C561DD81E6AFC1,
3A798A17A29957CC426E04FB,
);
name = Resources;
sourceTree = "<group>";
@ -363,7 +363,7 @@
files = (
1282A62308CD1AC3F88A5D03,
D832165EE981EF309D4B21BF,
006DF460F8DF66EFFA80D968,
6E24A926494D678975AA56E5,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -10,7 +10,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>Icon.icns</string>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.juce.theprojucer</string>
<key>CFBundleName</key>

View file

@ -16,7 +16,6 @@
10E26DA28CF28BBFDC64E796 /* include_juce_core_CompilationTime.cpp */ = {isa = PBXBuildFile; fileRef = 5F0374A45E6B5EC8E47D688F; };
11D42F7EC6E6539D79A7F4B1 /* QuartzCore.framework */ = {isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; };
13180B0F6CE42B355C90CF3C /* include_juce_graphics_Harfbuzz.cpp */ = {isa = PBXBuildFile; fileRef = 39F69DABE999E4B2CBC6041F; };
1321E6C1C6170B6C898AD09D /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; };
234B6BA2952CBC7C61EF70EF /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 5867DC4E39DF8539B54C0D59; };
241F29FCBB7A17BB44A0B10C /* Cocoa.framework */ = {isa = PBXBuildFile; fileRef = D1F9B0E9F5D54FE48BEB46EA; };
244567D3AE2E417A8CB2B95E /* jucer_ProjectExporter.cpp */ = {isa = PBXBuildFile; fileRef = C3BB9F92B02B06D04A73794C; };
@ -39,6 +38,7 @@
6DD9DA1677A6CF789CDAB478 /* jucer_AutoUpdater.cpp */ = {isa = PBXBuildFile; fileRef = 0D4D508C638BC74943B9976D; };
6ECB2F11D2F593FACCCF99DB /* jucer_ProjucerLookAndFeel.cpp */ = {isa = PBXBuildFile; fileRef = 0F8C000E5FF4A2DAC1FEF8EB; };
71713DE4716DCEDB45A206E2 /* jucer_OpenDocumentManager.cpp */ = {isa = PBXBuildFile; fileRef = F9111E150CFF155329D44853; };
7E43279B5881EA0FFDA49647 /* AppIcon.icon */ = {isa = PBXBuildFile; fileRef = E09429B88DD8ADA381D4BF61; };
7F1928D425D075E93DC254A8 /* Metal.framework */ = {isa = PBXBuildFile; fileRef = E419F3AED6A220EDCB179A8C; settings = { ATTRIBUTES = (Weak, ); }; };
8BE478303CDF061B72F219E2 /* jucer_CodeHelpers.cpp */ = {isa = PBXBuildFile; fileRef = F2E4998FB2C7221587A79F8B; };
908B7D4FB180F53405DA8EF9 /* jucer_StartPageComponent.cpp */ = {isa = PBXBuildFile; fileRef = 82C18723A3D0E39BBD8F0F6E; };
@ -54,6 +54,7 @@
D0E26EB54B0087C8BE3D541E /* jucer_Icons.cpp */ = {isa = PBXBuildFile; fileRef = 846B2A670C5A19DE0039E11A; };
D5C9125F65493CA481F18E53 /* include_juce_cryptography.mm */ = {isa = PBXBuildFile; fileRef = D766BB9D8C32B5560F0493F3; };
D76134C6646C526A210A78E2 /* include_juce_graphics_Sheenbidi.c */ = {isa = PBXBuildFile; fileRef = 276A4D5D4A2DD84C6D41F0CA; };
DBE437EE41F174A6F27FC0E2 /* AppIcon.icns */ = {isa = PBXBuildFile; fileRef = F3FE62637ACC2263A7594E8A; };
DD0FF38F7E8DE0220D73671D /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = BF006EF584FB274FF0319E08; };
EE722B47BC36CC8A87E0FB76 /* jucer_AppearanceSettings.cpp */ = {isa = PBXBuildFile; fileRef = BE618CE21C794BDEE319E328; };
F15F0512666FF8CDC0D08905 /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 0462692BAA9CD1BE6DFBCC33; };
@ -150,6 +151,7 @@
6FD8DBC0FF42C87D8BEE2452 /* jucer_TranslationHelpers.h */ /* jucer_TranslationHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TranslationHelpers.h; path = ../../Source/Utility/Helpers/jucer_TranslationHelpers.h; sourceTree = SOURCE_ROOT; };
70D3399C01D1EF2CD059B2A4 /* jucer_Sidebar.h */ /* jucer_Sidebar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Sidebar.h; path = ../../Source/Project/UI/Sidebar/jucer_Sidebar.h; sourceTree = SOURCE_ROOT; };
7AB7640968FAAC73072FBD10 /* juce_gui_basics */ /* juce_gui_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_basics; path = ../../../../modules/juce_gui_basics; sourceTree = SOURCE_ROOT; };
7C2F4A961A17B2E2ADD1B407 /* icon.json */ /* icon.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = icon.json; path = ../../Source/Assets/AppIcon.icon/icon.json; sourceTree = SOURCE_ROOT; };
7CA44FF0BA319517C6E39651 /* jucer_Application.cpp */ /* jucer_Application.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Application.cpp; path = ../../Source/Application/jucer_Application.cpp; sourceTree = SOURCE_ROOT; };
807049CA2D5B6DE18EA078F2 /* export_android.svg */ /* export_android.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = export_android.svg; path = ../../Source/BinaryData/Icons/export_android.svg; sourceTree = SOURCE_ROOT; };
82C18723A3D0E39BBD8F0F6E /* jucer_StartPageComponent.cpp */ /* jucer_StartPageComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_StartPageComponent.cpp; path = ../../Source/Application/StartPage/jucer_StartPageComponent.cpp; sourceTree = SOURCE_ROOT; };
@ -168,7 +170,6 @@
921D263A2EAFD96C8D389693 /* JuceLV2Defines.h.in */ /* JuceLV2Defines.h.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = JuceLV2Defines.h.in; path = ../../../Build/CMake/JuceLV2Defines.h.in; sourceTree = SOURCE_ROOT; };
92926A4D3CC4BB2A9D35EB0B /* jucer_UTF8WindowComponent.h */ /* jucer_UTF8WindowComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_UTF8WindowComponent.h; path = ../../Source/Application/Windows/jucer_UTF8WindowComponent.h; sourceTree = SOURCE_ROOT; };
92A66A8BD87F98EB6B4FB6D0 /* jucer_ProjectContentComponent.h */ /* jucer_ProjectContentComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectContentComponent.h; path = ../../Source/Project/UI/jucer_ProjectContentComponent.h; sourceTree = SOURCE_ROOT; };
951128CA33CCDEF570436B1C /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; };
96A1EC6B50DBD2C526C60338 /* jucer_AudioPluginARADocumentControllerTemplate.cpp */ /* jucer_AudioPluginARADocumentControllerTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARADocumentControllerTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp; sourceTree = SOURCE_ROOT; };
983CFBA01CA8811F30FA7F4C /* jucer_MiscUtilities.h */ /* jucer_MiscUtilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MiscUtilities.h; path = ../../Source/Utility/Helpers/jucer_MiscUtilities.h; sourceTree = SOURCE_ROOT; };
988A3851FBA511FB0B8FF754 /* jucer_AudioPluginARAEditorTemplate.h */ /* jucer_AudioPluginARAEditorTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginARAEditorTemplate.h; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.h; sourceTree = SOURCE_ROOT; };
@ -224,6 +225,7 @@
DE4A987B2D5529990A6AA9D4 /* jucer_AboutWindowComponent.h */ /* jucer_AboutWindowComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AboutWindowComponent.h; path = ../../Source/Application/Windows/jucer_AboutWindowComponent.h; sourceTree = SOURCE_ROOT; };
DF40404150A5A3D6F5AAC856 /* MetalKit.framework */ /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
DFBEB8E086832AEB0FBEADF0 /* jucer_StoredSettings.h */ /* jucer_StoredSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_StoredSettings.h; path = ../../Source/Settings/jucer_StoredSettings.h; sourceTree = SOURCE_ROOT; };
E09429B88DD8ADA381D4BF61 /* AppIcon.icon */ /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = file.icon; name = AppIcon.icon; path = ../../Source/Assets/AppIcon.icon; sourceTree = SOURCE_ROOT; };
E111A336FE13C033EAA0A1D1 /* jucer_NewCppFileTemplate.h */ /* jucer_NewCppFileTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_NewCppFileTemplate.h; path = ../../Source/BinaryData/Templates/jucer_NewCppFileTemplate.h; sourceTree = SOURCE_ROOT; };
E13A54A6D3A1895EACE53E51 /* jucer_ResourceFile.cpp */ /* jucer_ResourceFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ResourceFile.cpp; path = ../../Source/ProjectSaving/jucer_ResourceFile.cpp; sourceTree = SOURCE_ROOT; };
E186BC01A1B1529937A46485 /* jucer_FileHelpers.h */ /* jucer_FileHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FileHelpers.h; path = ../../Source/Utility/Helpers/jucer_FileHelpers.h; sourceTree = SOURCE_ROOT; };
@ -246,9 +248,11 @@
F2E4998FB2C7221587A79F8B /* jucer_CodeHelpers.cpp */ /* jucer_CodeHelpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_CodeHelpers.cpp; path = ../../Source/Utility/Helpers/jucer_CodeHelpers.cpp; sourceTree = SOURCE_ROOT; };
F313EE01ECE306DB2CFE011D /* UnityPluginGUIScript.cs.in */ /* UnityPluginGUIScript.cs.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = UnityPluginGUIScript.cs.in; path = ../../../Build/CMake/UnityPluginGUIScript.cs.in; sourceTree = SOURCE_ROOT; };
F3CCA5545AB7B4B603D0BFEB /* jucer_AudioPluginARAPlaybackRendererTemplate.cpp */ /* jucer_AudioPluginARAPlaybackRendererTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARAPlaybackRendererTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp; sourceTree = SOURCE_ROOT; };
F3FE62637ACC2263A7594E8A /* AppIcon.icns */ /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = AppIcon.icns; path = AppIcon.icns; sourceTree = SOURCE_ROOT; };
F58B23995765C9FDBE28F871 /* jucer_Modules.cpp */ /* jucer_Modules.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Modules.cpp; path = ../../Source/Project/Modules/jucer_Modules.cpp; sourceTree = SOURCE_ROOT; };
F5DD97B45B8EA60C1ED0DD80 /* jucer_StoredSettings.cpp */ /* jucer_StoredSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_StoredSettings.cpp; path = ../../Source/Settings/jucer_StoredSettings.cpp; sourceTree = SOURCE_ROOT; };
F63F46CA0A51C679867855A7 /* jucer_ProjectMessagesComponent.h */ /* jucer_ProjectMessagesComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectMessagesComponent.h; path = ../../Source/Project/UI/jucer_ProjectMessagesComponent.h; sourceTree = SOURCE_ROOT; };
F6410ADB98961EC4A6304A21 /* juceicon.svg */ /* juceicon.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = juceicon.svg; path = ../../Source/Assets/AppIcon.icon/Assets/juceicon.svg; sourceTree = SOURCE_ROOT; };
F7C74E934C954F6F1A3BE4F9 /* jucer_TranslationToolWindowComponent.h */ /* jucer_TranslationToolWindowComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_TranslationToolWindowComponent.h; path = ../../Source/Application/Windows/jucer_TranslationToolWindowComponent.h; sourceTree = SOURCE_ROOT; };
F84D031B2A6BB1EE6A316C71 /* PIPConsole.cpp.in */ /* PIPConsole.cpp.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = PIPConsole.cpp.in; path = ../../../Build/CMake/PIPConsole.cpp.in; sourceTree = SOURCE_ROOT; };
F8A38C0C7C45F2DB6A5FB812 /* wizard_Highlight.svg */ /* wizard_Highlight.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = wizard_Highlight.svg; path = ../../Source/BinaryData/Icons/wizard_Highlight.svg; sourceTree = SOURCE_ROOT; };
@ -365,6 +369,14 @@
name = Source;
sourceTree = "<group>";
};
4BCEED1C2E8D6C62E3DA4231 /* Assets */ = {
isa = PBXGroup;
children = (
F6410ADB98961EC4A6304A21,
);
name = Assets;
sourceTree = "<group>";
};
4DCC5D64BBE8DE85360A3D57 /* ProjectSaving */ = {
isa = PBXGroup;
children = (
@ -405,12 +417,21 @@
name = gradle;
sourceTree = "<group>";
};
7CEEEE4F800F5DB9728F9271 /* Assets */ = {
isa = PBXGroup;
children = (
F05A70E37CDE3CF34503940F,
);
name = Assets;
sourceTree = "<group>";
};
8180B5894A78501084B8F133 /* Resources */ = {
isa = PBXGroup;
children = (
E266DE67FF319D56F63193A6,
6678E9B3EEACAD47F438B264,
951128CA33CCDEF570436B1C,
F3FE62637ACC2263A7594E8A,
E09429B88DD8ADA381D4BF61,
);
name = Resources;
sourceTree = "<group>";
@ -584,6 +605,7 @@
isa = PBXGroup;
children = (
BC67FD952A6F210A11A1ECB8,
7CEEEE4F800F5DB9728F9271,
DC3A4B0AD79334BA8A7E0661,
F1B44F007A02A0FAE4DC8D79,
89E9055A179B4C2019B4E1AE,
@ -676,6 +698,15 @@
name = Settings;
sourceTree = "<group>";
};
F05A70E37CDE3CF34503940F /* AppIcon.icon */ = {
isa = PBXGroup;
children = (
4BCEED1C2E8D6C62E3DA4231,
7C2F4A961A17B2E2ADD1B407,
);
name = AppIcon.icon;
sourceTree = "<group>";
};
F1B44F007A02A0FAE4DC8D79 /* CodeEditor */ = {
isa = PBXGroup;
children = (
@ -766,7 +797,8 @@
buildActionMask = 2147483647;
files = (
2610F357881240ACBF612F48,
1321E6C1C6170B6C898AD09D,
DBE437EE41F174A6F27FC0E2,
7E43279B5881EA0FFDA49647,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -825,6 +857,7 @@
0BC15DC2E5FE5ECFFB398D49 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
@ -892,6 +925,7 @@
0CC6C439D038EDA0D7F10DF0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;

View file

@ -2944,6 +2944,8 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\Assets\AppIcon.icon\Assets\juceicon.svg"/>
<None Include="..\..\Source\Assets\AppIcon.icon\icon.json"/>
<None Include="..\..\..\Build\CMake\JuceLV2Defines.h.in"/>
<None Include="..\..\..\Build\CMake\LaunchScreen.storyboard"/>
<None Include="..\..\..\Build\CMake\PIPAudioProcessor.cpp.in"/>

View file

@ -11,6 +11,15 @@
<Filter Include="Projucer\Application">
<UniqueIdentifier>{4F8BCD36-CE20-D951-FB82-2CCEDD0C5898}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets\AppIcon.icon\Assets">
<UniqueIdentifier>{B2D403C0-2D43-F167-C19F-47D66D35F066}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets\AppIcon.icon">
<UniqueIdentifier>{64127AE2-0F4C-1DEE-6C29-626091A3A9CB}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets">
<UniqueIdentifier>{D247D8BA-48E6-6F87-156E-E999D3678EB6}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\BinaryData\gradle">
<UniqueIdentifier>{661FA330-2192-FAA3-E7B2-FAF8EBB783C6}</UniqueIdentifier>
</Filter>
@ -5243,6 +5252,12 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\Assets\AppIcon.icon\Assets\juceicon.svg">
<Filter>Projucer\Assets\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\Assets\AppIcon.icon\icon.json">
<Filter>Projucer\Assets\AppIcon.icon</Filter>
</None>
<None Include="..\..\..\Build\CMake\JuceLV2Defines.h.in">
<Filter>Projucer\BinaryData</Filter>
</None>

View file

@ -2944,6 +2944,8 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\Assets\AppIcon.icon\Assets\juceicon.svg"/>
<None Include="..\..\Source\Assets\AppIcon.icon\icon.json"/>
<None Include="..\..\..\Build\CMake\JuceLV2Defines.h.in"/>
<None Include="..\..\..\Build\CMake\LaunchScreen.storyboard"/>
<None Include="..\..\..\Build\CMake\PIPAudioProcessor.cpp.in"/>

View file

@ -11,6 +11,15 @@
<Filter Include="Projucer\Application">
<UniqueIdentifier>{4F8BCD36-CE20-D951-FB82-2CCEDD0C5898}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets\AppIcon.icon\Assets">
<UniqueIdentifier>{B2D403C0-2D43-F167-C19F-47D66D35F066}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets\AppIcon.icon">
<UniqueIdentifier>{64127AE2-0F4C-1DEE-6C29-626091A3A9CB}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets">
<UniqueIdentifier>{D247D8BA-48E6-6F87-156E-E999D3678EB6}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\BinaryData\gradle">
<UniqueIdentifier>{661FA330-2192-FAA3-E7B2-FAF8EBB783C6}</UniqueIdentifier>
</Filter>
@ -5243,6 +5252,12 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\Assets\AppIcon.icon\Assets\juceicon.svg">
<Filter>Projucer\Assets\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\Assets\AppIcon.icon\icon.json">
<Filter>Projucer\Assets\AppIcon.icon</Filter>
</None>
<None Include="..\..\..\Build\CMake\JuceLV2Defines.h.in">
<Filter>Projucer\BinaryData</Filter>
</None>

View file

@ -2944,6 +2944,8 @@
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\Assets\AppIcon.icon\Assets\juceicon.svg"/>
<None Include="..\..\Source\Assets\AppIcon.icon\icon.json"/>
<None Include="..\..\..\Build\CMake\JuceLV2Defines.h.in"/>
<None Include="..\..\..\Build\CMake\LaunchScreen.storyboard"/>
<None Include="..\..\..\Build\CMake\PIPAudioProcessor.cpp.in"/>

View file

@ -11,6 +11,15 @@
<Filter Include="Projucer\Application">
<UniqueIdentifier>{4F8BCD36-CE20-D951-FB82-2CCEDD0C5898}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets\AppIcon.icon\Assets">
<UniqueIdentifier>{B2D403C0-2D43-F167-C19F-47D66D35F066}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets\AppIcon.icon">
<UniqueIdentifier>{64127AE2-0F4C-1DEE-6C29-626091A3A9CB}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\Assets">
<UniqueIdentifier>{D247D8BA-48E6-6F87-156E-E999D3678EB6}</UniqueIdentifier>
</Filter>
<Filter Include="Projucer\BinaryData\gradle">
<UniqueIdentifier>{661FA330-2192-FAA3-E7B2-FAF8EBB783C6}</UniqueIdentifier>
</Filter>
@ -5243,6 +5252,12 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Source\Assets\AppIcon.icon\Assets\juceicon.svg">
<Filter>Projucer\Assets\AppIcon.icon\Assets</Filter>
</None>
<None Include="..\..\Source\Assets\AppIcon.icon\icon.json">
<Filter>Projucer\Assets\AppIcon.icon</Filter>
</None>
<None Include="..\..\..\Build\CMake\JuceLV2Defines.h.in">
<Filter>Projucer\BinaryData</Filter>
</None>

View file

@ -33,6 +33,7 @@
juce_add_gui_app(Projucer
BUNDLE_ID com.juce.theprojucer
ICON_BIG ${CMAKE_CURRENT_SOURCE_DIR}/Source/BinaryData/Icons/juce_icon.png
ICON_COMPOSER_BUNDLE "${CMAKE_CURRENT_SOURCE_DIR}/Source/Assets/AppIcon.icon"
DOCUMENT_EXTENSIONS jucer
NEEDS_CURL TRUE
NEEDS_WEB_BROWSER TRUE)

View file

@ -8,7 +8,7 @@
<XCODE_MAC targetFolder="Builds/MacOSX" documentExtensions=".jucer" bigIcon="Zrx1Gl"
microphonePermissionNeeded="1" cameraPermissionNeeded="1" smallIcon="Zrx1Gl"
applicationCategory="public.app-category.developer-tools" extraLinkerFlags="-Wl,-weak_reference_mismatches,weak"
extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1">
extraDefs="JUCE_SILENCE_XCODE_15_LINKER_WARNING=1" iconComposerIcon="NzgaRC">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" isDebug="1" targetName="Projucer" cppLibType="libc++"
recommendedWarnings="LLVM"/>
@ -30,7 +30,8 @@
smallIcon="Zrx1Gl">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" isDebug="1" targetName="Projucer" useRuntimeLibDLL="0"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Projucer" useRuntimeLibDLL="0" linkTimeOptimisation="0"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Projucer"
useRuntimeLibDLL="0" linkTimeOptimisation="0"/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
@ -47,7 +48,8 @@
smallIcon="Zrx1Gl">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" isDebug="1" targetName="Projucer" useRuntimeLibDLL="0"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Projucer" useRuntimeLibDLL="0" linkTimeOptimisation="0"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Projucer"
useRuntimeLibDLL="0" linkTimeOptimisation="0"/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
@ -64,7 +66,8 @@
smallIcon="Zrx1Gl">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" isDebug="1" targetName="Projucer" useRuntimeLibDLL="0"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Projucer" useRuntimeLibDLL="0" linkTimeOptimisation="0"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Projucer"
useRuntimeLibDLL="0" linkTimeOptimisation="0"/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
@ -153,6 +156,14 @@
<FILE id="HmkREh" name="jucer_MainWindow.h" compile="0" resource="0"
file="Source/Application/jucer_MainWindow.h"/>
</GROUP>
<GROUP id="{D6EDA167-C7F5-88EC-9ABB-F8A6FBD578D4}" name="Assets">
<GROUP id="{3919996E-77AB-F182-188C-87501AD9DE7C}" name="AppIcon.icon">
<GROUP id="{505EB9E7-A196-65D1-8589-3785B985B85F}" name="Assets">
<FILE id="nYspxh" name="juceicon.svg" compile="0" resource="0" file="Source/Assets/AppIcon.icon/Assets/juceicon.svg"/>
</GROUP>
<FILE id="NzgaRC" name="icon.json" compile="0" resource="0" file="Source/Assets/AppIcon.icon/icon.json"/>
</GROUP>
</GROUP>
<GROUP id="{BFDB3102-5EB6-41E0-043A-05C0DFF7A34D}" name="BinaryData">
<FILE id="wkLB4B" name="JuceLV2Defines.h.in" compile="0" resource="1"
file="../Build/CMake/JuceLV2Defines.h.in"/>

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1024"
height="1024"
viewBox="0 0 1024 1024"
version="1.1"
id="svg10"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs10" /><path
id="ellipse1"
style="opacity:1;fill:#8dc63f;stroke:none;stroke-width:0;stroke-dasharray:none"
d="M 512,102 A 410,410 0 0 0 102,512 410,410 0 0 0 512,922 410,410 0 0 0 922,512 410,410 0 0 0 512,102 Z m 0,60.29412 A 349.70588,349.70588 0 0 1 861.70588,512 349.70588,349.70588 0 0 1 512,861.70588 349.70588,349.70588 0 0 1 162.29412,512 349.70588,349.70588 0 0 1 512,162.29412 Z" /><path
d="m 557.74075,584.53575 c 24.52179,61.52243 51.27562,122.92312 84.24282,184.1717 a 42.226977,42.597119 0 0 0 61.04816,14.33089 331.7834,334.69165 0 0 0 85.3588,-87.71966 41.44276,41.80603 0 0 0 -22.95337,-63.13498 C 700.1663,612.43688 639.63092,588.12608 580.60365,562.50697 a 17.132088,17.282259 0 0 0 -22.8629,22.02878 z"
fill="#f3bd48"
id="path2"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 590.91909,532.71941 c 62.04349,26.86661 125.47444,52.18148 194.15361,72.08042 a 42.226977,42.597119 0 0 0 53.17582,-33.13449 327.95279,330.82747 0 0 0 -1.11599,-125.08337 42.226977,42.597119 0 0 0 -60.86718,-28.87477 c -61.77205,32.61722 -123.42342,58.90573 -184.924,83.24695 a 16.981278,17.130126 0 0 0 -0.42226,31.76526 z"
fill="#f09f53"
id="path3"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="M 527.57862,592.75092 A 17.252737,17.403965 0 0 0 495.8179,592.2641 c -26.8443,61.88755 -52.08998,125.11382 -71.96685,193.51262 a 41.774545,42.14072 0 0 0 33.41965,53.33768 339.23342,342.20698 0 0 0 54.8649,4.50313 335.40285,338.34283 0 0 0 69.01096,-7.18067 41.71422,42.079868 0 0 0 28.74449,-60.85301 C 577.5271,714.54826 551.4972,653.57352 527.57862,592.75092 Z"
fill="#ecdc13"
id="path4"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 499.58815,434.0158 a 17.252737,17.403965 0 0 0 31.76075,0.48684 c 27.14588,-62.49607 52.5424,-126.45259 72.38908,-195.73377 a 41.834868,42.201575 0 0 0 -33.17835,-53.21597 337.81583,340.77695 0 0 0 -125.98718,1.67347 41.684058,42.04944 0 0 0 -28.5937,60.82258 c 32.69575,62.16137 59.14793,124.14018 83.6094,185.96685 z"
fill="#a95a96"
id="path5"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 255.90835,396.80418 c 68.10609,20.47704 131.05444,45.94405 192.49468,72.74979 A 17.132088,17.282259 0 0 0 471.23578,447.4339 C 445.68845,382.96012 418.05993,318.60804 383.22269,254.37768 a 42.226977,42.597119 0 0 0 -61.04814,-14.33088 332.35645,335.26975 0 0 0 -89.94346,93.86578 41.653895,42.019015 0 0 0 23.67726,62.8916 z"
fill="#2b8ec1"
id="path6"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 466.62096,580.54989 a 17.132088,17.282259 0 0 0 -22.13901,-22.81987 c -62.82768,25.0106 -125.53475,51.99891 -188.091,85.86361 a 41.44276,41.80603 0 0 0 -14.14604,61.279 331.99452,334.90464 0 0 0 90.87849,86.44172 42.226977,42.597119 0 0 0 62.73722,-23.21542 c 20.11813,-66.26896 44.73043,-127.54796 70.76034,-187.54904 z"
fill="#add14c"
id="path7"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="m 559.45998,448.31627 a 17.101925,17.251833 0 0 0 22.10885,22.85033 c 63.15947,-25.1019 126.16815,-52.33362 189.05622,-86.44174 a 41.503085,41.866882 0 0 0 14.50797,-60.85303 332.17549,335.08718 0 0 0 -90.75785,-88.84542 42.226977,42.597119 0 0 0 -63.12932,23.00245 C 610.97689,325.33231 585.882,387.58495 559.45998,448.31627 Z"
fill="#e74253"
id="path8"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /><path
d="M 433.11085,497.02912 C 370.73557,469.97994 307.03316,444.57381 238.02221,424.52273 a 42.226977,42.597119 0 0 0 -53.29647,33.46918 331.2103,334.11355 0 0 0 -4.34335,53.85492 327.28923,330.1581 0 0 0 7.84216,71.98912 42.046003,42.41456 0 0 0 60.59571,27.62728 c 61.34976,-32.43465 122.60904,-58.63191 183.77781,-82.82097 a 16.981278,17.130126 0 0 0 0.51278,-31.61314 z"
fill="#01b699"
id="path9"
style="stroke:none;stroke-width:0;stroke-dasharray:none" /></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,27 @@
{
"fill" : "system-light",
"groups" : [
{
"blur-material" : null,
"layers" : [
{
"hidden" : false,
"image-name" : "juceicon.svg",
"name" : "juceicon"
}
],
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : false,
"value" : 0
}
}
],
"supported-platforms" : {
"squares" : "shared"
}
}

View file

@ -1616,6 +1616,30 @@ void Project::findAllImageItems (OwnedArray<Project::Item>& items)
findImages (getMainGroup(), items);
}
static void findIconComposerIcons (const Project::Item& item, std::vector<Project::IconComposerNameAndItem>& found)
{
if (item.isFile())
{
const auto f = item.getFile();
const auto parent = f.getParentDirectory();
if (f.getFileName() == "icon.json" && parent.hasFileExtension ("icon"))
found.push_back ({ parent.getFileName(), item });
}
else if (item.isGroup())
{
for (int i = 0; i < item.getNumChildren(); ++i)
findIconComposerIcons (item.getChild (i), found);
}
}
std::vector<Project::IconComposerNameAndItem> Project::findAllIconComposerItems()
{
std::vector<Project::IconComposerNameAndItem> items;
findIconComposerIcons (getMainGroup(), items);
return items;
}
//==============================================================================
Project::Item::Item (Project& p, const ValueTree& s, bool isModuleCode)
: project (p), state (s), belongsToModule (isModuleCode)
@ -1997,13 +2021,27 @@ bool Project::Item::addFileRetainingSortOrder (const File& file, bool shouldComp
return true;
}
static bool isPartOfIconComposerBundle (const File& file)
{
const auto parent = file.getParentDirectory();
if (parent.isRoot())
return false;
if (parent.getFileName().endsWith (".icon") && parent.getChildFile ("icon.json").existsAsFile())
return true;
return isPartOfIconComposerBundle (parent);
}
void Project::Item::addFileUnchecked (const File& file, int insertIndex, const bool shouldCompile)
{
Item item (project, ValueTree (Ids::FILE), belongsToModule);
item.initialiseMissingProperties();
item.getNameValue() = file.getFileName();
item.getShouldCompileValue() = shouldCompile && file.hasFileExtension (fileTypesToCompileByDefault);
item.getShouldAddToBinaryResourcesValue() = project.shouldBeAddedToBinaryResourcesByDefault (file);
item.getShouldAddToBinaryResourcesValue() = project.shouldBeAddedToBinaryResourcesByDefault (file)
&& ! isPartOfIconComposerBundle (file);
if (canContain (item))
{

View file

@ -527,6 +527,14 @@ public:
void findAllImageItems (OwnedArray<Item>& items);
struct IconComposerNameAndItem
{
String name;
Item item;
};
std::vector<IconComposerNameAndItem> findAllIconComposerItems();
//==============================================================================
ValueTree getExporters();
int getNumExporters();

View file

@ -209,6 +209,7 @@ public:
iosDeviceFamilyValue (settings, Ids::iosDeviceFamily, getUndoManager(), "1,2"),
iPhoneScreenOrientationValue (settings, Ids::iPhoneScreenOrientation, getUndoManager(), getDefaultScreenOrientations(), ","),
iPadScreenOrientationValue (settings, Ids::iPadScreenOrientation, getUndoManager(), getDefaultScreenOrientations(), ","),
iconComposerIconValue (settings, Ids::iconComposerIcon, getUndoManager()),
customXcodeResourceFoldersValue (settings, Ids::customXcodeResourceFolders, getUndoManager()),
customXcassetsFolderValue (settings, Ids::customXcassetsFolder, getUndoManager()),
appSandboxValue (settings, Ids::appSandbox, getUndoManager()),
@ -464,8 +465,35 @@ public:
return false;
}
void createIconComposerProperties (PropertyListBuilder& props)
{
StringArray choices;
Array<var> ids;
choices.add ("<None>");
ids.add (var());
for (const auto& icon : project.findAllIconComposerItems())
{
choices.add (icon.name);
ids.add (icon.item.getID());
}
String iconComposerTooltip
{
"Sets an Icon Composer icon to use for the executable. If specified, Xcode versions that "
"support this format will use this icon for all platforms, and ignore the Icon (Small) "
"and Icon (Large) setting."
};
props.add (new ChoicePropertyComponent (iconComposerIconValue, "Icon (Icon Composer)", choices, ids),
iconComposerTooltip);
}
void createExporterProperties (PropertyListBuilder& props) override
{
createIconComposerProperties (props);
if (iOS)
{
props.add (new TextPropertyComponent (customXcassetsFolderValue, "Custom Xcassets Folder", 128, false),
@ -1219,6 +1247,31 @@ public:
kXPCServicesFolder = 16
};
std::optional<build_tools::RelativePath> getIconComposerIconBundle() const
{
const auto iconJson = project.getMainGroup().findItemWithID (settings[Ids::iconComposerIcon]);
if (! iconJson.isValid())
return std::nullopt;
jassert (iconJson.isFile());
return build_tools::RelativePath { iconJson.getFile().getParentDirectory(),
project.getProjectFolder(),
build_tools::RelativePath::projectFolder };
}
String getAppIconNameOrElse (StringRef fallback) const
{
if (auto composerBundle = getIconComposerIconBundle())
return composerBundle->getFileNameWithoutExtension();
if (iOS)
return "AppIcon";
return fallback;
}
//==============================================================================
struct XcodeTarget final : build_tools::ProjectType::Target
{
@ -1864,10 +1917,11 @@ public:
String gccVersion ("com.apple.compilers.llvm.clang.1_0");
if (auto appIconName = owner.getAppIconNameOrElse (""); appIconName.isNotEmpty())
s.set ("ASSETCATALOG_COMPILER_APPICON_NAME", appIconName);
if (owner.iOS)
{
s.set ("ASSETCATALOG_COMPILER_APPICON_NAME", "AppIcon");
if (! owner.shouldAddStoryboardToProject())
s.set ("ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME", "LaunchImage");
}
@ -2424,6 +2478,17 @@ private:
resourceIDs.add (addBuildFile (FileOptions().withRelativePath (iconPath)));
resourceFileRefs.add (createFileRefID (iconPath));
}
if (auto iconComposerBundle = getIconComposerIconBundle())
{
const auto iconComposerPath = iconComposerBundle->rebased (project.getProjectFolder(),
getTargetFolder(),
build_tools::RelativePath::buildTargetFolder);
addFileReference (iconComposerPath.toUnixStyle());
resourceIDs.add (addBuildFile (FileOptions().withRelativePath (iconComposerPath)));
resourceFileRefs.add (createFileRefID (iconComposerPath));
}
}
void addBuildConfigurations() const
@ -2722,7 +2787,7 @@ private:
if (! build_tools::asArray (icons).isEmpty())
{
iconFile = getTargetFolder().getChildFile ("Icon.icns");
iconFile = getTargetFolder().getChildFile (getAppIconNameOrElse ("AppIcon") + ".icns");
build_tools::writeMacIcon (icons, iconFile);
}
}
@ -3820,7 +3885,8 @@ private:
{
const auto assetsPath = build_tools::createXcassetsFolderFromIcons (getIcons(),
getTargetFolder(),
project.getProjectFilenameRootString());
project.getProjectFilenameRootString(),
getAppIconNameOrElse ("AppIcon"));
addFileReference (assetsPath.toUnixStyle());
resourceIDs.add (addBuildFile (FileOptions().withRelativePath (assetsPath)));
resourceFileRefs.add (createFileRefID (assetsPath));
@ -3959,7 +4025,7 @@ private:
extraFrameworksValue, frameworkSearchPathsValue, extraCustomFrameworksValue, embeddedFrameworksValue,
postbuildCommandValue, prebuildCommandValue,
duplicateAppExResourcesFolderValue, iosDeviceFamilyValue, iPhoneScreenOrientationValue,
iPadScreenOrientationValue, customXcodeResourceFoldersValue, customXcassetsFolderValue,
iPadScreenOrientationValue, iconComposerIconValue, customXcodeResourceFoldersValue, customXcassetsFolderValue,
appSandboxValue, appSandboxInheritanceValue, appSandboxOptionsValue,
appSandboxHomeDirROValue, appSandboxHomeDirRWValue, appSandboxAbsDirROValue, appSandboxAbsDirRWValue,
appSandboxExceptionIOKitValue,

View file

@ -159,6 +159,7 @@ namespace Ids
DECLARE_ID (msvcModuleDefinitionFile);
DECLARE_ID (bigIcon);
DECLARE_ID (smallIcon);
DECLARE_ID (iconComposerIcon);
DECLARE_ID (prebuildCommand);
DECLARE_ID (postbuildCommand);
DECLARE_ID (useRuntimeLibDLL);

View file

@ -364,7 +364,7 @@ void UpdateRegion::findRECTAndValidate (HWND windowHandle)
{
numRect = 0;
auto regionHandle = CreateRectRgn (0, 0, 0, 0);
auto* regionHandle = CreateRectRgn (0, 0, 0, 0);
if (regionHandle == nullptr)
{
@ -372,33 +372,36 @@ void UpdateRegion::findRECTAndValidate (HWND windowHandle)
return;
}
auto regionType = GetUpdateRgn (windowHandle, regionHandle, false);
const ScopeGuard regionDeleter { [&] { DeleteObject (regionHandle); } };
const auto regionType = GetUpdateRgn (windowHandle, regionHandle, false);
if (regionType == SIMPLEREGION || regionType == COMPLEXREGION)
if (regionType == ERROR || regionType == NULLREGION)
return;
const auto requiredBytes = GetRegionData (regionHandle, 0, nullptr);
block.ensureSize (requiredBytes);
const auto regionDataResult = GetRegionData (regionHandle,
(DWORD) block.getSize(),
static_cast<RGNDATA*> (block.getData()));
numRect = std::invoke ([&]() -> decltype (numRect)
{
auto regionDataBytes = GetRegionData (regionHandle, (DWORD) block.getSize(), (RGNDATA*) block.getData());
if (regionDataResult < sizeof (RGNDATAHEADER))
return 0;
if (regionDataBytes > block.getSize())
{
block.ensureSize (regionDataBytes);
regionDataBytes = GetRegionData (regionHandle, (DWORD) block.getSize(), (RGNDATA*) block.getData());
}
const auto* header = static_cast<RGNDATAHEADER const* const> (block.getData());
if (regionDataBytes > 0)
{
auto header = (RGNDATAHEADER const* const) block.getData();
if (header->iType != RDH_RECTANGLES)
return 0;
if (header->iType == RDH_RECTANGLES)
numRect = header->nCount;
}
}
return header->nCount;
});
if (numRect > 0)
ValidateRgn (windowHandle, regionHandle);
else
ValidateRect (windowHandle, nullptr);
DeleteObject (regionHandle);
}
//==============================================================================

View file

@ -297,101 +297,13 @@ private:
};
//==============================================================================
struct Direct2DHwndContext::HwndPimpl : public Direct2DGraphicsContext::Pimpl
struct Direct2DHwndContext::HwndPimpl : public Pimpl
{
private:
struct SwapChainThread
{
SwapChainThread (Direct2DHwndContext::HwndPimpl& ownerIn, HANDLE swapHandle)
: owner (ownerIn),
swapChainEventHandle (swapHandle)
{
SetWindowSubclass (owner.hwnd, subclassWindowProc, (UINT_PTR) this, (DWORD_PTR) this);
}
~SwapChainThread()
{
RemoveWindowSubclass (owner.hwnd, subclassWindowProc, (UINT_PTR) this);
SetEvent (quitEvent.getHandle());
thread.join();
}
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SwapChainThread)
private:
Direct2DHwndContext::HwndPimpl& owner;
HANDLE swapChainEventHandle = nullptr;
WindowsScopedEvent quitEvent;
std::thread thread { [&] { threadLoop(); } };
static constexpr uint32_t swapchainReadyMessageID = WM_USER + 124;
bool handleWindowProcMessage (UINT message)
{
if (message == swapchainReadyMessageID)
{
owner.onSwapchainEvent();
return true;
}
return false;
}
static LRESULT CALLBACK subclassWindowProc (HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam,
UINT_PTR,
DWORD_PTR referenceData)
{
auto* that = reinterpret_cast<SwapChainThread*> (referenceData);
if (that != nullptr && that->handleWindowProcMessage (message))
return 0;
return DefSubclassProc (hwnd, message, wParam, lParam);
}
void threadLoop()
{
Thread::setCurrentThreadName ("JUCE D2D swap chain thread");
for (;;)
{
const HANDLE handles[] { swapChainEventHandle, quitEvent.getHandle() };
const auto waitResult = WaitForMultipleObjects ((DWORD) std::size (handles),
handles,
FALSE,
INFINITE);
switch (waitResult)
{
case WAIT_OBJECT_0:
{
PostMessage (owner.hwnd, swapchainReadyMessageID, 0, 0);
break;
}
case WAIT_OBJECT_0 + 1:
return;
case WAIT_FAILED:
default:
jassertfalse;
break;
}
}
}
};
HWND hwnd;
SwapChain swap;
ComSmartPtr<ID2D1DeviceContext1> deviceContext;
std::unique_ptr<SwapChainThread> swapChainThread;
std::optional<CompositionTree> compositionTree;
SwapchainDelegate& delegate;
// Areas that must be repainted during the next paint call, between startFrame/endFrame
RectangleList<int> deferredRepaints;
@ -402,16 +314,6 @@ private:
std::vector<RECT> dirtyRectangles;
int64 lastFinishFrameTicks = 0;
// Set to true after the swap event is signalled, indicating that we're allowed to try presenting
// a new frame.
bool swapEventReceived = false;
void onSwapchainEvent()
{
swapEventReceived = true;
delegate.onSwapchainEvent();
}
bool prepare() override
{
const auto adapter = getDefaultAdapter();
@ -437,10 +339,6 @@ private:
return false;
}
if (swapChainThread == nullptr)
if (auto* e = swap.getEvent())
swapChainThread = std::make_unique<SwapChainThread> (*this, e->getHandle());
if (! compositionTree.has_value())
compositionTree = CompositionTree::create (adapter->dxgiDevice, hwnd, swap.getChain());
@ -453,7 +351,6 @@ private:
void teardown() override
{
compositionTree.reset();
swapChainThread = nullptr;
deviceContext = nullptr;
swap = {};
@ -476,7 +373,6 @@ private:
bool ready = Pimpl::checkPaintReady();
ready &= swap.canPaint();
ready &= compositionTree.has_value();
ready &= swapEventReceived;
return ready;
}
@ -484,10 +380,9 @@ private:
JUCE_DECLARE_WEAK_REFERENCEABLE (HwndPimpl)
public:
HwndPimpl (Direct2DHwndContext& ownerIn, HWND hwndIn, SwapchainDelegate& swapDelegate)
HwndPimpl (Direct2DHwndContext& ownerIn, HWND hwndIn)
: Pimpl (ownerIn),
hwnd (hwndIn),
delegate (swapDelegate)
hwnd (hwndIn)
{
}
@ -589,7 +484,7 @@ public:
{
JUCE_D2DMETRICS_SCOPED_ELAPSED_TIME (getMetrics(), present1Duration);
if (swap.getBuffer() == nullptr || dirtyRegionsInBackBuffer.isEmpty() || ! swapEventReceived)
if (swap.getBuffer() == nullptr || dirtyRegionsInBackBuffer.isEmpty())
return;
auto const swapChainSize = swap.getSize();
@ -622,10 +517,6 @@ public:
if (FAILED (hr))
return;
// We managed to present a frame, so we should avoid rendering anything or calling
// present again until that frame has been shown on-screen.
swapEventReceived = false;
// There's nothing waiting to be displayed in the backbuffer.
dirtyRegionsInBackBuffer.clear();
@ -687,7 +578,7 @@ public:
};
//==============================================================================
Direct2DHwndContext::Direct2DHwndContext (HWND windowHandle, SwapchainDelegate& swapDelegate)
Direct2DHwndContext::Direct2DHwndContext (HWND windowHandle)
{
#if JUCE_DIRECT2D_METRICS
metrics = new Direct2DMetrics { Direct2DMetricsHub::getInstance()->lock,
@ -696,7 +587,7 @@ Direct2DHwndContext::Direct2DHwndContext (HWND windowHandle, SwapchainDelegate&
Direct2DMetricsHub::getInstance()->add (metrics);
#endif
pimpl = std::make_unique<HwndPimpl> (*this, windowHandle, swapDelegate);
pimpl = std::make_unique<HwndPimpl> (*this, windowHandle);
}
Direct2DHwndContext::~Direct2DHwndContext()

View file

@ -38,13 +38,7 @@ namespace juce
class Direct2DHwndContext : public Direct2DGraphicsContext
{
public:
struct SwapchainDelegate
{
virtual ~SwapchainDelegate() = default;
virtual void onSwapchainEvent() = 0;
};
Direct2DHwndContext (HWND windowHandle, SwapchainDelegate& swapDelegate);
explicit Direct2DHwndContext (HWND windowHandle);
~Direct2DHwndContext() override;
void handleShowWindow();

View file

@ -1268,7 +1268,6 @@ struct RenderContext
virtual void updateConstantAlpha() = 0;
virtual void handlePaintMessage() = 0;
virtual void repaint (const Rectangle<int>& area) = 0;
virtual void dispatchDeferredRepaints() = 0;
virtual void performAnyPendingRepaintsNow() = 0;
virtual void onVBlank() = 0;
virtual void handleShowWindow() = 0;
@ -1724,12 +1723,6 @@ public:
renderContext->repaint ((area.toDouble() * getPlatformScaleFactor()).getSmallestIntegerContainer());
}
void dispatchDeferredRepaints()
{
if (renderContext != nullptr)
renderContext->dispatchDeferredRepaints();
}
void performAnyPendingRepaintsNow() override
{
if (renderContext != nullptr)
@ -1748,7 +1741,6 @@ public:
void onVBlank (double timestampSec) override
{
callVBlankListeners (timestampSec);
dispatchDeferredRepaints();
if (renderContext != nullptr)
renderContext->onVBlank();
@ -4779,23 +4771,12 @@ public:
deferredRepaints.add (area);
}
void dispatchDeferredRepaints() override
{
for (auto deferredRect : deferredRepaints)
{
auto r = D2DUtilities::toRECT (deferredRect);
InvalidateRect (peer.getHWND(), &r, FALSE);
}
deferredRepaints.clear();
}
void performAnyPendingRepaintsNow() override
{
if (! peer.getComponent().isVisible())
return;
dispatchDeferredRepaints();
onVBlank();
WeakReference localRef (&peer.getComponent());
MSG m;
@ -4815,7 +4796,16 @@ public:
: createSnapshotOfNormalWindow();
}
void onVBlank() override {}
void onVBlank() override
{
for (auto deferredRect : deferredRepaints)
{
auto r = D2DUtilities::toRECT (deferredRect);
InvalidateRect (peer.getHWND(), &r, FALSE);
}
deferredRepaints.clear();
}
void handleShowWindow() override {}
@ -5057,8 +5047,7 @@ private:
RectangleList<int> deferredRepaints;
};
class D2DRenderContext : public RenderContext,
private Direct2DHwndContext::SwapchainDelegate
class D2DRenderContext : public RenderContext
{
public:
static constexpr auto name = "Direct2D";
@ -5077,7 +5066,7 @@ public:
if (transparent != direct2DContext->supportsTransparency())
{
direct2DContext.reset();
direct2DContext = getContextForPeer (peer, *this);
direct2DContext = getContextForPeer (peer);
}
if (direct2DContext->supportsTransparency())
@ -5093,20 +5082,20 @@ public:
updateRegion.findRECTAndValidate (peer.getHWND());
for (const auto& rect : updateRegion.getRects())
repaint (D2DUtilities::toRectangle (rect));
direct2DContext->addDeferredRepaint (D2DUtilities::toRectangle (rect));
#if JUCE_DIRECT2D_METRICS
lastPaintStartTicks = paintStartTicks;
#endif
handleDirect2DPaint();
}
void repaint (const Rectangle<int>& area) override
{
direct2DContext->addDeferredRepaint (area);
deferredRepaints.add (area);
}
void dispatchDeferredRepaints() override {}
void performAnyPendingRepaintsNow() override {}
Image createSnapshot() override
@ -5116,7 +5105,13 @@ public:
void onVBlank() override
{
handleDirect2DPaint();
for (auto deferredRect : deferredRepaints)
{
auto r = D2DUtilities::toRECT (deferredRect);
InvalidateRect (peer.getHWND(), &r, FALSE);
}
deferredRepaints.clear();
}
void handleShowWindow() override
@ -5126,11 +5121,6 @@ public:
}
private:
void onSwapchainEvent() override
{
handleDirect2DPaint();
}
struct WrappedD2DHwndContextBase
{
virtual ~WrappedD2DHwndContextBase() = default;
@ -5161,8 +5151,8 @@ private:
class WrappedD2DHwndContext : public WrappedD2DHwndContextBase
{
public:
WrappedD2DHwndContext (HWND hwnd, SwapchainDelegate& swapDelegate)
: ctx (hwnd, swapDelegate) {}
explicit WrappedD2DHwndContext (HWND hwnd)
: ctx (hwnd) {}
void addDeferredRepaint (Rectangle<int> area) override
{
@ -5478,19 +5468,19 @@ private:
#endif
}
static std::unique_ptr<WrappedD2DHwndContextBase> getContextForPeer (HWNDComponentPeer& peer,
SwapchainDelegate& delegate)
static std::unique_ptr<WrappedD2DHwndContextBase> getContextForPeer (HWNDComponentPeer& peer)
{
if (peer.getTransparencyKind() != HWNDComponentPeer::TransparencyKind::opaque)
return std::make_unique<WrappedD2DHwndContextTransparent> (peer);
return std::make_unique<WrappedD2DHwndContext> (peer.getHWND(), delegate);
return std::make_unique<WrappedD2DHwndContext> (peer.getHWND());
}
HWNDComponentPeer& peer;
std::unique_ptr<WrappedD2DHwndContextBase> direct2DContext = getContextForPeer (peer, *this);
std::unique_ptr<WrappedD2DHwndContextBase> direct2DContext = getContextForPeer (peer);
UpdateRegion updateRegion;
RectangleList<int> deferredRepaints;
#if JUCE_ETW_TRACELOGGING
struct ETWEventProvider

View file

@ -1332,10 +1332,9 @@ public:
g.fillAll (Colours::white);
}
void evaluateJavascript (const String& script, WebBrowserComponent::EvaluationCallback callback) override
void evaluateJavascript (const String& script, EvaluationCallback callback) override
{
if (callback != nullptr)
evaluationCallbacks.push_back (std::move (callback));
evaluationCallbacks.push_back (std::move (callback));
CommandReceiver::sendCommand (outChannel,
"evaluateJavascript",
@ -1374,7 +1373,7 @@ public:
});
auto& cb = evaluationCallbacks.front();
cb (result);
NullCheckedInvocation::invoke (cb, result);
evaluationCallbacks.pop_front();
}