Browse Source

macOS: Remove 32 bit specific functionality

This includes Carbon support
pull/22/head
Tom Poole 3 years ago
parent
commit
c2ecde591b
71 changed files with 18 additions and 3001 deletions
  1. +0
    -2
      examples/DemoRunner/Builds/Android/app/CMakeLists.txt
  2. +0
    -4
      examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj
  3. +0
    -1
      examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj
  4. +0
    -3
      examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters
  5. +0
    -1
      examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj
  6. +0
    -3
      examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters
  7. +0
    -1
      examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
  8. +0
    -3
      examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters
  9. +0
    -1
      examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj
  10. +0
    -3
      examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters
  11. +0
    -2
      extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
  12. +0
    -4
      extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj
  13. +0
    -1
      extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj
  14. +0
    -3
      extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters
  15. +0
    -2
      extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt
  16. +0
    -4
      extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj
  17. +0
    -1
      extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj
  18. +0
    -3
      extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters
  19. +0
    -1
      extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj
  20. +0
    -3
      extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters
  21. +0
    -1
      extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj
  22. +0
    -3
      extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters
  23. +0
    -1
      extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj
  24. +0
    -3
      extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters
  25. +0
    -2
      extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
  26. +0
    -4
      extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj
  27. +0
    -1
      extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj
  28. +0
    -3
      extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters
  29. +0
    -4
      extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
  30. +0
    -1
      extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj
  31. +0
    -3
      extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters
  32. +0
    -1
      extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
  33. +0
    -3
      extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
  34. +0
    -1
      extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
  35. +0
    -3
      extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
  36. +0
    -1
      extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
  37. +0
    -3
      extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
  38. +1
    -1
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp
  39. +0
    -4
      extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj
  40. +0
    -1
      extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj
  41. +0
    -3
      extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters
  42. +0
    -1
      extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj
  43. +0
    -3
      extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters
  44. +0
    -1
      extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj
  45. +0
    -3
      extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters
  46. +0
    -1
      extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj
  47. +0
    -3
      extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters
  48. +0
    -403
      modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp
  49. +0
    -190
      modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.h
  50. +0
    -710
      modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.cpp
  51. +0
    -230
      modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h
  52. +0
    -125
      modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewDispatch.cpp
  53. +0
    -91
      modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp
  54. +0
    -71
      modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.h
  55. +0
    -287
      modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm
  56. +0
    -7
      modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.mm
  57. +0
    -20
      modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r
  58. +0
    -4
      modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm
  59. +0
    -73
      modules/juce_audio_plugin_client/utility/juce_CarbonVisibility.h
  60. +0
    -8
      modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h
  61. +0
    -156
      modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm
  62. +10
    -119
      modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
  63. +0
    -7
      modules/juce_audio_processors/juce_audio_processors.cpp
  64. +0
    -4
      modules/juce_audio_processors/juce_audio_processors.h
  65. +1
    -1
      modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h
  66. +4
    -8
      modules/juce_core/files/juce_File.h
  67. +0
    -4
      modules/juce_gui_basics/juce_gui_basics.cpp
  68. +1
    -1
      modules/juce_gui_basics/juce_gui_basics.h
  69. +1
    -29
      modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm
  70. +0
    -339
      modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h
  71. +0
    -9
      modules/juce_video/native/juce_mac_Video.h

+ 0
- 2
examples/DemoRunner/Builds/Android/app/CMakeLists.txt View File

@@ -1866,7 +1866,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp"
@@ -3804,7 +3803,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)


+ 0
- 4
examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj View File

@@ -36,7 +36,6 @@
7B4163348896EB1B86B15160 /* AVFoundation.framework */ = {isa = PBXBuildFile; fileRef = DC192EFA899E6CBE6B5CD394; };
8584640341100008744861A5 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 71A91516AFD980FEE694C0E1; };
89AD16514B1F4133FFEA1DF9 /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = 96D99A08027CA35D6A4E5CFD; };
89BC6E2354102D975E08E918 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 440D507FD8F31DB62B1F95C7; };
8C0AEA08A71075A6C765AEC9 /* AVKit.framework */ = {isa = PBXBuildFile; fileRef = 3B99CF94C44E2EE04635A439; };
91CD2BCE4CA07E18229EB436 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 9672FCE6167ADB567A9EB2F8; };
9BEA1428416CE06BF72FBAB8 /* DiscRecording.framework */ = {isa = PBXBuildFile; fileRef = 3DC90DA86565B0356B6E5E0B; };
@@ -81,7 +80,6 @@
3DC90DA86565B0356B6E5E0B /* DiscRecording.framework */ /* DiscRecording.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; };
3E4ED41C374261CFFD309743 /* 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; };
40BD06D4AB0D2C73E936A2F1 /* OpenGL.framework */ /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
440D507FD8F31DB62B1F95C7 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
470C3E4553B513FFEF752779 /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
491641F7632BCC81BBA0ED85 /* juce_audio_formats */ /* juce_audio_formats */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_formats; path = ../../../../modules/juce_audio_formats; sourceTree = SOURCE_ROOT; };
49ECA8B998B339A083674A22 /* Foundation.framework */ /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -148,7 +146,6 @@
163B0CF2DD0990A63DF1D5A6,
7B4163348896EB1B86B15160,
8C0AEA08A71075A6C765AEC9,
89BC6E2354102D975E08E918,
9F15FD7A7CE83CFD98F07D59,
1351A13E78F38741C6075600,
527DA2E6827BAFDDD3E8E80F,
@@ -173,7 +170,6 @@
470C3E4553B513FFEF752779,
DC192EFA899E6CBE6B5CD394,
3B99CF94C44E2EE04635A439,
440D507FD8F31DB62B1F95C7,
02A2ED58B066B4D119F67913,
4F0A137A4115946A346180E6,
B4389672DA4CC8E0A531062D,


+ 0
- 1
examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj View File

@@ -3606,7 +3606,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters View File

@@ -6288,9 +6288,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj View File

@@ -3606,7 +3606,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters View File

@@ -6288,9 +6288,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj View File

@@ -3606,7 +3606,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters View File

@@ -6288,9 +6288,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj View File

@@ -3606,7 +3606,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters View File

@@ -6288,9 +6288,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 2
extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt View File

@@ -1643,7 +1643,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp"
@@ -3279,7 +3278,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)


+ 0
- 4
extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj View File

@@ -24,7 +24,6 @@
7E870C094BAE67D7EB149F1C /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 248FAA119A4FC24C522165EF; };
8A0F71A4EEC7FE694352DD94 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 9EADBF913B7A454B6BE93A4A; };
9031C69145EE085B60904363 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 43775DC3D9F7917846EA5327; };
9B19A6655FCC8086134C8656 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 1DA5C6A474916745AFEC6DA5; };
9D47995A33BBA693ED435B31 /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = B06AE97C86D27E7FEBCB4631; };
C7B090C29D8DE4D2503204B1 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = BAFDA8DE51E7A69E477439EB; };
CC782AABFA20787BABBCED90 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = E1BB9D521BF6C055F5B88628; };
@@ -43,7 +42,6 @@
12C680C68A15B9A590264B18 /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
18C1CCE5684F9FA0478F27AD /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
18E39207A0F5F9B8BC7EE94F /* 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; };
1DA5C6A474916745AFEC6DA5 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
24425FFB0BCC7E54CADAA013 /* include_juce_core.mm */ /* include_juce_core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_core.mm; path = ../../JuceLibraryCode/include_juce_core.mm; sourceTree = SOURCE_ROOT; };
248FAA119A4FC24C522165EF /* 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; };
24D90B40648CC05A9B1AA55B /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
@@ -87,7 +85,6 @@
files = (
8A0F71A4EEC7FE694352DD94,
30BE30F31D1AAED9FC893AA5,
9B19A6655FCC8086134C8656,
0319B40AD2FD96007FFA928B,
5AFD011031C266431687C922,
71863EE98034AB7C3CBCAA81,
@@ -108,7 +105,6 @@
children = (
9EADBF913B7A454B6BE93A4A,
18C1CCE5684F9FA0478F27AD,
1DA5C6A474916745AFEC6DA5,
453777CEB7099A5D61901D13,
9F28F179EF6B90EB9F4DBEE9,
24D90B40648CC05A9B1AA55B,


+ 0
- 1
extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj View File

@@ -3105,7 +3105,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/>


+ 0
- 3
extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters View File

@@ -5403,9 +5403,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 2
extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt View File

@@ -1773,7 +1773,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp"
@@ -3563,7 +3562,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)


+ 0
- 4
extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj View File

@@ -14,7 +14,6 @@
15CCE43D7DCFC649638919D4 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; };
21D330A5B13178B12BEAFC3C /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = D4EBC17BDB7F88CCBC76730B; };
2727A191DB1BAAC9C04B9081 /* include_juce_opengl.mm */ = {isa = PBXBuildFile; fileRef = 37E4D5C341406B7072120006; };
2B4B9CF71F94BDD1E3AC89AE /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = B0935EBBA4F6E2B05F3D1C0A; };
2C3D221D2AA87F07B3F1044D /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 8FE7B37CDE0818DB27BDDEBD; };
3E1689E23B9C85F03209DCEF /* GraphEditorPanel.cpp */ = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; };
443244451A0F2064D4767337 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; };
@@ -103,7 +102,6 @@
A66EFAC64B1B67B536C73415 /* HostStartup.cpp */ /* HostStartup.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostStartup.cpp; path = ../../Source/HostStartup.cpp; sourceTree = SOURCE_ROOT; };
A692426308435C2002F988FE /* proaudio.path */ /* proaudio.path */ = {isa = PBXFileReference; lastKnownFileType = file.path; name = proaudio.path; path = ../../../../examples/Assets/proaudio.path; sourceTree = SOURCE_ROOT; };
A872AF2CAFFC72109B9C6348 /* cassette_recorder.wav */ /* cassette_recorder.wav */ = {isa = PBXFileReference; lastKnownFileType = file.wav; name = cassette_recorder.wav; path = ../../../../examples/Assets/cassette_recorder.wav; sourceTree = SOURCE_ROOT; };
B0935EBBA4F6E2B05F3D1C0A /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
B285CAB91AE928C476CA4F9C /* include_juce_audio_utils.mm */ /* include_juce_audio_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_utils.mm; path = ../../JuceLibraryCode/include_juce_audio_utils.mm; sourceTree = SOURCE_ROOT; };
B2A1E626CC120982805754F6 /* JUCEAppIcon.png */ /* JUCEAppIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = JUCEAppIcon.png; path = ../../Source/JUCEAppIcon.png; sourceTree = SOURCE_ROOT; };
B457EE687507BF1DEEA7581F /* WebKit.framework */ /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
@@ -130,7 +128,6 @@
B288A89F96704F142ED8E939,
73E371F1B912FCCAE0CD7E5D,
21D330A5B13178B12BEAFC3C,
2B4B9CF71F94BDD1E3AC89AE,
AC3BED74AC7C6D9F5739F38B,
E3CB85BA817BC9E3942A8AB0,
70580743C3D5695F065FF698,
@@ -269,7 +266,6 @@
5ACC21AA45BBF48C3C64D56D,
86CA337014D3F67E906FFD28,
D4EBC17BDB7F88CCBC76730B,
B0935EBBA4F6E2B05F3D1C0A,
9794142D24966F93FFDE51A1,
9F9B445E6755CAA19E4344ED,
E68018DE199135B7F738FB17,


+ 0
- 1
extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj View File

@@ -3340,7 +3340,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters View File

@@ -5838,9 +5838,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj View File

@@ -3340,7 +3340,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters View File

@@ -5838,9 +5838,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj View File

@@ -3340,7 +3340,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters View File

@@ -5838,9 +5838,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj View File

@@ -3340,7 +3340,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters View File

@@ -5838,9 +5838,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 2
extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt View File

@@ -1662,7 +1662,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp"
"../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"
"../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h"
"../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp"
@@ -3378,7 +3377,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)


+ 0
- 4
extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj View File

@@ -29,7 +29,6 @@
A1F34D09F4E4338775917ED1 /* include_juce_audio_formats.mm */ = {isa = PBXBuildFile; fileRef = C6E2284D86D93F1D9D5C7666; };
B323E5E5FBD5663B21A8E623 /* OpenGL.framework */ = {isa = PBXBuildFile; fileRef = 996E743A20FC78671766BF59; };
BB9A9692D99DD0DDB1047B60 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 6D1F9E505D20C09647124F0A; };
BED88ADEA4DC91AA8C810FA8 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 398A945EFD9ED923162982B1; };
C4D6C466C41173D6970553D2 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 9E8129263CD42C6029FC2CAD; };
C5E7BAD864E02CF37F7BD707 /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 33AA348465F512DBA8778DAF; };
C6348C6B1D0312580E97EA19 /* include_juce_osc.cpp */ = {isa = PBXBuildFile; fileRef = 3BF06B70407FFDBE9534F942; };
@@ -50,7 +49,6 @@
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; };
398A945EFD9ED923162982B1 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
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; };
@@ -107,7 +105,6 @@
files = (
80EE2C27B466BAFD83881D3F,
C4D6C466C41173D6970553D2,
BED88ADEA4DC91AA8C810FA8,
3C30D7C28C86F4054257DCD5,
67DF295E93E54432043126DF,
770AB74B1D3A0108F764DD47,
@@ -151,7 +148,6 @@
children = (
2E13A899F4E3C99054A3656F,
9E8129263CD42C6029FC2CAD,
398A945EFD9ED923162982B1,
C78806A6727F44EACFDED4A5,
6799B056504F9F017998B9E2,
4D1DB6D77B6F3DE7A569780B,


+ 0
- 1
extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj View File

@@ -3203,7 +3203,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters View File

@@ -5565,9 +5565,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 4
extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj View File

@@ -17,7 +17,6 @@
11D42F7EC6E6539D79A7F4B1 /* QuartzCore.framework */ = {isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; };
1321E6C1C6170B6C898AD09D /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; };
1B988E139004D8E2850EB656 /* jucer_PaintRoutine.cpp */ = {isa = PBXBuildFile; fileRef = C187718F7B9EBA88584B43F3; };
1E76E36772355E2A43CF4961 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = D00F311BFC3C2625C457CB9B; };
209FCCC2155A1FCB7E11E20D /* jucer_JucerDocument.cpp */ = {isa = PBXBuildFile; fileRef = 269A454F1FF081DA67FFD578; };
234B6BA2952CBC7C61EF70EF /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 5867DC4E39DF8539B54C0D59; };
241F29FCBB7A17BB44A0B10C /* Cocoa.framework */ = {isa = PBXBuildFile; fileRef = D1F9B0E9F5D54FE48BEB46EA; };
@@ -314,7 +313,6 @@
CCD62DB0A19A985A4B9D7F32 /* jucer_ProjectExport_Android.h */ /* jucer_ProjectExport_Android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExport_Android.h; path = ../../Source/ProjectSaving/jucer_ProjectExport_Android.h; sourceTree = SOURCE_ROOT; };
CD267A28C16C4E79EB749005 /* gpl_logo.svg */ /* gpl_logo.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = gpl_logo.svg; path = ../../Source/BinaryData/Icons/gpl_logo.svg; sourceTree = SOURCE_ROOT; };
CF6C8BD0DA3D8CD4E99EBADA /* WebKit.framework */ /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
D00F311BFC3C2625C457CB9B /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
D045BD5943BD38F2720FF5F0 /* jucer_FontPropertyComponent.h */ /* jucer_FontPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FontPropertyComponent.h; path = ../../Source/ComponentEditor/Properties/jucer_FontPropertyComponent.h; sourceTree = SOURCE_ROOT; };
D05BD91B6105827B010E1C20 /* juce_gui_extra */ /* juce_gui_extra */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_extra; path = ../../../../modules/juce_gui_extra; sourceTree = SOURCE_ROOT; };
D1739728A79A2062418B8EF0 /* wizard_StaticLibrary.svg */ /* wizard_StaticLibrary.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = wizard_StaticLibrary.svg; path = ../../Source/BinaryData/Icons/wizard_StaticLibrary.svg; sourceTree = SOURCE_ROOT; };
@@ -390,7 +388,6 @@
A578EAD4BB55680E8097BE0F,
C1B9334AE849F93FB3C56B34,
A14C2C2725DA3CA7995D2815,
1E76E36772355E2A43CF4961,
241F29FCBB7A17BB44A0B10C,
9359F9401D59B4517F75C39C,
091A57B4B9CE623E75E9A756,
@@ -442,7 +439,6 @@
80D62B907248523E6943298B,
5A75806B34E4EA6598A6024A,
210CD22F25F2C22F9CEEB025,
D00F311BFC3C2625C457CB9B,
D1F9B0E9F5D54FE48BEB46EA,
728FE25157E9874D50BBECB2,
E983E6DDE3318B872EBE347F,


+ 0
- 1
extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj View File

@@ -2136,7 +2136,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/>


+ 0
- 3
extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters View File

@@ -3759,9 +3759,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj View File

@@ -2136,7 +2136,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/>


+ 0
- 3
extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters View File

@@ -3759,9 +3759,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj View File

@@ -2136,7 +2136,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/>


+ 0
- 3
extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters View File

@@ -3759,9 +3759,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj View File

@@ -2136,7 +2136,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/>


+ 0
- 3
extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters View File

@@ -3759,9 +3759,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 1
- 1
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp View File

@@ -389,7 +389,7 @@ void ProjectExporter::addCommonAudioPluginSettings()
{
if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn))
addAAXFoldersToPath();
}
}
void ProjectExporter::addLegacyVSTFolderToPathIfSpecified()
{


+ 0
- 4
extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj View File

@@ -19,7 +19,6 @@
3822F598DA7044E5DB7633A9 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = 846E187EC2E797B982861CA4; };
3866839F4051D104244870B1 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 336A244E3C6460495F0A424C; };
4BC57B0D2215621D90C8881C /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = D2EBC6292AE5AFC46EB10DAC; };
59004CE43AE081B4A6CE9E17 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 1932D54A7FAE13BADBA3E9B5; };
5CB3596030B0DD3763CAF85C /* include_juce_data_structures.mm */ = {isa = PBXBuildFile; fileRef = 302A999B2803C0D5C15D237C; };
5FE50792EDC7638DE9A824B5 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 5C7BDD8DF72F2FC2D44D757A; };
66FC7F44EEC9044E5C4A21C3 /* CoreAudio.framework */ = {isa = PBXBuildFile; fileRef = C0531453A002C480280C5F05; };
@@ -54,7 +53,6 @@
080EAB9CF5AB2BD6B2BBB173 /* ConsoleApp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = UnitTestRunner; sourceTree = BUILT_PRODUCTS_DIR; };
08ED235CBE02E0FB4BE4653E /* 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; };
1088318C19CEB1861C58B3BA /* include_juce_video.mm */ /* include_juce_video.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_video.mm; path = ../../JuceLibraryCode/include_juce_video.mm; sourceTree = SOURCE_ROOT; };
1932D54A7FAE13BADBA3E9B5 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
1CA82C74AEC08421812BDCAC /* 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; };
1DC921E6494548F5E73E1056 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; };
2030A589A9355FE6A0F72428 /* Cocoa.framework */ /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
@@ -116,7 +114,6 @@
96EFF7BA261F57DD829324D8,
6EB1A3B818863EF1787A9CCE,
D82BA4D40F5686DAFF5E11FB,
59004CE43AE081B4A6CE9E17,
AA207299991F85938465BF65,
66FC7F44EEC9044E5C4A21C3,
3866839F4051D104244870B1,
@@ -141,7 +138,6 @@
7898C73DCA6FA9D9CF669D32,
4B427AF10E722F9A362CEB73,
99527F36B4484133087435CD,
1932D54A7FAE13BADBA3E9B5,
2030A589A9355FE6A0F72428,
C0531453A002C480280C5F05,
336A244E3C6460495F0A424C,


+ 0
- 1
extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj View File

@@ -3408,7 +3408,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters View File

@@ -5934,9 +5934,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj View File

@@ -3408,7 +3408,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters View File

@@ -5934,9 +5934,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj View File

@@ -3408,7 +3408,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters View File

@@ -5934,9 +5934,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 1
extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj View File

@@ -3179,7 +3179,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"/>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/>
<ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/>


+ 0
- 3
extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters View File

@@ -5532,9 +5532,6 @@
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h">
<Filter>JUCE Modules\juce_gui_extra\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_CarbonViewWrapperComponent.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h">
<Filter>JUCE Modules\juce_gui_extra\native</Filter>
</ClInclude>


+ 0
- 403
modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp View File

@@ -1,403 +0,0 @@
/*
File: AUCarbonViewBase.cpp
Abstract: AUCarbonViewBase.h
Version: 1.1
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#include "AUCarbonViewBase.h"
#include "AUCarbonViewControl.h"
#include <algorithm>
AUCarbonViewBase::AUCarbonViewBase(AudioUnitCarbonView inInstance, Float32 inNotificationInterval /* in seconds */) :
ComponentBase(inInstance),
mEditAudioUnit(0),
mParameterListener(NULL),
#if !__LP64__
mEventListener(NULL),
#endif
mTimerRef (NULL),
mTimerUPP (NULL),
mCarbonWindow(NULL),
mCarbonPane(NULL),
mXOffset(0),
mYOffset(0)
{
AUEventListenerCreate (ParameterListener, this,
CFRunLoopGetCurrent(), kCFRunLoopCommonModes,
inNotificationInterval, inNotificationInterval,
&mParameterListener);
}
AUCarbonViewBase::~AUCarbonViewBase()
{
#if !__LP64__
if (mCarbonPane)
DisposeControl(mCarbonPane);
for (ControlList::iterator it = mControlList.begin(); it != mControlList.end(); ++it) {
AUCarbonViewControl *ctl = *it;
delete ctl;
}
AUListenerDispose(mParameterListener);
if (mTimerRef)
::RemoveEventLoopTimer (mTimerRef);
if (mTimerUPP)
DisposeEventLoopTimerUPP (mTimerUPP);
#endif
}
void AUCarbonViewBase::AddControl(AUCarbonViewControl *control)
{
ControlList::iterator it = find(mControlList.begin(), mControlList.end(), control);
if (it == mControlList.end())
mControlList.push_back(control);
}
void AUCarbonViewBase::RemoveControl(AUCarbonViewControl *control)
{
ControlList::iterator it = find(mControlList.begin(), mControlList.end(), control);
if (it != mControlList.end()) {
AUCarbonViewControl *ctl = *it;
mControlList.erase(it);
delete ctl;
}
}
void AUCarbonViewBase::ClearControls ()
{
for (ControlList::iterator it = mControlList.begin(); it != mControlList.end(); ++it) {
AUCarbonViewControl *ctl = *it;
delete ctl;
}
mControlList.clear();
}
void AUCarbonViewBase::ParameterListener(void * inCallbackRefCon,
void * inObject,
const AudioUnitEvent * inEvent,
UInt64 inEventHostTime,
Float32 inParameterValue)
{
if (inEvent->mEventType == kAudioUnitEvent_ParameterValueChange) {
AUCarbonViewControl *ctl = (AUCarbonViewControl *)inObject;
ctl->ParameterToControl(inParameterValue);
}
}
OSStatus AUCarbonViewBase::CreateCarbonView(AudioUnit inAudioUnit, WindowRef inWindow, ControlRef inParentControl, const Float32Point &inLocation, const Float32Point &inSize, ControlRef &outParentControl)
{
#if !__LP64__
mEditAudioUnit = inAudioUnit;
mCarbonWindow = inWindow;
WindowAttributes attributes;
verify_noerr(GetWindowAttributes(mCarbonWindow, &attributes));
mCompositWindow = (attributes & kWindowCompositingAttribute) != 0;
Rect area;
area.left = short(inLocation.x); area.top = short(inLocation.y);
area.right = short(area.left + inSize.x); area.bottom = short(area.top + inSize.y);
OSStatus err = ::CreateUserPaneControl(inWindow, &area,
kControlSupportsEmbedding,
&mCarbonPane); // subclass can resize mCarbonPane to taste
verify_noerr(err);
if (err) return err;
outParentControl = mCarbonPane;
// register for mouse-down in our pane -- we want to clear focus
EventTypeSpec paneEvents[] = {
{ kEventClassControl, kEventControlClick }
};
WantEventTypes(GetControlEventTarget(mCarbonPane), GetEventTypeCount(paneEvents), paneEvents);
if (IsCompositWindow()) {
verify_noerr(::HIViewAddSubview(inParentControl, mCarbonPane));
mXOffset = 0;
mYOffset = 0;
}
else {
verify_noerr(::EmbedControl(mCarbonPane, inParentControl));
mXOffset = inLocation.x;
mYOffset = inLocation.y;
}
mBottomRight.h = mBottomRight.v = 0;
SizeControl(mCarbonPane, 0, 0);
if (err = CreateUI(mXOffset, mYOffset))
return err;
// we should only resize the control if a subclass has embedded
// controls in this AND this is done with the EmbedControl call below
// if mBottomRight is STILL equal to zero, then that wasn't done
// so don't size the control
Rect paneBounds;
GetControlBounds(mCarbonPane, &paneBounds);
// only resize mCarbonPane if it has not already been resized during CreateUI
if ((paneBounds.top == paneBounds.bottom) && (paneBounds.left == paneBounds.right)) {
if (mBottomRight.h != 0 && mBottomRight.v != 0)
SizeControl(mCarbonPane, (short) (mBottomRight.h - mXOffset), (short) (mBottomRight.v - mYOffset));
}
if (IsCompositWindow()) {
// prepare for handling scroll-events
EventTypeSpec scrollEvents[] = {
{ kEventClassScrollable, kEventScrollableGetInfo },
{ kEventClassScrollable, kEventScrollableScrollTo }
};
WantEventTypes(GetControlEventTarget(mCarbonPane), GetEventTypeCount(scrollEvents), scrollEvents);
mCurrentScrollPoint.x = mCurrentScrollPoint.y = 0.0f;
}
return err;
#else
return noErr;
#endif
}
OSStatus AUCarbonViewBase::CreateUI(Float32 inXOffset, Float32 inYOffset)
{
return noErr;
}
OSStatus AUCarbonViewBase::EmbedControl(ControlRef ctl)
{
#if !__LP64__
Rect r;
::GetControlBounds(ctl, &r);
if (r.right > mBottomRight.h) mBottomRight.h = r.right;
if (r.bottom > mBottomRight.v) mBottomRight.v = r.bottom;
if (IsCompositWindow())
return ::HIViewAddSubview(mCarbonPane, ctl);
else
return ::EmbedControl(ctl, mCarbonPane);
#else
return noErr;
#endif
}
void AUCarbonViewBase::AddCarbonControl(AUCarbonViewControl::ControlType type, const CAAUParameter &param, ControlRef control)
{
verify_noerr(EmbedControl(control));
AUCarbonViewControl *auvc = new AUCarbonViewControl(this, mParameterListener, type, param, control);
auvc->Bind();
AddControl(auvc);
}
bool AUCarbonViewBase::HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event)
{
#if !__LP64__
UInt32 eclass = GetEventClass(event);
UInt32 ekind = GetEventKind(event);
ControlRef control;
switch (eclass) {
case kEventClassControl:
{
switch (ekind) {
case kEventControlClick:
GetEventParameter(event, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &control);
if (control == mCarbonPane) {
ClearKeyboardFocus(mCarbonWindow);
return true;
}
}
}
break;
case kEventClassScrollable:
{
switch (ekind) {
case kEventScrollableGetInfo:
{
// [1/4]
/* <-- kEventParamImageSize (out, typeHISize)
* On exit, contains the size of the entire scrollable view.
*/
HISize originalSize = { static_cast<CGFloat>(mBottomRight.h), static_cast<CGFloat>(mBottomRight.v) };
verify_noerr(SetEventParameter(event, kEventParamImageSize, typeHISize, sizeof(HISize), &originalSize));
// [2/4]
/* <-- kEventParamViewSize (out, typeHISize)
* On exit, contains the amount of the scrollable view that is
* visible.
*/
HIViewRef parentView = HIViewGetSuperview(mCarbonPane);
HIRect parentBounds;
verify_noerr(HIViewGetBounds(parentView, &parentBounds));
//HISize windowSize = { float(windowBounds.right - windowBounds.left),
// float(windowBounds.bottom - windowBounds.top) };
verify_noerr(SetEventParameter(event, kEventParamViewSize, typeHISize, sizeof(HISize), &(parentBounds.size)));
// [3/4]
/* <-- kEventParamLineSize (out, typeHISize)
* On exit, contains the amount that should be scrolled in
* response to a single click on a scrollbar arrow.
*/
HISize scrollIncrementSize = { 16.0f, float(20) };
verify_noerr(SetEventParameter(event, kEventParamLineSize, typeHISize, sizeof(HISize), &scrollIncrementSize));
// [4/4]
/* <-- kEventParamOrigin (out, typeHIPoint)
* On exit, contains the scrollable viewÕs current origin (the
* view-relative coordinate that is drawn at the top left
* corner of its frame). These coordinates should always be
* greater than or equal to zero. They should be less than or
* equal to the viewÕs image size minus its view size.
*/
verify_noerr(SetEventParameter(event, kEventParamOrigin, typeHIPoint, sizeof(HIPoint), &mCurrentScrollPoint));
}
return true;
case kEventScrollableScrollTo:
{
/*
* kEventClassScrollable / kEventScrollableScrollTo
*
* Summary:
* Requests that an HIScrollViewÕs scrollable view should scroll to
* a particular origin.
*/
/* --> kEventParamOrigin (in, typeHIPoint)
* The new origin for the scrollable view. The origin
* coordinates will vary from (0,0) to scrollable viewÕs image
* size minus its view size.
*/
HIPoint pointToScrollTo;
verify_noerr(GetEventParameter(event, kEventParamOrigin, typeHIPoint, NULL, sizeof(HIPoint), NULL, &pointToScrollTo));
float xDelta = mCurrentScrollPoint.x - pointToScrollTo.x;
float yDelta = mCurrentScrollPoint.y - pointToScrollTo.y;
// move visible portion the appropriate amount
verify_noerr(HIViewScrollRect(mCarbonPane, NULL, xDelta, yDelta));
// set new content to be drawn
verify_noerr(HIViewSetBoundsOrigin(mCarbonPane, pointToScrollTo.x, pointToScrollTo.y));
mCurrentScrollPoint = pointToScrollTo;
}
return true;
default:
break;
}
}
break;
default:
break;
}
#endif
return false;
}
/*! @method TellListener */
void AUCarbonViewBase::TellListener (const CAAUParameter &auvp, AudioUnitCarbonViewEventID event, void *evpar)
{
#if !__LP64__
if (mEventListener)
(*mEventListener)(mEventListenerUserData, mComponentInstance, &auvp, event, evpar);
#endif
AudioUnitEvent auEvent;
auEvent.mArgument.mParameter = auvp;
if (event == kAudioUnitCarbonViewEvent_MouseDownInControl) {
auEvent.mEventType = kAudioUnitEvent_BeginParameterChangeGesture;
} else {
auEvent.mEventType = kAudioUnitEvent_EndParameterChangeGesture;
}
AUEventListenerNotify(mParameterListener, this, &auEvent);
}
void AUCarbonViewBase::Update (bool inUIThread)
{
for (ControlList::iterator iter = mControlList.begin(); iter != mControlList.end(); ++iter)
{
(*iter)->Update(inUIThread);
}
}
pascal void AUCarbonViewBase::TheTimerProc (EventLoopTimerRef inTimer, void *inUserData)
{
AUCarbonViewBase* This = reinterpret_cast<AUCarbonViewBase*>(inUserData);
This->RespondToEventTimer (inTimer);
}
void AUCarbonViewBase::RespondToEventTimer (EventLoopTimerRef inTimer)
{}
/*
THESE are reasonable values for these two times
0.005 // delay
0.050 // interval
*/
OSStatus AUCarbonViewBase::CreateEventLoopTimer (Float32 inDelay, Float32 inInterval)
{
if (mTimerUPP)
return noErr;
mTimerUPP = NewEventLoopTimerUPP(TheTimerProc);
EventLoopRef mainEventLoop = GetMainEventLoop();
//doesn't seem to like too small a value
if (inDelay < 0.005)
inDelay = 0.005;
OSStatus timerResult = ::InstallEventLoopTimer(
mainEventLoop,
inDelay,
inInterval,
mTimerUPP,
this,
&mTimerRef);
return timerResult;
}

+ 0
- 190
modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.h View File

@@ -1,190 +0,0 @@
/*
File: AUCarbonViewBase.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#ifndef __AUCarbonViewBase_h__
#define __AUCarbonViewBase_h__
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#include <vector>
#include "AUCarbonViewControl.h"
#include "ComponentBase.h"
static const Float32 kDefaultNotificationInterval = 0.100;
/*! @class AUCarbonViewBase */
class AUCarbonViewBase : public ComponentBase, public CarbonEventHandler
{
public:
/*! @ctor AUCarbonViewBase */
AUCarbonViewBase ( AudioUnitCarbonView inInstance,
Float32 inNotificationInterval = kDefaultNotificationInterval /* in seconds */);
/*! @dtor ~AUCarbonViewBase */
virtual ~AUCarbonViewBase();
// AUViewBase overrides
/*! @method CreateCarbonView */
virtual OSStatus CreateCarbonView (AudioUnit inAudioUnit, WindowRef inWindow, ControlRef inParentControl, const Float32Point &inLocation, const Float32Point &inSize, ControlRef &outParentControl);
// our own virtual methods
/*! @method CreateUI */
virtual OSStatus CreateUI (Float32 inXOffset, Float32 inYOffset);
/*! @method HandleEvent */
virtual bool HandleEvent (EventHandlerCallRef inHandlerRef, EventRef event);
/*! @method GetEditAudioUnit */
const AudioUnit GetEditAudioUnit () const { return mEditAudioUnit; }
//
/*! @method ComponentEntryDispatch */
static OSStatus ComponentEntryDispatch (
ComponentParameters * params,
AUCarbonViewBase * This);
/*! @method AddCarbonControl */
void AddCarbonControl (
AUCarbonViewControl::ControlType type,
const CAAUParameter & param,
ControlRef control);
/*! @method GetCarbonWindow */
WindowRef GetCarbonWindow () { return mCarbonWindow; }
/*! @method GetCarbonPane */
ControlRef GetCarbonPane () { return mCarbonPane; }
/*! @method EmbedControl */
OSStatus EmbedControl (ControlRef ctl);
/*! @method TellListener */
void TellListener (const CAAUParameter &auvp, AudioUnitCarbonViewEventID event, void *evpar);
// pass in true if wanting an update to the view and you're calling this from a thread
// that is safe to do UI in.
// If you don't know, pass in false!
/*! @method Update */
void Update (bool inUIThread);
/*! @method GetXOffset */
Float32 GetXOffset () { return mXOffset; }
/*! @method GetYOffset */
Float32 GetYOffset () { return mYOffset; }
/*! @method ClearControls */
void ClearControls ();
/*! @method IsCompositWindow */
bool IsCompositWindow () const { return mCompositWindow; }
protected:
#if !__LP64__
/*! @method SetEventListener */
void SetEventListener (AudioUnitCarbonViewEventListener listener, void *userData)
{
mEventListener = listener;
mEventListenerUserData = userData;
}
#endif
/*! @method AddControl */
void AddControl (AUCarbonViewControl *control);
/*! @method RemoveControl */
void RemoveControl (AUCarbonViewControl *control);
OSStatus CreateEventLoopTimer (Float32 inDelay, Float32 inInterval);
/*! @method ParameterListener */
static void ParameterListener (void * inCallbackRefCon,
void * inObject,
const AudioUnitEvent * inEvent,
UInt64 inEventHostTime,
Float32 inParameterValue);
static pascal void TheTimerProc ( EventLoopTimerRef inTimer,
void * inUserData);
virtual void RespondToEventTimer (EventLoopTimerRef inTimer);
/*! @var mEditAudioUnit */
AudioUnit mEditAudioUnit; // the AU we're controlling
/*! @var mParameterListener */
AUEventListenerRef mParameterListener;
#if !__LP64__
/*! @var mEventListener */
AudioUnitCarbonViewEventListener
mEventListener;
#endif
/*! @var mEventListenerUserData */
void * mEventListenerUserData;
private:
typedef std::vector<AUCarbonViewControl *> ControlList;
/*! @var mControlList */
ControlList mControlList;
EventLoopTimerRef mTimerRef;
EventLoopTimerUPP mTimerUPP;
protected:
/*! @var mCarbonWindow */
WindowRef mCarbonWindow;
/*! @var mCarbonPane */
ControlRef mCarbonPane; // user pane, contains all other controls
/*! @var mBottomRight */
Point mBottomRight; // largest width and height of child controls
/*! @var mXOffset */
Float32 mXOffset;
/*! @var mYOffset */
Float32 mYOffset;
/*! @var mCompositWindow */
bool mCompositWindow;
/*! @var mCurrentScrollPoint */
HIPoint mCurrentScrollPoint; // needed for scrolling
};
#endif // __AUCarbonViewBase_h__

+ 0
- 710
modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.cpp View File

@@ -1,710 +0,0 @@
/*
File: AUCarbonViewControl.cpp
Abstract: AUCarbonViewControl.h
Version: 1.1
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#include "AUCarbonViewControl.h"
#include "AUCarbonViewBase.h"
#include "AUViewLocalizedStringKeys.h"
AUCarbonViewControl::AUCarbonViewControl(AUCarbonViewBase *ownerView, AUParameterListenerRef listener, ControlType type, const CAAUParameter &param, ControlRef control) :
mOwnerView(ownerView),
mListener(listener),
mType(type),
mParam(param),
mControl(control),
mInControlInitialization(0)
{
#if !__LP64__
SetControlReference(control, SRefCon(this));
#endif
}
AUCarbonViewControl::~AUCarbonViewControl()
{
AUListenerRemoveParameter(mListener, this, &mParam);
}
AUCarbonViewControl* AUCarbonViewControl::mLastControl = NULL;
void AUCarbonViewControl::Bind()
{
#if !__LP64__
mInControlInitialization = 1; // true
AUListenerAddParameter(mListener, this, &mParam);
// will cause an almost-immediate callback
EventTypeSpec events[] = {
{ kEventClassControl, kEventControlValueFieldChanged } // N.B. OS X only
};
WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(events), events);
if (mType == kTypeContinuous || mType == kTypeText || mType == kTypeDiscrete) {
EventTypeSpec controlEvents[] = {
{ kEventClassControl, kEventControlHit },
{ kEventClassControl, kEventControlClick },
{ kEventClassControl, kEventControlTrack }
};
WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(controlEvents), controlEvents);
}
if (mType == kTypeText) {
EventTypeSpec controlFocusEvents[] = {
{ kEventClassControl, kEventControlSetFocusPart }
};
WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(controlFocusEvents), controlFocusEvents);
ControlKeyFilterUPP proc = mParam.ValuesHaveStrings() ? StdKeyFilterCallback : NumericKeyFilterCallback;
// this will fail for a static text field
SetControlData(mControl, 0, kControlEditTextKeyFilterTag, sizeof(proc), &proc);
}
Update(true);
mInControlInitialization = 0; // false
#endif
}
void AUCarbonViewControl::ParameterToControl(Float32 paramValue)
{
#if !__LP64__
++mInControlInitialization;
switch (mType) {
case kTypeContinuous:
SetValueFract(AUParameterValueToLinear(paramValue, &mParam));
break;
case kTypeDiscrete:
{
long value = long(paramValue);
// special case [1] -- menu parameters
if (mParam.HasNamedParams()) {
// if we're dealing with menus they behave differently!
// becaue setting min and max doesn't work correctly for the control value
// first menu item always reports a control value of 1
ControlKind ctrlKind;
if (GetControlKind(mControl, &ctrlKind) == noErr) {
if ((ctrlKind.kind == kControlKindPopupArrow)
|| (ctrlKind.kind == kControlKindPopupButton))
{
value = value - long(mParam.ParamInfo().minValue) + 1;
}
}
}
// special case [2] -- Write-only boolean parameters
AudioUnitParameterInfo AUPI = mParam.ParamInfo();
bool isWriteOnlyBoolParameter = ( (AUPI.unit == kAudioUnitParameterUnit_Boolean) &&
(AUPI.flags & kAudioUnitParameterFlag_IsWritable) &&
!(AUPI.flags & kAudioUnitParameterFlag_IsReadable) );
if (!isWriteOnlyBoolParameter) {
SetValue (value);
}
}
break;
case kTypeText:
{
CFStringRef cfstr = mParam.GetStringFromValueCopy(&paramValue);
if ( !(mParam.ParamInfo().flags & kAudioUnitParameterFlag_IsWritable) //READ ONLY PARAMS
&& (mParam.ParamInfo().flags & kAudioUnitParameterFlag_IsReadable))
{
if (mParam.GetParamTag()) {
CFMutableStringRef str = CFStringCreateMutableCopy(NULL, 256, cfstr);
CFRelease (cfstr);
CFStringAppend (str, CFSTR(" "));
CFStringAppend (str, mParam.GetParamTag());
cfstr = str;
}
}
SetTextValue(cfstr);
CFRelease (cfstr);
}
break;
}
--mInControlInitialization;
#endif
}
void AUCarbonViewControl::ControlToParameter()
{
#if !__LP64__
if (mInControlInitialization)
return;
switch (mType) {
case kTypeContinuous:
{
double controlValue = GetValueFract();
Float32 paramValue = AUParameterValueFromLinear(controlValue, &mParam);
mParam.SetValue(mListener, this, paramValue);
}
break;
case kTypeDiscrete:
{
long value = GetValue();
// special case [1] -- Menus
if (mParam.HasNamedParams()) {
// if we're dealing with menus they behave differently!
// becaue setting min and max doesn't work correctly for the control value
// first menu item always reports a control value of 1
ControlKind ctrlKind;
if (GetControlKind(mControl, &ctrlKind) == noErr) {
if ((ctrlKind.kind == kControlKindPopupArrow)
|| (ctrlKind.kind == kControlKindPopupButton))
{
value = value + long(mParam.ParamInfo().minValue) - 1;
}
}
}
// special case [2] -- Write-only boolean parameters
AudioUnitParameterInfo AUPI = mParam.ParamInfo();
bool isWriteOnlyBoolParameter = ( (AUPI.unit == kAudioUnitParameterUnit_Boolean) &&
(AUPI.flags & kAudioUnitParameterFlag_IsWritable) &&
!(AUPI.flags & kAudioUnitParameterFlag_IsReadable) );
if (isWriteOnlyBoolParameter) {
value = 1;
}
mParam.SetValue (mListener, this, value);
}
break;
case kTypeText:
{
Float32 val = mParam.GetValueFromString (GetTextValue());
mParam.SetValue(mListener, this, (mParam.IsIndexedParam() ? (int)val : val));
if (mParam.ValuesHaveStrings())
ParameterToControl(val); //make sure we display the correct text (from the AU)
}
break;
}
#endif
}
void AUCarbonViewControl::SetValueFract(double value)
{
#if !__LP64__
SInt32 minimum = GetControl32BitMinimum(mControl);
SInt32 maximum = GetControl32BitMaximum(mControl);
SInt32 cval = SInt32(value * (maximum - minimum) + minimum + 0.5);
SetControl32BitValue(mControl, cval);
// printf("set: value=%lf, min=%ld, max=%ld, ctl value=%ld\n", value, minimum, maximum, cval);
#endif
}
double AUCarbonViewControl::GetValueFract()
{
#if !__LP64__
SInt32 minimum = GetControl32BitMinimum(mControl);
SInt32 maximum = GetControl32BitMaximum(mControl);
SInt32 cval = GetControl32BitValue(mControl);
double result = double(cval - minimum) / double(maximum - minimum);
// printf("get: min=%ld, max=%ld, value=%ld, result=%f\n", minimum, maximum, cval, result);
return result;
#else
return 0;
#endif
}
void AUCarbonViewControl::SetTextValue(CFStringRef cfstr)
{
#if !__LP64__
verify_noerr(SetControlData(mControl, 0, kControlEditTextCFStringTag, sizeof(CFStringRef), &cfstr));
#endif
}
CFStringRef AUCarbonViewControl::GetTextValue()
{
#if !__LP64__
CFStringRef cfstr;
verify_noerr(GetControlData(mControl, 0, kControlEditTextCFStringTag, sizeof(CFStringRef), &cfstr, NULL));
return cfstr;
#else
return CFSTR("");
#endif
}
void AUCarbonViewControl::SetValue(long value)
{
#if !__LP64__
SetControl32BitValue(mControl, value);
#endif
}
long AUCarbonViewControl::GetValue()
{
#if !__LP64__
return GetControl32BitValue(mControl);
#else
return 0;
#endif
}
/* Notes on event handling
Button (Click and release on button)
kEventControlClick received
kEventControlTrack received
kEventControlValueFieldChanged received
kEventControlHit received
Button (Click and release outside of button bounds)
kEventControlClick received
kEventControlTrack received
Slider (Click, drag, and release)
kEventControlClick received
kEventControlTrack received
kEventControlValueFieldChanged received
kEventControlValueFieldChanged received
kEventControlHit received
Slider (Click, release without changing value)
kEventControlClick received
kEventControlTrack received
*/
bool AUCarbonViewControl::HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event)
{
UInt32 eclass = GetEventClass(event);
UInt32 ekind = GetEventKind(event);
ControlRef control;
bool handled = true;
switch (eclass) {
case kEventClassControl:
{
AudioUnitParameterInfo AUPI = mParam.ParamInfo();
bool isWriteOnlyBoolParameter = ( (AUPI.unit == kAudioUnitParameterUnit_Boolean) &&
(AUPI.flags & kAudioUnitParameterFlag_IsWritable) &&
!(AUPI.flags & kAudioUnitParameterFlag_IsReadable) );
switch (ekind) {
case kEventControlSetFocusPart: // tab
handled = !handled; // fall through to next case
mLastControl = this;
case kEventControlValueFieldChanged:
GetEventParameter(event, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &control);
verify(control == mControl);
ControlToParameter();
return handled;
case kEventControlClick:
if (isWriteOnlyBoolParameter) {
GetEventParameter(event, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &control);
verify(control == mControl);
ControlToParameter();
} else if (mLastControl != this) {
if (mLastControl != NULL) {
mLastControl->Update(false);
}
mLastControl = this;
}
mOwnerView->TellListener(mParam, kAudioUnitCarbonViewEvent_MouseDownInControl, NULL);
break; // don't return true, continue normal processing
case kEventControlHit:
if (mLastControl != this) {
if (mLastControl != NULL)
mLastControl->Update(false);
mLastControl = this;
}
mOwnerView->TellListener(mParam, kAudioUnitCarbonViewEvent_MouseUpInControl, NULL);
break; // don't return true, continue normal processing
case kEventControlTrack:
if (mLastControl != this) {
if (mLastControl != NULL)
mLastControl->Update(false);
mLastControl = this;
}
CallNextEventHandler(inHandlerRef, event);
ControlToParameter(); // new code
mOwnerView->TellListener(mParam, kAudioUnitCarbonViewEvent_MouseUpInControl, NULL);
// old code:
// break; // don't return true, continue normal processing
return handled; // don't return true, continue normal processing
}
}
}
return !handled;
}
pascal void AUCarbonViewControl::SliderTrackProc(ControlRef theControl, ControlPartCode partCode)
{
// this doesn't need to actually do anything
// AUCarbonViewControl *This = (AUCarbonViewControl *)GetControlReference(theControl);
}
pascal ControlKeyFilterResult AUCarbonViewControl::StdKeyFilterCallback(ControlRef theControl,
SInt16 *keyCode, SInt16 *charCode,
EventModifiers *modifiers)
{
#if !__LP64__
SInt16 c = *charCode;
if (c >= ' ' || c == '\b' || c == 0x7F || (c >= 0x1c && c <= 0x1f) || c == '\t')
return kControlKeyFilterPassKey;
if (c == '\r' || c == 3) { // return or Enter
AUCarbonViewControl *This = (AUCarbonViewControl *)GetControlReference(theControl);
ControlEditTextSelectionRec sel = { 0, 32767 };
SetControlData(This->mControl, 0, kControlEditTextSelectionTag, sizeof(sel), &sel);
This->ControlToParameter();
}
#endif
return kControlKeyFilterBlockKey;
}
pascal ControlKeyFilterResult AUCarbonViewControl::NumericKeyFilterCallback(ControlRef theControl,
SInt16 *keyCode, SInt16 *charCode,
EventModifiers *modifiers)
{
#if !__LP64__
SInt16 c = *charCode;
if (isdigit(c) || c == '+' || c == '-' || c == '.' || c == '\b' || c == 0x7F || (c >= 0x1c && c <= 0x1f)
|| c == '\t')
return kControlKeyFilterPassKey;
if (c == '\r' || c == 3) { // return or Enter
AUCarbonViewControl *This = (AUCarbonViewControl *)GetControlReference(theControl);
ControlEditTextSelectionRec sel = { 0, 32767 };
SetControlData(This->mControl, 0, kControlEditTextSelectionTag, sizeof(sel), &sel);
This->ControlToParameter();
}
#endif
return kControlKeyFilterBlockKey;
}
Boolean AUCarbonViewControl::SizeControlToFit(ControlRef inControl, SInt16 *outWidth, SInt16 *outHeight)
{
#if !__LP64__
if (inControl == 0) return false;
Boolean bValue = false;
// this only works on text controls -- returns an error for other controls, but doesn't do anything,
// so the error is irrelevant
SetControlData(inControl, kControlEntireControl, 'stim' /* kControlStaticTextIsMultilineTag */, sizeof(Boolean), &bValue);
SInt16 baseLineOffset;
Rect bestRect;
OSErr err = GetBestControlRect(inControl, &bestRect, &baseLineOffset);
if (err != noErr) return false;
int width = (bestRect.right - bestRect.left) + 1;
int height = (bestRect.bottom - bestRect.top) + 1;
Rect boundsRect;
GetControlBounds (inControl, &boundsRect);
Rect newRect;
newRect.top = boundsRect.top;
newRect.bottom = newRect.top + height;
newRect.left = boundsRect.left;
newRect.right = newRect.left + width;
SetControlBounds (inControl, &newRect);
if (outWidth)
*outWidth = width;
if (outHeight)
*outHeight = height;
#endif
return true;
}
#pragma mark ___AUPropertyControl
bool AUPropertyControl::HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event)
{
UInt32 eclass = GetEventClass(event);
UInt32 ekind = GetEventKind(event);
switch (eclass) {
case kEventClassControl:
switch (ekind) {
case kEventControlValueFieldChanged:
HandleControlChange();
return true; // handled
}
}
return false;
}
void AUPropertyControl::RegisterEvents ()
{
#if !__LP64__
EventTypeSpec events[] = {
{ kEventClassControl, kEventControlValueFieldChanged } // N.B. OS X only
};
WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(events), events);
#endif
}
void AUPropertyControl::EmbedControl (ControlRef theControl)
{
mView->EmbedControl (theControl);
}
WindowRef AUPropertyControl::GetCarbonWindow()
{
return mView->GetCarbonWindow();
}
#pragma mark ___AUVPreset
#if !__LP64__
static CFStringRef kStringFactoryPreset = kAUViewLocalizedStringKey_FactoryPreset;
static bool sAUVPresetLocalized = false;
#endif
AUVPresets::AUVPresets (AUCarbonViewBase* inParentView,
CFArrayRef& inPresets,
Point inLocation,
int nameWidth,
int controlWidth,
ControlFontStyleRec & inFontStyle)
: AUPropertyControl (inParentView),
mPresets (inPresets),
mView (inParentView)
{
#if !__LP64__
Rect r;
// ok we now have an array of factory presets
// get their strings and display them
r.top = inLocation.v; r.bottom = r.top;
r.left = inLocation.h; r.right = r.left;
// localize as necessary
if (!sAUVPresetLocalized) {
CFBundleRef mainBundle = CFBundleGetBundleWithIdentifier(kLocalizedStringBundle_AUView);
if (mainBundle) {
kStringFactoryPreset = CFCopyLocalizedStringFromTableInBundle(
kAUViewLocalizedStringKey_FactoryPreset, kLocalizedStringTable_AUView,
mainBundle, CFSTR("FactoryPreset title string"));
sAUVPresetLocalized = true;
}
}
// create localized title string
CFMutableStringRef factoryPresetsTitle = CFStringCreateMutable(NULL, 0);
CFStringAppend(factoryPresetsTitle, kStringFactoryPreset);
CFStringAppend(factoryPresetsTitle, kAUViewUnlocalizedString_TitleSeparator);
ControlRef theControl;
verify_noerr(CreateStaticTextControl(mView->GetCarbonWindow(), &r, factoryPresetsTitle, &inFontStyle, &theControl));
SInt16 width = 0;
AUCarbonViewControl::SizeControlToFit(theControl, &width, &mHeight);
CFRelease(factoryPresetsTitle);
EmbedControl(theControl);
r.top -= 2;
r.left += width + 10;
r.right = r.left;
r.bottom = r.top;
verify_noerr(CreatePopupButtonControl ( mView->GetCarbonWindow(), &r, NULL,
-12345, // DON'T GET MENU FROM RESOURCE mMenuID,!!!
FALSE, // variableWidth,
0, // titleWidth,
0, // titleJustification,
0, // titleStyle,
&mControl));
MenuRef menuRef;
verify_noerr(CreateNewMenu(1, 0, &menuRef));
int numPresets = CFArrayGetCount(mPresets);
for (int i = 0; i < numPresets; ++i)
{
AUPreset* preset = (AUPreset*) CFArrayGetValueAtIndex (mPresets, i);
verify_noerr(AppendMenuItemTextWithCFString (menuRef, preset->presetName, 0, 0, 0));
}
verify_noerr(SetControlData(mControl, 0, kControlPopupButtonMenuRefTag, sizeof(menuRef), &menuRef));
verify_noerr (SetControlFontStyle (mControl, &inFontStyle));
SetControl32BitMaximum (mControl, numPresets);
// size popup
SInt16 height = 0;
AUCarbonViewControl::SizeControlToFit(mControl, &width, &height);
if (height > mHeight) mHeight = height;
if (mHeight < 0) mHeight = 0;
// find which menu item is the Default preset
UInt32 propertySize = sizeof(AUPreset);
AUPreset defaultPreset;
OSStatus result = AudioUnitGetProperty (mView->GetEditAudioUnit(),
kAudioUnitProperty_PresentPreset,
kAudioUnitScope_Global,
0,
&defaultPreset,
&propertySize);
mPropertyID = kAudioUnitProperty_PresentPreset;
#endif
#ifndef __LP64__
if (result != noErr) { // if the PresentPreset property is not implemented, fall back to the CurrentPreset property
result = AudioUnitGetProperty (mView->GetEditAudioUnit(),
kAudioUnitProperty_CurrentPreset,
kAudioUnitScope_Global,
0,
&defaultPreset,
&propertySize);
mPropertyID = kAudioUnitProperty_CurrentPreset;
if (result == noErr)
CFRetain (defaultPreset.presetName);
}
#endif
#if !__LP64__
EmbedControl (mControl);
HandlePropertyChange(defaultPreset);
RegisterEvents();
#endif
}
void AUVPresets::AddInterest (AUEventListenerRef inListener,
void * inObject)
{
AudioUnitEvent e;
e.mEventType = kAudioUnitEvent_PropertyChange;
e.mArgument.mProperty.mAudioUnit = mView->GetEditAudioUnit();
e.mArgument.mProperty.mPropertyID = mPropertyID;
e.mArgument.mProperty.mScope = kAudioUnitScope_Global;
e.mArgument.mProperty.mElement = 0;
AUEventListenerAddEventType(inListener, inObject, &e);
}
void AUVPresets::RemoveInterest (AUEventListenerRef inListener,
void * inObject)
{
AudioUnitEvent e;
e.mEventType = kAudioUnitEvent_PropertyChange;
e.mArgument.mProperty.mAudioUnit = mView->GetEditAudioUnit();
e.mArgument.mProperty.mPropertyID = mPropertyID;
e.mArgument.mProperty.mScope = kAudioUnitScope_Global;
e.mArgument.mProperty.mElement = 0;
AUEventListenerRemoveEventType(inListener, inObject, &e);
}
void AUVPresets::HandleControlChange ()
{
#if !__LP64__
SInt32 i = GetControl32BitValue(mControl);
if (i > 0)
{
AUPreset* preset = (AUPreset*) CFArrayGetValueAtIndex (mPresets, i-1);
verify_noerr(AudioUnitSetProperty (mView->GetEditAudioUnit(),
mPropertyID, // either currentPreset or PresentPreset depending on which is supported
kAudioUnitScope_Global,
0,
preset,
sizeof(AUPreset)));
// when we change a preset we can't expect the AU to update its state
// as it isn't meant to know that its being viewed!
// so we broadcast a notification to all listeners that all parameters on this AU have changed
AudioUnitParameter changedUnit;
changedUnit.mAudioUnit = mView->GetEditAudioUnit();
changedUnit.mParameterID = kAUParameterListener_AnyParameter;
verify_noerr (AUParameterListenerNotify (NULL, NULL, &changedUnit) );
}
#endif
}
void AUVPresets::HandlePropertyChange(AUPreset &preset)
{
#if !__LP64__
// check to see if the preset is in our menu
int numPresets = CFArrayGetCount(mPresets);
if (preset.presetNumber < 0) {
SetControl32BitValue (mControl, 0); //controls are one-based
} else {
for (SInt32 i = 0; i < numPresets; ++i) {
AUPreset* currPreset = (AUPreset*) CFArrayGetValueAtIndex (mPresets, i);
if (preset.presetNumber == currPreset->presetNumber) {
SetControl32BitValue (mControl, ++i); //controls are one-based
break;
}
}
}
if (preset.presetName)
CFRelease (preset.presetName);
#endif
}
bool AUVPresets::HandlePropertyChange (const AudioUnitProperty &inProp)
{
if (inProp.mPropertyID == mPropertyID)
{
UInt32 theSize = sizeof(AUPreset);
AUPreset currentPreset;
OSStatus result = AudioUnitGetProperty(inProp.mAudioUnit,
inProp.mPropertyID,
inProp.mScope,
inProp.mElement, &currentPreset, &theSize);
if (result == noErr) {
#ifndef __LP64__
if (inProp.mPropertyID == kAudioUnitProperty_CurrentPreset && currentPreset.presetName)
CFRetain (currentPreset.presetName);
#endif
HandlePropertyChange(currentPreset);
return true;
}
}
return false;
}

+ 0
- 230
modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h View File

@@ -1,230 +0,0 @@
/*
File: AUCarbonViewControl.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#ifndef __AUCarbonViewControl_h__
#define __AUCarbonViewControl_h__
#include <Carbon/Carbon.h>
#include <AudioUnit/AudioUnitCarbonView.h>
#include <AudioToolbox/AudioUnitUtilities.h>
#include "CarbonEventHandler.h"
#include "CAAUParameter.h"
class AUCarbonViewBase;
// ____________________________________________________________________________
// AUCarbonViewControl
// Wrapper for a control that is wired to an AudioUnit parameter.
/*! @class AUCarbonViewControl */
class AUCarbonViewControl : public CarbonEventHandler {
// note that the controls are never disposed; that's managed by the AUCarbonViewBase's
// parent pane which contains all of them ... if we later need to be able to delete
// individual controls on the fly, extra work needed
public:
enum ControlType {
kTypeContinuous, // e.g. slider
kTypeDiscrete, // e.g. pop-up menu
kTypeText
};
AUCarbonViewControl(AUCarbonViewBase *ownerView, AUParameterListenerRef listener, ControlType type, const CAAUParameter &param, ControlRef control);
~AUCarbonViewControl();
/*! @method Bind */
virtual void Bind(); // second-stage construction
/*! @method ControlToParameter */
virtual void ControlToParameter();
/*! @method ParameterToControl */
virtual void ParameterToControl(Float32 newValue);
/*! @method SetValueFract */
virtual void SetValueFract(double value);
/*! @method GetValueFract */
virtual double GetValueFract();
/*! @method SetTextValue */
virtual void SetTextValue(CFStringRef str);
/*! @method GetTextValue */
virtual CFStringRef GetTextValue();
/*! @method SetValue */
virtual void SetValue(long value);
/*! @method GetValue */
virtual long GetValue();
/*! @method GetOwnerView */
AUCarbonViewBase * GetOwnerView() {return mOwnerView;}
/*! @method Update */
void Update (bool inUIThread)
{
if (inUIThread)
ParameterToControl (mParam.GetValue());
else
AUParameterListenerNotify (mListener, this, &mParam);
}
// CarbonEventHandler overrides
/*! @method HandleEvent */
virtual bool HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event);
/*! @method ControlRef */
operator ControlRef() { return mControl; }
/*! @method SizeControlToFit */
static Boolean SizeControlToFit(ControlRef inControl, SInt16 *outWidth = NULL, SInt16 *outHeight = NULL);
/*! @method SliderTrackProc */
static pascal void SliderTrackProc(ControlRef theControl, ControlPartCode partCode);
/*! @method NumericKeyFilterCallback */
static pascal ControlKeyFilterResult NumericKeyFilterCallback(ControlRef theControl, SInt16 *keyCode, SInt16 *charCode,
EventModifiers *modifiers);
protected:
/*! @method ParamInfo */
const AudioUnitParameterInfo &ParamInfo() { return mParam.ParamInfo(); }
/*! @var mOwnerView */
AUCarbonViewBase * mOwnerView;
/*! @var mListener */
AUParameterListenerRef mListener;
/*! @var mType */
ControlType mType;
/*! @var mParam */
CAAUParameter mParam;
/*! @var mControl */
ControlRef mControl;
/*! @method StdKeyFilterCallback */
static pascal ControlKeyFilterResult StdKeyFilterCallback(ControlRef theControl, SInt16 *keyCode, SInt16 *charCode,
EventModifiers *modifiers);
SInt16 mInControlInitialization;
static AUCarbonViewControl* mLastControl;
};
/*! @class AUPropertyControl */
class AUPropertyControl : public CarbonEventHandler {
public:
/*! @ctor AUPropertyControl */
AUPropertyControl (AUCarbonViewBase * inBase) : mControl(0), mView (inBase), mHeight(0) {}
/*! @method HandleEvent */
virtual bool HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event);
/*! @method HandlePropertyChange */
virtual bool HandlePropertyChange (const AudioUnitProperty &inProp) = 0;
/*! @method AddInterest */
virtual void AddInterest (AUEventListenerRef inListener,
void * inObject) = 0;
/*! @method RemoveInterest */
virtual void RemoveInterest (AUEventListenerRef inListener,
void * inObject) = 0;
/*! @method GetHeight */
int GetHeight() { return mHeight;}
protected:
/*! @method HandleControlChange */
virtual void HandleControlChange () = 0;
/*! @method RegisterEvents */
void RegisterEvents ();
/*! @method EmbedControl */
void EmbedControl (ControlRef theControl);
/*! @method GetCarbonWindow */
WindowRef GetCarbonWindow();
/*! @var mControl */
ControlRef mControl;
/*! @var mView */
AUCarbonViewBase* mView;
/*! @var mHeight */
SInt16 mHeight;
};
/*! @class AUVPresets */
class AUVPresets : public AUPropertyControl {
public:
/*! @ctor HandleControlChange */
AUVPresets (AUCarbonViewBase * inBase,
CFArrayRef& inPresets,
Point inLocation,
int nameWidth,
int controlWidth,
ControlFontStyleRec & inFontStyle);
virtual ~AUVPresets () { CFRelease (mPresets); }
/*! @method HandlePropertyChange */
virtual bool HandlePropertyChange (const AudioUnitProperty &inProp);
/*! @method AddInterest */
virtual void AddInterest (AUEventListenerRef inListener,
void * inObject);
/*! @method RemoveInterest */
virtual void RemoveInterest (AUEventListenerRef inListener,
void * inObject);
protected:
/*! @method HandleControlChange */
virtual void HandleControlChange ();
/*! @var mPresets */
CFArrayRef mPresets;
/*! @var mView */
AUCarbonViewBase* mView;
AudioUnitPropertyID mPropertyID;
void HandlePropertyChange(AUPreset &preset);
};
#endif // __AUCarbonViewControl_h__

+ 0
- 125
modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewDispatch.cpp View File

@@ -1,125 +0,0 @@
/*
File: AUCarbonViewDispatch.cpp
Abstract: AUCarbonViewDispatch.h
Version: 1.1
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#include "AUCarbonViewBase.h"
// ____________________________________________________________________________
// component dispatch
#if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
#endif
struct AudioUnitCarbonViewCreateGluePB {
unsigned char componentFlags;
unsigned char componentParamSize;
short componentWhat;
ControlRef* outControl;
const Float32Point* inSize;
const Float32Point* inLocation;
ControlRef inParentControl;
WindowRef inWindow;
AudioUnit inAudioUnit;
AudioUnitCarbonView inView;
};
#if !__LP64__
struct AudioUnitCarbonViewSetEventListenerGluePB {
unsigned char componentFlags;
unsigned char componentParamSize;
short componentWhat;
void* inUserData;
AudioUnitCarbonViewEventListener inCallback;
AudioUnitCarbonView inView;
};
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#define CheckNull(x) if ((x) == NULL) return paramErr;
OSStatus AUCarbonViewBase::ComponentEntryDispatch(ComponentParameters *p, AUCarbonViewBase *This)
{
if (This == NULL) return paramErr;
OSStatus result = noErr;
switch (p->what) {
case kAudioUnitCarbonViewCreateSelect:
{
AudioUnitCarbonViewCreateGluePB *pb = (AudioUnitCarbonViewCreateGluePB *)p;
CheckNull(pb->inAudioUnit);
CheckNull(pb->inWindow);
CheckNull(pb->inParentControl);
CheckNull(pb->inSize);
CheckNull(pb->inLocation);
CheckNull(pb->outControl);
result = This->CreateCarbonView(pb->inAudioUnit, pb->inWindow, pb->inParentControl,
*pb->inLocation, *pb->inSize, *pb->outControl);
}
break;
#if !__LP64__
case kAudioUnitCarbonViewSetEventListenerSelect:
{
AudioUnitCarbonViewSetEventListenerGluePB *pb = (AudioUnitCarbonViewSetEventListenerGluePB *)p;
This->SetEventListener(pb->inCallback, pb->inUserData);
}
break;
#endif
default:
result = ComponentBase::ComponentEntryDispatch(p, This);
break;
}
return result;
}

+ 0
- 91
modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp View File

@@ -1,91 +0,0 @@
/*
File: CarbonEventHandler.cpp
Abstract: CarbonEventHandler.h
Version: 1.1
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#include "CarbonEventHandler.h"
static pascal OSStatus TheEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData)
{
CarbonEventHandler *handler = (CarbonEventHandler *)inUserData;
if (handler->HandleEvent(inHandlerRef, inEvent))
return noErr;
else return eventNotHandledErr;
}
CarbonEventHandler::CarbonEventHandler() :
mHandlers(NULL)
{
}
CarbonEventHandler::~CarbonEventHandler()
{
if (mHandlers != NULL) {
int count = static_cast<int>(CFDictionaryGetCount(mHandlers));
EventHandlerRef *theHandlers = (EventHandlerRef*) malloc(count * sizeof(EventHandlerRef));
CFDictionaryGetKeysAndValues(mHandlers, NULL, (const void **)theHandlers);
for (int i = 0; i < count; i++)
RemoveEventHandler(theHandlers[i]);
CFDictionaryRemoveAllValues(mHandlers);
CFRelease (mHandlers);
free(theHandlers);
}
}
void CarbonEventHandler::WantEventTypes(EventTargetRef target, UInt32 inNumTypes, const EventTypeSpec *inList)
{
if (mHandlers == NULL)
mHandlers = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
EventHandlerRef handler;
if (CFDictionaryGetValueIfPresent (mHandlers, target, (const void **)&handler)) // if there is already a handler for the target, add the type
verify_noerr(AddEventTypesToHandler(handler, inNumTypes, inList));
else {
verify_noerr(InstallEventHandler(target, TheEventHandler, inNumTypes, inList, this, &handler));
CFDictionaryAddValue(mHandlers, target, handler);
}
}

+ 0
- 71
modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.h View File

@@ -1,71 +0,0 @@
/*
File: CarbonEventHandler.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc. may
be used to endorse or promote products derived from the Apple Software
without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2014 Apple Inc. All Rights Reserved.
*/
#ifndef __CarbonEventHandler_h__
#define __CarbonEventHandler_h__
#include <Carbon/Carbon.h>
/*! @class CarbonEventHandler */
class CarbonEventHandler {
public:
/*! @ctor CarbonEventHandler */
CarbonEventHandler();
/*! @dtor ~CarbonEventHandler */
virtual ~CarbonEventHandler();
/*! @method WantEventTypes */
virtual void WantEventTypes(EventTargetRef target, UInt32 inNumTypes, const EventTypeSpec *inList);
/*! @method HandleEvent */
virtual bool HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event) = 0;
protected:
/*! @var mHandlers */
CFMutableDictionaryRef mHandlers;
};
#endif // __CarbonEventHandler_h__

+ 0
- 287
modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm View File

@@ -22,11 +22,6 @@
#if JucePlugin_Build_AU
#if __LP64__
#undef JUCE_SUPPORT_CARBON
#define JUCE_SUPPORT_CARBON 0
#endif
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wshorten-64-to-32",
"-Wunused-parameter",
"-Wdeprecated-declarations",
@@ -52,29 +47,11 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wshorten-64-to-32",
#include <QuartzCore/QuartzCore.h>
#include "CoreAudioUtilityClasses/MusicDeviceBase.h"
/** The BUILD_AU_CARBON_UI flag lets you specify whether old-school carbon hosts are supported as
well as ones that can open a cocoa view. If this is enabled, you'll need to also add the AUCarbonBase
files to your project.
*/
#if ! (defined (BUILD_AU_CARBON_UI) || JUCE_64BIT)
#define BUILD_AU_CARBON_UI 1
#endif
#ifdef __LP64__
#undef BUILD_AU_CARBON_UI // (not possible in a 64-bit build)
#endif
#if BUILD_AU_CARBON_UI
#include "CoreAudioUtilityClasses/AUCarbonViewBase.h"
#endif
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#define JUCE_MAC_WINDOW_VISIBITY_BODGE 1
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
#include "../utility/juce_IncludeModuleHeaders.h"
#include "../utility/juce_CarbonVisibility.h"
#include <juce_audio_basics/native/juce_mac_CoreAudioLayouts.h>
#include <juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h>
@@ -96,13 +73,7 @@ struct AudioProcessorHolder
AudioProcessorHolder (bool initialiseGUI)
{
if (initialiseGUI)
{
#if BUILD_AU_CARBON_UI
NSApplicationLoad();
#endif
initialiseJuce_GUI();
}
juceFilter.reset (createPluginFilterOfType (AudioProcessor::wrapperType_AudioUnit));
@@ -1060,23 +1031,6 @@ public:
return rate > 0 ? juceFilter->getLatencySamples() / rate : 0;
}
//==============================================================================
#if BUILD_AU_CARBON_UI
int GetNumCustomUIComponents() override
{
return getHostType().isDigitalPerformer() ? 0 : 1;
}
void GetUIComponentDescs (ComponentDescription* inDescArray) override
{
inDescArray[0].componentType = kAudioUnitCarbonViewComponentType;
inDescArray[0].componentSubType = JucePlugin_AUSubType;
inDescArray[0].componentManufacturer = JucePlugin_AUManufacturerCode;
inDescArray[0].componentFlags = 0;
inDescArray[0].componentFlagsMask = 0;
}
#endif
//==============================================================================
bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) override
{
@@ -2420,243 +2374,6 @@ private:
JUCE_DECLARE_NON_COPYABLE (JuceAU)
};
//==============================================================================
#if BUILD_AU_CARBON_UI
class JuceAUView : public AUCarbonViewBase
{
public:
JuceAUView (AudioUnitCarbonView auview)
: AUCarbonViewBase (auview),
juceFilter (nullptr)
{
}
~JuceAUView()
{
deleteUI();
}
ComponentResult CreateUI (Float32 /*inXOffset*/, Float32 /*inYOffset*/) override
{
JUCE_AUTORELEASEPOOL
{
if (juceFilter == nullptr)
{
void* pointers[2];
UInt32 propertySize = sizeof (pointers);
AudioUnitGetProperty (GetEditAudioUnit(),
juceFilterObjectPropertyID,
kAudioUnitScope_Global,
0,
pointers,
&propertySize);
juceFilter = (AudioProcessor*) pointers[0];
}
if (juceFilter != nullptr)
{
deleteUI();
if (AudioProcessorEditor* editorComp = juceFilter->createEditorIfNeeded())
{
editorComp->setOpaque (true);
windowComp.reset (new ComponentInHIView (editorComp, mCarbonPane));
}
}
else
{
jassertfalse; // can't get a pointer to our effect
}
}
return noErr;
}
AudioUnitCarbonViewEventListener getEventListener() const { return mEventListener; }
void* getEventListenerUserData() const { return mEventListenerUserData; }
private:
//==============================================================================
AudioProcessor* juceFilter;
std::unique_ptr<Component> windowComp;
void deleteUI()
{
if (windowComp != nullptr)
{
PopupMenu::dismissAllActiveMenus();
/* This assertion is triggered when there's some kind of modal component active, and the
host is trying to delete our plugin.
If you must use modal components, always use them in a non-blocking way, by never
calling runModalLoop(), but instead using enterModalState() with a callback that
will be performed on completion. (Note that this assertion could actually trigger
a false alarm even if you're doing it correctly, but is here to catch people who
aren't so careful) */
jassert (Component::getCurrentlyModalComponent() == nullptr);
if (JuceAU::EditorCompHolder* editorCompHolder = dynamic_cast<JuceAU::EditorCompHolder*> (windowComp->getChildComponent(0)))
if (AudioProcessorEditor* audioProcessEditor = dynamic_cast<AudioProcessorEditor*> (editorCompHolder->getChildComponent(0)))
juceFilter->editorBeingDeleted (audioProcessEditor);
windowComp = nullptr;
}
}
//==============================================================================
// Uses a child NSWindow to sit in front of a HIView and display our component
class ComponentInHIView : public Component
{
public:
ComponentInHIView (AudioProcessorEditor* ed, HIViewRef parentHIView)
: parentView (parentHIView),
editor (ed),
recursive (false)
{
JUCE_AUTORELEASEPOOL
{
jassert (ed != nullptr);
addAndMakeVisible (editor);
setOpaque (true);
setVisible (true);
setBroughtToFrontOnMouseClick (true);
setSize (editor.getWidth(), editor.getHeight());
SizeControl (parentHIView, (SInt16) editor.getWidth(), (SInt16) editor.getHeight());
WindowRef windowRef = HIViewGetWindow (parentHIView);
hostWindow = [[NSWindow alloc] initWithWindowRef: windowRef];
// not really sure why this is needed in older OS X versions
// but JUCE plug-ins crash without it
if ((SystemStats::getOperatingSystemType() & 0xff) < 12)
[hostWindow retain];
[hostWindow setCanHide: YES];
[hostWindow setReleasedWhenClosed: YES];
updateWindowPos();
#if ! JucePlugin_EditorRequiresKeyboardFocus
addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses);
setWantsKeyboardFocus (false);
#else
addToDesktop (ComponentPeer::windowIsTemporary);
setWantsKeyboardFocus (true);
#endif
setVisible (true);
toFront (false);
addSubWindow();
NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window];
[pluginWindow setNextResponder: hostWindow];
attachWindowHidingHooks (this, (WindowRef) windowRef, hostWindow);
}
}
~ComponentInHIView()
{
JUCE_AUTORELEASEPOOL
{
removeWindowHidingHooks (this);
NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window];
[hostWindow removeChildWindow: pluginWindow];
removeFromDesktop();
[hostWindow release];
hostWindow = nil;
}
}
void updateWindowPos()
{
HIPoint f;
f.x = f.y = 0;
HIPointConvert (&f, kHICoordSpaceView, parentView, kHICoordSpaceScreenPixel, 0);
setTopLeftPosition ((int) f.x, (int) f.y);
}
void addSubWindow()
{
NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window];
[pluginWindow setExcludedFromWindowsMenu: YES];
[pluginWindow setCanHide: YES];
[hostWindow addChildWindow: pluginWindow
ordered: NSWindowAbove];
[hostWindow orderFront: nil];
[pluginWindow orderFront: nil];
}
void resized() override
{
if (Component* const child = getChildComponent (0))
child->setBounds (getLocalBounds());
}
void paint (Graphics&) override {}
void childBoundsChanged (Component*) override
{
if (! recursive)
{
recursive = true;
const int w = jmax (32, editor.getWidth());
const int h = jmax (32, editor.getHeight());
SizeControl (parentView, (SInt16) w, (SInt16) h);
if (getWidth() != w || getHeight() != h)
setSize (w, h);
editor.repaint();
updateWindowPos();
addSubWindow(); // (need this for AULab)
recursive = false;
}
}
bool keyPressed (const KeyPress& kp) override
{
if (! kp.getModifiers().isCommandDown())
{
// If we have an unused keypress, move the key-focus to a host window
// and re-inject the event..
static NSTimeInterval lastEventTime = 0; // check we're not recursively sending the same event
NSTimeInterval eventTime = [[NSApp currentEvent] timestamp];
if (lastEventTime != eventTime)
{
lastEventTime = eventTime;
[[hostWindow parentWindow] makeKeyWindow];
repostCurrentNSEvent();
}
}
return false;
}
private:
HIViewRef parentView;
NSWindow* hostWindow;
JuceAU::EditorCompHolder editor;
bool recursive;
};
};
#endif
//==============================================================================
#define JUCE_COMPONENT_ENTRYX(Class, Name, Suffix) \
extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj); \
@@ -2694,10 +2411,6 @@ JUCE_COMPONENT_ENTRY (JuceAU, JucePlugin_AUExportPrefix, Entry)
JUCE_FACTORY_ENTRY (JuceAU, JucePlugin_AUExportPrefix)
#endif
#if BUILD_AU_CARBON_UI
JUCE_COMPONENT_ENTRY (JuceAUView, JucePlugin_AUExportPrefix, ViewEntry)
#endif
#if ! JUCE_DISABLE_AU_FACTORY_ENTRY
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wcast-align", "-Wzero-as-null-pointer-constant")


+ 0
- 7
modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.mm View File

@@ -24,11 +24,8 @@
#if JucePlugin_Build_VST || JucePlugin_Build_VST3
#define JUCE_MAC_WINDOW_VISIBITY_BODGE 1
#include "../utility/juce_IncludeSystemHeaders.h"
#include "../utility/juce_IncludeModuleHeaders.h"
#include "../utility/juce_CarbonVisibility.h"
//==============================================================================
namespace juce
@@ -153,8 +150,6 @@ void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView,
[hostWindow orderFront: nil];
[pluginWindow orderFront: nil];
attachWindowHidingHooks (comp, (WindowRef) parentWindowOrView, hostWindow);
return hostWindow;
}
#endif
@@ -192,8 +187,6 @@ void detachComponentFromWindowRefVST (Component* comp, void* window, bool isNSVi
comp->getProperties() ["boundsEventRef"].toString().getHexValue64();
RemoveEventHandler (ref);
removeWindowHidingHooks (comp);
CFUniquePtr<HIViewRef> dummyView ((HIViewRef) (void*) (pointer_sized_int)
comp->getProperties() ["dummyViewRef"].toString().getHexValue64());


+ 0
- 20
modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r View File

@@ -41,23 +41,3 @@
#define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "Entry"
#include "AUResources.r"
//==============================================================================
// component resources for Audio Unit Carbon View
#ifndef BUILD_AU_CARBON_UI
#define BUILD_AU_CARBON_UI 1
#endif
#if BUILD_AU_CARBON_UI
#define RES_ID 2000
#define COMP_TYPE kAudioUnitCarbonViewComponentType
#define COMP_SUBTYPE JucePlugin_AUSubType
#define COMP_MANUF JucePlugin_AUManufacturerCode
#define VERSION JucePlugin_VersionCode
#define NAME JucePlugin_Manufacturer ": " JucePlugin_Name " View"
#define DESCRIPTION NAME
#define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "ViewEntry"
#include "AUResources.r"
#endif

+ 0
- 4
modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm View File

@@ -55,9 +55,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wparentheses",
#include "AU/CoreAudioUtilityClasses/AUBase.cpp"
#include "AU/CoreAudioUtilityClasses/AUBuffer.cpp"
#include "AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp"
#include "AU/CoreAudioUtilityClasses/AUCarbonViewControl.cpp"
#include "AU/CoreAudioUtilityClasses/AUCarbonViewDispatch.cpp"
#include "AU/CoreAudioUtilityClasses/AUDispatch.cpp"
#include "AU/CoreAudioUtilityClasses/AUInputElement.cpp"
#include "AU/CoreAudioUtilityClasses/AUMIDIBase.cpp"
@@ -69,7 +66,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wparentheses",
#include "AU/CoreAudioUtilityClasses/CAMutex.cpp"
#include "AU/CoreAudioUtilityClasses/CAStreamBasicDescription.cpp"
#include "AU/CoreAudioUtilityClasses/CAVectorUnit.cpp"
#include "AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp"
#include "AU/CoreAudioUtilityClasses/ComponentBase.cpp"
#include "AU/CoreAudioUtilityClasses/MusicDeviceBase.cpp"


+ 0
- 73
modules/juce_audio_plugin_client/utility/juce_CarbonVisibility.h View File

@@ -1,73 +0,0 @@
/*
==============================================================================
This file is part of the JUCE 7 technical preview.
Copyright (c) 2022 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
For the technical preview this file cannot be licensed commercially.
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
DISCLAIMED.
==============================================================================
*/
namespace juce
{
//==============================================================================
#if JUCE_SUPPORT_CARBON && JUCE_MAC_WINDOW_VISIBITY_BODGE
/* When you wrap a WindowRef as an NSWindow, it seems to bugger up the HideWindow
function, so when the host tries (and fails) to hide the window, this stuff catches
the event and forces it to update.
*/
static pascal OSStatus windowVisibilityBodge (EventHandlerCallRef, EventRef e, void* user)
{
NSWindow* hostWindow = (NSWindow*) user;
switch (GetEventKind (e))
{
case kEventWindowInit: [hostWindow display]; break;
case kEventWindowShown: [hostWindow orderFront: nil]; break;
case kEventWindowHidden: [hostWindow orderOut: nil]; break;
}
return eventNotHandledErr;
}
inline void attachWindowHidingHooks (Component* comp, void* hostWindowRef, NSWindow* nsWindow)
{
const EventTypeSpec eventsToCatch[] =
{
{ kEventClassWindow, kEventWindowInit },
{ kEventClassWindow, kEventWindowShown },
{ kEventClassWindow, kEventWindowHidden }
};
EventHandlerRef ref;
InstallWindowEventHandler ((WindowRef) hostWindowRef,
NewEventHandlerUPP (windowVisibilityBodge),
GetEventTypeCount (eventsToCatch), eventsToCatch,
(void*) nsWindow, &ref);
comp->getProperties().set ("carbonEventRef", String::toHexString ((pointer_sized_int) (void*) ref));
}
inline void removeWindowHidingHooks (Component* comp)
{
if (comp != nullptr)
RemoveEventHandler ((EventHandlerRef) (void*) (pointer_sized_int)
comp->getProperties() ["carbonEventRef"].toString().getHexValue64());
}
#elif JUCE_MAC
inline void attachWindowHidingHooks (void*, void*, void*) {}
inline void removeWindowHidingHooks (void*) {}
#endif
} // namespace juce

+ 0
- 8
modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h View File

@@ -34,10 +34,6 @@
#include <sys/time.h>
#include <arpa/inet.h>
#elif JUCE_MAC || JUCE_IOS
#if ! (defined (JUCE_SUPPORT_CARBON) || defined (__LP64__))
#define JUCE_SUPPORT_CARBON 1
#endif
#ifdef __OBJC__
#if JUCE_MAC
#include <Cocoa/Cocoa.h>
@@ -48,10 +44,6 @@
#endif
#endif
#if JUCE_SUPPORT_CARBON && (! JUCE_IOS)
#include <Carbon/Carbon.h>
#endif
#include <objc/runtime.h>
#include <objc/objc.h>
#include <objc/message.h>


+ 0
- 156
modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm View File

@@ -28,10 +28,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations")
#include <CoreMIDI/MIDIServices.h>
#if JUCE_SUPPORT_CARBON
#include <AudioUnit/AudioUnitCarbonView.h>
#endif
#include <CoreAudioKit/AUViewController.h>
#include <juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h>
@@ -427,7 +423,6 @@ namespace AudioUnitFormatHelpers
}
//==============================================================================
class AudioUnitPluginWindowCarbon;
class AudioUnitPluginWindowCocoa;
//==============================================================================
@@ -1615,7 +1610,6 @@ public:
private:
//==============================================================================
friend class AudioUnitPluginWindowCarbon;
friend class AudioUnitPluginWindowCocoa;
friend class AudioUnitPluginFormat;
@@ -2594,162 +2588,12 @@ private:
}
};
#if JUCE_SUPPORT_CARBON
//==============================================================================
class AudioUnitPluginWindowCarbon : public AudioProcessorEditor
{
public:
AudioUnitPluginWindowCarbon (AudioUnitPluginInstance& p)
: AudioProcessorEditor (&p),
plugin (p),
audioComponent (nullptr),
viewComponent (nullptr)
{
innerWrapper.reset (new InnerWrapperComponent (*this));
addAndMakeVisible (innerWrapper.get());
setOpaque (true);
setVisible (true);
setSize (400, 300);
UInt32 propertySize;
if (AudioUnitGetPropertyInfo (plugin.audioUnit, kAudioUnitProperty_GetUIComponentList,
kAudioUnitScope_Global, 0, &propertySize, NULL) == noErr
&& propertySize > 0)
{
HeapBlock<AudioComponentDescription> views (propertySize / sizeof (AudioComponentDescription));
if (AudioUnitGetProperty (plugin.audioUnit, kAudioUnitProperty_GetUIComponentList,
kAudioUnitScope_Global, 0, &views[0], &propertySize) == noErr)
{
audioComponent = AudioComponentFindNext (nullptr, &views[0]);
}
}
}
~AudioUnitPluginWindowCarbon()
{
innerWrapper = nullptr;
if (isValid())
plugin.editorBeingDeleted (this);
}
bool isValid() const noexcept { return audioComponent != nullptr; }
//==============================================================================
void paint (Graphics& g) override
{
g.fillAll (Colours::black);
}
void resized() override
{
if (innerWrapper != nullptr)
innerWrapper->setSize (getWidth(), getHeight());
}
//==============================================================================
bool keyStateChanged (bool) override { return false; }
bool keyPressed (const KeyPress&) override { return false; }
//==============================================================================
AudioUnit getAudioUnit() const { return plugin.audioUnit; }
AudioUnitCarbonView getViewComponent()
{
if (viewComponent == nullptr && audioComponent != nullptr)
AudioComponentInstanceNew (audioComponent, &viewComponent);
return viewComponent;
}
void closeViewComponent()
{
if (viewComponent != nullptr)
{
JUCE_AU_LOG ("Closing AU GUI: " + plugin.getName());
AudioComponentInstanceDispose (viewComponent);
viewComponent = nullptr;
}
}
private:
//==============================================================================
AudioUnitPluginInstance& plugin;
AudioComponent audioComponent;
AudioUnitCarbonView viewComponent;
//==============================================================================
class InnerWrapperComponent : public CarbonViewWrapperComponent
{
public:
InnerWrapperComponent (AudioUnitPluginWindowCarbon& w) : owner (w) {}
~InnerWrapperComponent()
{
deleteWindow();
}
HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) override
{
JUCE_AU_LOG ("Opening AU GUI: " + owner.plugin.getName());
AudioUnitCarbonView carbonView = owner.getViewComponent();
if (carbonView == 0)
return 0;
Float32Point pos = { 0, 0 };
Float32Point size = { 250, 200 };
HIViewRef pluginView = 0;
AudioUnitCarbonViewCreate (carbonView, owner.getAudioUnit(), windowRef, rootView,
&pos, &size, (ControlRef*) &pluginView);
return pluginView;
}
void removeView (HIViewRef) override
{
owner.closeViewComponent();
}
private:
AudioUnitPluginWindowCarbon& owner;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InnerWrapperComponent)
};
friend class InnerWrapperComponent;
std::unique_ptr<InnerWrapperComponent> innerWrapper;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioUnitPluginWindowCarbon)
};
#endif
//==============================================================================
AudioProcessorEditor* AudioUnitPluginInstance::createEditor()
{
std::unique_ptr<AudioProcessorEditor> w (new AudioUnitPluginWindowCocoa (*this, false));
if (! static_cast<AudioUnitPluginWindowCocoa*> (w.get())->isValid())
w.reset();
#if JUCE_SUPPORT_CARBON
if (w == nullptr)
{
w.reset (new AudioUnitPluginWindowCarbon (*this));
if (! static_cast<AudioUnitPluginWindowCarbon*> (w.get())->isValid())
w.reset();
}
#endif
if (w == nullptr)
w.reset (new AudioUnitPluginWindowCocoa (*this, true)); // use AUGenericView as a fallback
return w.release();


+ 10
- 119
modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp View File

@@ -1220,10 +1220,6 @@ struct VSTPluginInstance final : public AudioPluginInstance,
wantsMidiMessages = pluginCanDo ("receiveVstMidiEvent") > 0 || isSynthPlugin();
#if JUCE_MAC && JUCE_SUPPORT_CARBON
usesCocoaNSView = ((unsigned int) pluginCanDo ("hasCockosViewAsConfig") & 0xffff0000ul) == 0xbeef0000ul;
#endif
setLatencySamples (vstEffect->initialDelay);
}
@@ -1961,7 +1957,6 @@ struct VSTPluginInstance final : public AudioPluginInstance,
ModuleHandle::Ptr vstModule;
std::unique_ptr<VSTPluginFormat::ExtraFunctions> extraFunctions;
bool usesCocoaNSView = false;
private:
//==============================================================================
@@ -2732,18 +2727,8 @@ public:
#elif JUCE_MAC
ignoreUnused (recursiveResize, pluginRefusesToResize, alreadyInside);
#if JUCE_SUPPORT_CARBON
if (! plug.usesCocoaNSView)
{
carbonWrapper.reset (new CarbonWrapperComponent (*this));
addAndMakeVisible (carbonWrapper.get());
}
else
#endif
{
cocoaWrapper.reset (new NSViewComponentWithParent (plugin));
addAndMakeVisible (cocoaWrapper.get());
}
cocoaWrapper.reset (new NSViewComponentWithParent (plugin));
addAndMakeVisible (cocoaWrapper.get());
#endif
activeVSTWindows.add (this);
@@ -2769,9 +2754,6 @@ public:
closePluginWindow();
#if JUCE_MAC
#if JUCE_SUPPORT_CARBON
carbonWrapper.reset();
#endif
cocoaWrapper.reset();
#endif
@@ -2800,11 +2782,6 @@ public:
setSize (correctedBounds.getWidth(), correctedBounds.getHeight());
#if JUCE_MAC
#if JUCE_SUPPORT_CARBON
if (carbonWrapper != nullptr)
carbonWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight());
#endif
if (cocoaWrapper != nullptr)
cocoaWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight());
#endif
@@ -2820,25 +2797,19 @@ public:
void visibilityChanged() override
{
if (cocoaWrapper != nullptr)
{
if (isShowing())
openPluginWindow ((NSView*) cocoaWrapper->getView());
else
closePluginWindow();
}
if (isShowing())
openPluginWindow ((NSView*) cocoaWrapper->getView());
else
closePluginWindow();
}
void childBoundsChanged (Component*) override
{
if (cocoaWrapper != nullptr)
{
auto w = cocoaWrapper->getWidth();
auto h = cocoaWrapper->getHeight();
auto w = cocoaWrapper->getWidth();
auto h = cocoaWrapper->getHeight();
if (w != getWidth() || h != getHeight())
setSize (w, h);
}
if (w != getWidth() || h != getHeight())
setSize (w, h);
}
void parentHierarchyChanged() override { visibilityChanged(); }
@@ -3317,86 +3288,6 @@ private:
//==============================================================================
#if JUCE_MAC
#if JUCE_SUPPORT_CARBON
struct CarbonWrapperComponent : public CarbonViewWrapperComponent
{
CarbonWrapperComponent (VSTPluginWindow& w) : owner (w)
{
keepPluginWindowWhenHidden = w.shouldAvoidDeletingWindow();
setRepaintsChildHIViewWhenCreated (w.shouldRepaintCarbonWindowWhenCreated());
}
~CarbonWrapperComponent()
{
deleteWindow();
}
HIViewRef attachView (WindowRef windowRef, HIViewRef /*rootView*/) override
{
owner.openPluginWindow (windowRef);
return {};
}
void removeView (HIViewRef) override
{
if (owner.isOpen)
{
owner.isOpen = false;
owner.dispatch (Vst2::effEditClose, 0, 0, 0, 0);
owner.dispatch (Vst2::effEditSleep, 0, 0, 0, 0);
}
}
bool getEmbeddedViewSize (int& w, int& h) override
{
Vst2::ERect* rect = nullptr;
owner.dispatch (Vst2::effEditGetRect, 0, 0, &rect, 0);
w = rect->right - rect->left;
h = rect->bottom - rect->top;
return true;
}
void handleMouseDown (int x, int y) override
{
if (! alreadyInside)
{
alreadyInside = true;
getTopLevelComponent()->toFront (true);
owner.dispatch (Vst2::effEditMouse, x, y, 0, 0);
alreadyInside = false;
}
else
{
PostEvent (::mouseDown, 0);
}
}
void handlePaint() override
{
if (auto* peer = getPeer())
{
auto pos = peer->globalToLocal (getScreenPosition());
Vst2::ERect r;
r.left = (int16) pos.getX();
r.top = (int16) pos.getY();
r.right = (int16) (r.left + getWidth());
r.bottom = (int16) (r.top + getHeight());
owner.dispatch (Vst2::effEditDraw, 0, 0, &r, 0);
}
}
private:
VSTPluginWindow& owner;
bool alreadyInside = false;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CarbonWrapperComponent)
};
friend struct CarbonWrapperComponent;
std::unique_ptr<CarbonWrapperComponent> carbonWrapper;
#endif
std::unique_ptr<NSViewComponentWithParent> cocoaWrapper;
void resized() override


+ 0
- 7
modules/juce_audio_processors/juce_audio_processors.cpp View File

@@ -36,13 +36,6 @@
#include <juce_core/containers/juce_Optional.h>
//==============================================================================
#if JUCE_MAC
#if JUCE_SUPPORT_CARBON && (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_AU)
#include <Carbon/Carbon.h>
#include <juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h>
#endif
#endif
#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD)
#include <X11/Xlib.h>
#include <X11/Xutil.h>


+ 0
- 4
modules/juce_audio_processors/juce_audio_processors.h View File

@@ -107,10 +107,6 @@
// #error "You need to set either the JUCE_PLUGINHOST_AU and/or JUCE_PLUGINHOST_VST and/or JUCE_PLUGINHOST_VST3 and/or JUCE_PLUGINHOST_LADSPA flags if you're using this module!"
#endif
#if ! (defined (JUCE_SUPPORT_CARBON) || JUCE_64BIT || JUCE_IOS)
#define JUCE_SUPPORT_CARBON 1
#endif
#ifndef JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR
#define JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR 1
#endif


+ 1
- 1
modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h View File

@@ -30,7 +30,7 @@ namespace Steinberg
#endif
//==============================================================================
#if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES)
#if TARGET_OS_IPHONE
struct OpaqueAudioComponentInstance;
typedef struct OpaqueAudioComponentInstance* AudioComponentInstance;
#else


+ 4
- 8
modules/juce_core/files/juce_File.h View File

@@ -20,17 +20,13 @@
==============================================================================
*/
#if ! defined (DOXYGEN) && (JUCE_MAC || JUCE_IOS)
#if __LP64__
using OSType = unsigned int;
#else
using OSType = unsigned long;
#endif
#endif
namespace juce
{
#if ! DOXYGEN && (JUCE_MAC || JUCE_IOS)
using OSType = unsigned int;
#endif
//==============================================================================
/**
Represents a local file or directory.


+ 0
- 4
modules/juce_gui_basics/juce_gui_basics.cpp View File

@@ -44,10 +44,6 @@
#import <IOKit/pwr_mgt/IOPMLib.h>
#import <MetalKit/MetalKit.h>
#if JUCE_SUPPORT_CARBON
#import <Carbon/Carbon.h> // still needed for SetSystemUIMode()
#endif
#elif JUCE_IOS
#if JUCE_PUSH_NOTIFICATIONS && defined (__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
#import <UserNotifications/UserNotifications.h>


+ 1
- 1
modules/juce_gui_basics/juce_gui_basics.h View File

@@ -36,7 +36,7 @@
minimumCppStandard: 14
dependencies: juce_graphics juce_data_structures
OSXFrameworks: Carbon Cocoa QuartzCore
OSXFrameworks: Cocoa QuartzCore
WeakOSXFrameworks: Metal MetalKit
iOSFrameworks: CoreServices UIKit
WeakiOSFrameworks: Metal MetalKit


+ 1
- 29
modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm View File

@@ -1385,35 +1385,7 @@ public:
// has a Z label). Therefore, we need to query the current keyboard
// layout to figure out what character the key would have produced
// if the shift key was not pressed
String unmodified;
#if JUCE_SUPPORT_CARBON
if (auto currentKeyboard = CFUniquePtr<TISInputSourceRef> (TISCopyCurrentKeyboardInputSource()))
{
if (auto layoutData = (CFDataRef) TISGetInputSourceProperty (currentKeyboard,
kTISPropertyUnicodeKeyLayoutData))
{
if (auto* layoutPtr = (const UCKeyboardLayout*) CFDataGetBytePtr (layoutData))
{
UInt32 keysDown = 0;
UniChar buffer[4];
UniCharCount actual;
if (UCKeyTranslate (layoutPtr, [ev keyCode], kUCKeyActionDown, 0, LMGetKbdType(),
kUCKeyTranslateNoDeadKeysBit, &keysDown, sizeof (buffer) / sizeof (UniChar),
&actual, buffer) == 0)
unmodified = String (CharPointer_UTF16 (reinterpret_cast<CharPointer_UTF16::CharType*> (buffer)), 4);
}
}
}
// did the above layout conversion fail
if (unmodified.isEmpty())
#endif
{
unmodified = nsStringToJuce ([ev charactersIgnoringModifiers]);
}
String unmodified = nsStringToJuce ([ev charactersIgnoringModifiers]);
auto keyCode = (int) unmodified[0];
if (keyCode == 0x19) // (backwards-tab)


+ 0
- 339
modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h View File

@@ -1,339 +0,0 @@
/*
==============================================================================
This file is part of the JUCE 7 technical preview.
Copyright (c) 2022 - Raw Material Software Limited
You may use this code under the terms of the GPL v3
(see www.gnu.org/licenses).
For the technical preview this file cannot be licensed commercially.
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
DISCLAIMED.
==============================================================================
*/
namespace juce
{
//==============================================================================
/**
Creates a floating carbon window that can be used to hold a carbon UI.
This is a handy class that's designed to be inlined where needed, e.g.
in the audio plugin hosting code.
@tags{GUI}
*/
class CarbonViewWrapperComponent : public Component,
public ComponentMovementWatcher,
public Timer
{
public:
CarbonViewWrapperComponent()
: ComponentMovementWatcher (this),
carbonWindow (nil),
keepPluginWindowWhenHidden (false),
wrapperWindow (nil),
embeddedView (0),
recursiveResize (false),
repaintChildOnCreation (true)
{
}
~CarbonViewWrapperComponent()
{
jassert (embeddedView == 0); // must call deleteWindow() in the subclass's destructor!
}
virtual HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) = 0;
virtual void removeView (HIViewRef embeddedView) = 0;
virtual void handleMouseDown (int, int) {}
virtual void handlePaint() {}
virtual bool getEmbeddedViewSize (int& w, int& h)
{
if (embeddedView == 0)
return false;
HIRect bounds;
HIViewGetBounds (embeddedView, &bounds);
w = jmax (1, roundToInt (bounds.size.width));
h = jmax (1, roundToInt (bounds.size.height));
return true;
}
void createWindow()
{
if (wrapperWindow == nil)
{
Rect r;
r.left = (short) getScreenX();
r.top = (short) getScreenY();
r.right = (short) (r.left + getWidth());
r.bottom = (short) (r.top + getHeight());
CreateNewWindow (kDocumentWindowClass,
(WindowAttributes) (kWindowStandardHandlerAttribute | kWindowCompositingAttribute
| kWindowNoShadowAttribute | kWindowNoTitleBarAttribute),
&r, &wrapperWindow);
jassert (wrapperWindow != 0);
if (wrapperWindow == 0)
return;
carbonWindow = [[NSWindow alloc] initWithWindowRef: wrapperWindow];
[getOwnerWindow() addChildWindow: carbonWindow
ordered: NSWindowAbove];
embeddedView = attachView (wrapperWindow, HIViewGetRoot (wrapperWindow));
// Check for the plugin creating its own floating window, and if there is one,
// we need to reparent it to make it visible..
if (carbonWindow.childWindows.count > 0)
if (NSWindow* floatingChildWindow = [[carbonWindow childWindows] objectAtIndex: 0])
[getOwnerWindow() addChildWindow: floatingChildWindow
ordered: NSWindowAbove];
EventTypeSpec windowEventTypes[] =
{
{ kEventClassWindow, kEventWindowGetClickActivation },
{ kEventClassWindow, kEventWindowHandleDeactivate },
{ kEventClassWindow, kEventWindowBoundsChanging },
{ kEventClassMouse, kEventMouseDown },
{ kEventClassMouse, kEventMouseMoved },
{ kEventClassMouse, kEventMouseDragged },
{ kEventClassMouse, kEventMouseUp },
{ kEventClassWindow, kEventWindowDrawContent },
{ kEventClassWindow, kEventWindowShown },
{ kEventClassWindow, kEventWindowHidden }
};
EventHandlerUPP upp = NewEventHandlerUPP (carbonEventCallback);
InstallWindowEventHandler (wrapperWindow, upp,
sizeof (windowEventTypes) / sizeof (EventTypeSpec),
windowEventTypes, this, &eventHandlerRef);
setOurSizeToEmbeddedViewSize();
setEmbeddedWindowToOurSize();
creationTime = Time::getCurrentTime();
}
}
void deleteWindow()
{
removeView (embeddedView);
embeddedView = 0;
if (wrapperWindow != nil)
{
NSWindow* ownerWindow = getOwnerWindow();
if ([[ownerWindow childWindows] count] > 0)
{
[ownerWindow removeChildWindow: carbonWindow];
[carbonWindow close];
}
RemoveEventHandler (eventHandlerRef);
DisposeWindow (wrapperWindow);
wrapperWindow = nil;
}
}
//==============================================================================
void setOurSizeToEmbeddedViewSize()
{
int w, h;
if (getEmbeddedViewSize (w, h))
{
if (w != getWidth() || h != getHeight())
{
startTimer (50);
setSize (w, h);
if (Component* p = getParentComponent())
p->setSize (w, h);
}
else
{
startTimer (jlimit (50, 500, getTimerInterval() + 20));
}
}
else
{
stopTimer();
}
}
void setEmbeddedWindowToOurSize()
{
if (! recursiveResize)
{
recursiveResize = true;
if (embeddedView != 0)
{
HIRect r;
r.origin.x = 0;
r.origin.y = 0;
r.size.width = (float) getWidth();
r.size.height = (float) getHeight();
HIViewSetFrame (embeddedView, &r);
}
if (wrapperWindow != nil)
{
jassert (getTopLevelComponent()->getDesktopScaleFactor() == 1.0f);
Rectangle<int> screenBounds (getScreenBounds() * Desktop::getInstance().getGlobalScaleFactor());
Rect wr;
wr.left = (short) screenBounds.getX();
wr.top = (short) screenBounds.getY();
wr.right = (short) screenBounds.getRight();
wr.bottom = (short) screenBounds.getBottom();
SetWindowBounds (wrapperWindow, kWindowContentRgn, &wr);
// This group stuff is mainly a workaround for Mackie plugins like FinalMix..
WindowGroupRef group = GetWindowGroup (wrapperWindow);
WindowRef attachedWindow;
if (GetIndexedWindow (group, 2, kWindowGroupContentsReturnWindows, &attachedWindow) == noErr)
{
SelectWindow (attachedWindow);
ActivateWindow (attachedWindow, TRUE);
HideWindow (wrapperWindow);
}
ShowWindow (wrapperWindow);
}
recursiveResize = false;
}
}
void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) override
{
setEmbeddedWindowToOurSize();
}
// (overridden to intercept movements of the top-level window)
void componentMovedOrResized (Component& component, bool wasMoved, bool wasResized) override
{
ComponentMovementWatcher::componentMovedOrResized (component, wasMoved, wasResized);
if (&component == getTopLevelComponent())
setEmbeddedWindowToOurSize();
}
void componentPeerChanged() override
{
deleteWindow();
createWindow();
}
void componentVisibilityChanged() override
{
if (isShowing())
createWindow();
else if (! keepPluginWindowWhenHidden)
deleteWindow();
setEmbeddedWindowToOurSize();
}
static void recursiveHIViewRepaint (HIViewRef view)
{
HIViewSetNeedsDisplay (view, true);
HIViewRef child = HIViewGetFirstSubview (view);
while (child != 0)
{
recursiveHIViewRepaint (child);
child = HIViewGetNextView (child);
}
}
void timerCallback() override
{
if (isShowing())
{
setOurSizeToEmbeddedViewSize();
// To avoid strange overpainting problems when the UI is first opened, we'll
// repaint it a few times during the first second that it's on-screen..
if (repaintChildOnCreation && (Time::getCurrentTime() - creationTime).inMilliseconds() < 1000)
recursiveHIViewRepaint (HIViewGetRoot (wrapperWindow));
}
}
void setRepaintsChildHIViewWhenCreated (bool b) noexcept
{
repaintChildOnCreation = b;
}
OSStatus carbonEventHandler (EventHandlerCallRef /*nextHandlerRef*/, EventRef event)
{
switch (GetEventKind (event))
{
case kEventWindowHandleDeactivate:
ActivateWindow (wrapperWindow, TRUE);
return noErr;
case kEventWindowGetClickActivation:
{
getTopLevelComponent()->toFront (false);
[carbonWindow makeKeyAndOrderFront: nil];
ClickActivationResult howToHandleClick = kActivateAndHandleClick;
SetEventParameter (event, kEventParamClickActivation, typeClickActivationResult,
sizeof (ClickActivationResult), &howToHandleClick);
if (embeddedView != 0)
HIViewSetNeedsDisplay (embeddedView, true);
return noErr;
}
}
return eventNotHandledErr;
}
static pascal OSStatus carbonEventCallback (EventHandlerCallRef nextHandlerRef, EventRef event, void* userData)
{
return ((CarbonViewWrapperComponent*) userData)->carbonEventHandler (nextHandlerRef, event);
}
NSWindow* carbonWindow;
bool keepPluginWindowWhenHidden;
protected:
WindowRef wrapperWindow;
HIViewRef embeddedView;
bool recursiveResize, repaintChildOnCreation;
Time creationTime;
EventHandlerRef eventHandlerRef;
NSWindow* getOwnerWindow() const { return [((NSView*) getWindowHandle()) window]; }
};
//==============================================================================
// Non-public utility function that hosts can use if they need to get hold of the
// internals of a carbon wrapper window..
void* getCarbonWindow (Component* possibleCarbonComponent)
{
if (CarbonViewWrapperComponent* cv = dynamic_cast<CarbonViewWrapperComponent*> (possibleCarbonComponent))
return cv->carbonWindow;
return nullptr;
}
} // namespace juce

+ 0
- 9
modules/juce_video/native/juce_mac_Video.h View File

@@ -577,18 +577,11 @@ private:
PlayerController (Pimpl& ownerToUse, bool useNativeControlsIfAvailable)
: PlayerControllerBase (ownerToUse, useNativeControlsIfAvailable)
{
#if JUCE_32BIT
// 32-bit builds don't have AVPlayerView, so need to use a layer
useNativeControls = false;
#endif
wrappedPlayer = [&]() -> std::unique_ptr<WrappedPlayer>
{
#if ! JUCE_32BIT
if (@available (macOS 10.9, *))
if (useNativeControls)
return std::make_unique<WrappedPlayerView>();
#endif
return std::make_unique<WrappedPlayerLayer> ();
}();
@@ -658,7 +651,6 @@ private:
NSUniquePtr<AVPlayerLayer> playerLayer { [[AVPlayerLayer alloc] init] };
};
#if ! JUCE_32BIT
class API_AVAILABLE (macos (10.9)) WrappedPlayerView : public WrappedPlayer
{
public:
@@ -670,7 +662,6 @@ private:
private:
NSUniquePtr<AVPlayerView> playerView { [[AVPlayerView alloc] init] };
};
#endif
std::unique_ptr<WrappedPlayer> wrappedPlayer;
};


Loading…
Cancel
Save