| @@ -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_X11_WebBrowserComponent.cpp" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.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_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_NSViewComponent.mm" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" | "../../../../../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_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_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_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_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_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) | set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) | ||||
| @@ -36,7 +36,6 @@ | |||||
| 7B4163348896EB1B86B15160 /* AVFoundation.framework */ = {isa = PBXBuildFile; fileRef = DC192EFA899E6CBE6B5CD394; }; | 7B4163348896EB1B86B15160 /* AVFoundation.framework */ = {isa = PBXBuildFile; fileRef = DC192EFA899E6CBE6B5CD394; }; | ||||
| 8584640341100008744861A5 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 71A91516AFD980FEE694C0E1; }; | 8584640341100008744861A5 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 71A91516AFD980FEE694C0E1; }; | ||||
| 89AD16514B1F4133FFEA1DF9 /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = 96D99A08027CA35D6A4E5CFD; }; | 89AD16514B1F4133FFEA1DF9 /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = 96D99A08027CA35D6A4E5CFD; }; | ||||
| 89BC6E2354102D975E08E918 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 440D507FD8F31DB62B1F95C7; }; | |||||
| 8C0AEA08A71075A6C765AEC9 /* AVKit.framework */ = {isa = PBXBuildFile; fileRef = 3B99CF94C44E2EE04635A439; }; | 8C0AEA08A71075A6C765AEC9 /* AVKit.framework */ = {isa = PBXBuildFile; fileRef = 3B99CF94C44E2EE04635A439; }; | ||||
| 91CD2BCE4CA07E18229EB436 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 9672FCE6167ADB567A9EB2F8; }; | 91CD2BCE4CA07E18229EB436 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 9672FCE6167ADB567A9EB2F8; }; | ||||
| 9BEA1428416CE06BF72FBAB8 /* DiscRecording.framework */ = {isa = PBXBuildFile; fileRef = 3DC90DA86565B0356B6E5E0B; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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, | 163B0CF2DD0990A63DF1D5A6, | ||||
| 7B4163348896EB1B86B15160, | 7B4163348896EB1B86B15160, | ||||
| 8C0AEA08A71075A6C765AEC9, | 8C0AEA08A71075A6C765AEC9, | ||||
| 89BC6E2354102D975E08E918, | |||||
| 9F15FD7A7CE83CFD98F07D59, | 9F15FD7A7CE83CFD98F07D59, | ||||
| 1351A13E78F38741C6075600, | 1351A13E78F38741C6075600, | ||||
| 527DA2E6827BAFDDD3E8E80F, | 527DA2E6827BAFDDD3E8E80F, | ||||
| @@ -173,7 +170,6 @@ | |||||
| 470C3E4553B513FFEF752779, | 470C3E4553B513FFEF752779, | ||||
| DC192EFA899E6CBE6B5CD394, | DC192EFA899E6CBE6B5CD394, | ||||
| 3B99CF94C44E2EE04635A439, | 3B99CF94C44E2EE04635A439, | ||||
| 440D507FD8F31DB62B1F95C7, | |||||
| 02A2ED58B066B4D119F67913, | 02A2ED58B066B4D119F67913, | ||||
| 4F0A137A4115946A346180E6, | 4F0A137A4115946A346180E6, | ||||
| B4389672DA4CC8E0A531062D, | B4389672DA4CC8E0A531062D, | ||||
| @@ -3606,7 +3606,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -6288,9 +6288,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3606,7 +3606,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -6288,9 +6288,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3606,7 +3606,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -6288,9 +6288,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3606,7 +3606,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -6288,9 +6288,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -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_X11_WebBrowserComponent.cpp" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.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_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_NSViewComponent.mm" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" | "../../../../../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_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_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_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_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_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) | set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) | ||||
| @@ -24,7 +24,6 @@ | |||||
| 7E870C094BAE67D7EB149F1C /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 248FAA119A4FC24C522165EF; }; | 7E870C094BAE67D7EB149F1C /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 248FAA119A4FC24C522165EF; }; | ||||
| 8A0F71A4EEC7FE694352DD94 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 9EADBF913B7A454B6BE93A4A; }; | 8A0F71A4EEC7FE694352DD94 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 9EADBF913B7A454B6BE93A4A; }; | ||||
| 9031C69145EE085B60904363 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 43775DC3D9F7917846EA5327; }; | 9031C69145EE085B60904363 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 43775DC3D9F7917846EA5327; }; | ||||
| 9B19A6655FCC8086134C8656 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 1DA5C6A474916745AFEC6DA5; }; | |||||
| 9D47995A33BBA693ED435B31 /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = B06AE97C86D27E7FEBCB4631; }; | 9D47995A33BBA693ED435B31 /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = B06AE97C86D27E7FEBCB4631; }; | ||||
| C7B090C29D8DE4D2503204B1 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = BAFDA8DE51E7A69E477439EB; }; | C7B090C29D8DE4D2503204B1 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = BAFDA8DE51E7A69E477439EB; }; | ||||
| CC782AABFA20787BABBCED90 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = E1BB9D521BF6C055F5B88628; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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 = ( | files = ( | ||||
| 8A0F71A4EEC7FE694352DD94, | 8A0F71A4EEC7FE694352DD94, | ||||
| 30BE30F31D1AAED9FC893AA5, | 30BE30F31D1AAED9FC893AA5, | ||||
| 9B19A6655FCC8086134C8656, | |||||
| 0319B40AD2FD96007FFA928B, | 0319B40AD2FD96007FFA928B, | ||||
| 5AFD011031C266431687C922, | 5AFD011031C266431687C922, | ||||
| 71863EE98034AB7C3CBCAA81, | 71863EE98034AB7C3CBCAA81, | ||||
| @@ -108,7 +105,6 @@ | |||||
| children = ( | children = ( | ||||
| 9EADBF913B7A454B6BE93A4A, | 9EADBF913B7A454B6BE93A4A, | ||||
| 18C1CCE5684F9FA0478F27AD, | 18C1CCE5684F9FA0478F27AD, | ||||
| 1DA5C6A474916745AFEC6DA5, | |||||
| 453777CEB7099A5D61901D13, | 453777CEB7099A5D61901D13, | ||||
| 9F28F179EF6B90EB9F4DBEE9, | 9F28F179EF6B90EB9F4DBEE9, | ||||
| 24D90B40648CC05A9B1AA55B, | 24D90B40648CC05A9B1AA55B, | ||||
| @@ -3105,7 +3105,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/> | <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/> | ||||
| @@ -5403,9 +5403,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -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_X11_WebBrowserComponent.cpp" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.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_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_NSViewComponent.mm" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" | "../../../../../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_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_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_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_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_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) | set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) | ||||
| @@ -14,7 +14,6 @@ | |||||
| 15CCE43D7DCFC649638919D4 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; }; | 15CCE43D7DCFC649638919D4 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; }; | ||||
| 21D330A5B13178B12BEAFC3C /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = D4EBC17BDB7F88CCBC76730B; }; | 21D330A5B13178B12BEAFC3C /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = D4EBC17BDB7F88CCBC76730B; }; | ||||
| 2727A191DB1BAAC9C04B9081 /* include_juce_opengl.mm */ = {isa = PBXBuildFile; fileRef = 37E4D5C341406B7072120006; }; | 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; }; | 2C3D221D2AA87F07B3F1044D /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 8FE7B37CDE0818DB27BDDEBD; }; | ||||
| 3E1689E23B9C85F03209DCEF /* GraphEditorPanel.cpp */ = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; }; | 3E1689E23B9C85F03209DCEF /* GraphEditorPanel.cpp */ = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; }; | ||||
| 443244451A0F2064D4767337 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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, | B288A89F96704F142ED8E939, | ||||
| 73E371F1B912FCCAE0CD7E5D, | 73E371F1B912FCCAE0CD7E5D, | ||||
| 21D330A5B13178B12BEAFC3C, | 21D330A5B13178B12BEAFC3C, | ||||
| 2B4B9CF71F94BDD1E3AC89AE, | |||||
| AC3BED74AC7C6D9F5739F38B, | AC3BED74AC7C6D9F5739F38B, | ||||
| E3CB85BA817BC9E3942A8AB0, | E3CB85BA817BC9E3942A8AB0, | ||||
| 70580743C3D5695F065FF698, | 70580743C3D5695F065FF698, | ||||
| @@ -269,7 +266,6 @@ | |||||
| 5ACC21AA45BBF48C3C64D56D, | 5ACC21AA45BBF48C3C64D56D, | ||||
| 86CA337014D3F67E906FFD28, | 86CA337014D3F67E906FFD28, | ||||
| D4EBC17BDB7F88CCBC76730B, | D4EBC17BDB7F88CCBC76730B, | ||||
| B0935EBBA4F6E2B05F3D1C0A, | |||||
| 9794142D24966F93FFDE51A1, | 9794142D24966F93FFDE51A1, | ||||
| 9F9B445E6755CAA19E4344ED, | 9F9B445E6755CAA19E4344ED, | ||||
| E68018DE199135B7F738FB17, | E68018DE199135B7F738FB17, | ||||
| @@ -3340,7 +3340,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5838,9 +5838,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3340,7 +3340,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5838,9 +5838,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3340,7 +3340,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5838,9 +5838,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3340,7 +3340,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5838,9 +5838,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -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_X11_WebBrowserComponent.cpp" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.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_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_NSViewComponent.mm" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" | ||||
| "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" | "../../../../../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_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_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_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_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_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) | set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) | ||||
| @@ -29,7 +29,6 @@ | |||||
| A1F34D09F4E4338775917ED1 /* include_juce_audio_formats.mm */ = {isa = PBXBuildFile; fileRef = C6E2284D86D93F1D9D5C7666; }; | A1F34D09F4E4338775917ED1 /* include_juce_audio_formats.mm */ = {isa = PBXBuildFile; fileRef = C6E2284D86D93F1D9D5C7666; }; | ||||
| B323E5E5FBD5663B21A8E623 /* OpenGL.framework */ = {isa = PBXBuildFile; fileRef = 996E743A20FC78671766BF59; }; | B323E5E5FBD5663B21A8E623 /* OpenGL.framework */ = {isa = PBXBuildFile; fileRef = 996E743A20FC78671766BF59; }; | ||||
| BB9A9692D99DD0DDB1047B60 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 6D1F9E505D20C09647124F0A; }; | BB9A9692D99DD0DDB1047B60 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 6D1F9E505D20C09647124F0A; }; | ||||
| BED88ADEA4DC91AA8C810FA8 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 398A945EFD9ED923162982B1; }; | |||||
| C4D6C466C41173D6970553D2 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 9E8129263CD42C6029FC2CAD; }; | C4D6C466C41173D6970553D2 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 9E8129263CD42C6029FC2CAD; }; | ||||
| C5E7BAD864E02CF37F7BD707 /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 33AA348465F512DBA8778DAF; }; | C5E7BAD864E02CF37F7BD707 /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 33AA348465F512DBA8778DAF; }; | ||||
| C6348C6B1D0312580E97EA19 /* include_juce_osc.cpp */ = {isa = PBXBuildFile; fileRef = 3BF06B70407FFDBE9534F942; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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 = ( | files = ( | ||||
| 80EE2C27B466BAFD83881D3F, | 80EE2C27B466BAFD83881D3F, | ||||
| C4D6C466C41173D6970553D2, | C4D6C466C41173D6970553D2, | ||||
| BED88ADEA4DC91AA8C810FA8, | |||||
| 3C30D7C28C86F4054257DCD5, | 3C30D7C28C86F4054257DCD5, | ||||
| 67DF295E93E54432043126DF, | 67DF295E93E54432043126DF, | ||||
| 770AB74B1D3A0108F764DD47, | 770AB74B1D3A0108F764DD47, | ||||
| @@ -151,7 +148,6 @@ | |||||
| children = ( | children = ( | ||||
| 2E13A899F4E3C99054A3656F, | 2E13A899F4E3C99054A3656F, | ||||
| 9E8129263CD42C6029FC2CAD, | 9E8129263CD42C6029FC2CAD, | ||||
| 398A945EFD9ED923162982B1, | |||||
| C78806A6727F44EACFDED4A5, | C78806A6727F44EACFDED4A5, | ||||
| 6799B056504F9F017998B9E2, | 6799B056504F9F017998B9E2, | ||||
| 4D1DB6D77B6F3DE7A569780B, | 4D1DB6D77B6F3DE7A569780B, | ||||
| @@ -3203,7 +3203,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5565,9 +5565,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -17,7 +17,6 @@ | |||||
| 11D42F7EC6E6539D79A7F4B1 /* QuartzCore.framework */ = {isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; }; | 11D42F7EC6E6539D79A7F4B1 /* QuartzCore.framework */ = {isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; }; | ||||
| 1321E6C1C6170B6C898AD09D /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; }; | 1321E6C1C6170B6C898AD09D /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; }; | ||||
| 1B988E139004D8E2850EB656 /* jucer_PaintRoutine.cpp */ = {isa = PBXBuildFile; fileRef = C187718F7B9EBA88584B43F3; }; | 1B988E139004D8E2850EB656 /* jucer_PaintRoutine.cpp */ = {isa = PBXBuildFile; fileRef = C187718F7B9EBA88584B43F3; }; | ||||
| 1E76E36772355E2A43CF4961 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = D00F311BFC3C2625C457CB9B; }; | |||||
| 209FCCC2155A1FCB7E11E20D /* jucer_JucerDocument.cpp */ = {isa = PBXBuildFile; fileRef = 269A454F1FF081DA67FFD578; }; | 209FCCC2155A1FCB7E11E20D /* jucer_JucerDocument.cpp */ = {isa = PBXBuildFile; fileRef = 269A454F1FF081DA67FFD578; }; | ||||
| 234B6BA2952CBC7C61EF70EF /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 5867DC4E39DF8539B54C0D59; }; | 234B6BA2952CBC7C61EF70EF /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 5867DC4E39DF8539B54C0D59; }; | ||||
| 241F29FCBB7A17BB44A0B10C /* Cocoa.framework */ = {isa = PBXBuildFile; fileRef = D1F9B0E9F5D54FE48BEB46EA; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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, | A578EAD4BB55680E8097BE0F, | ||||
| C1B9334AE849F93FB3C56B34, | C1B9334AE849F93FB3C56B34, | ||||
| A14C2C2725DA3CA7995D2815, | A14C2C2725DA3CA7995D2815, | ||||
| 1E76E36772355E2A43CF4961, | |||||
| 241F29FCBB7A17BB44A0B10C, | 241F29FCBB7A17BB44A0B10C, | ||||
| 9359F9401D59B4517F75C39C, | 9359F9401D59B4517F75C39C, | ||||
| 091A57B4B9CE623E75E9A756, | 091A57B4B9CE623E75E9A756, | ||||
| @@ -442,7 +439,6 @@ | |||||
| 80D62B907248523E6943298B, | 80D62B907248523E6943298B, | ||||
| 5A75806B34E4EA6598A6024A, | 5A75806B34E4EA6598A6024A, | ||||
| 210CD22F25F2C22F9CEEB025, | 210CD22F25F2C22F9CEEB025, | ||||
| D00F311BFC3C2625C457CB9B, | |||||
| D1F9B0E9F5D54FE48BEB46EA, | D1F9B0E9F5D54FE48BEB46EA, | ||||
| 728FE25157E9874D50BBECB2, | 728FE25157E9874D50BBECB2, | ||||
| E983E6DDE3318B872EBE347F, | E983E6DDE3318B872EBE347F, | ||||
| @@ -2136,7 +2136,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | ||||
| @@ -3759,9 +3759,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -2136,7 +2136,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | ||||
| @@ -3759,9 +3759,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -2136,7 +2136,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | ||||
| @@ -3759,9 +3759,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -2136,7 +2136,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | ||||
| @@ -3759,9 +3759,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -389,7 +389,7 @@ void ProjectExporter::addCommonAudioPluginSettings() | |||||
| { | { | ||||
| if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn)) | if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn)) | ||||
| addAAXFoldersToPath(); | addAAXFoldersToPath(); | ||||
| } | |||||
| } | |||||
| void ProjectExporter::addLegacyVSTFolderToPathIfSpecified() | void ProjectExporter::addLegacyVSTFolderToPathIfSpecified() | ||||
| { | { | ||||
| @@ -19,7 +19,6 @@ | |||||
| 3822F598DA7044E5DB7633A9 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = 846E187EC2E797B982861CA4; }; | 3822F598DA7044E5DB7633A9 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = 846E187EC2E797B982861CA4; }; | ||||
| 3866839F4051D104244870B1 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 336A244E3C6460495F0A424C; }; | 3866839F4051D104244870B1 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 336A244E3C6460495F0A424C; }; | ||||
| 4BC57B0D2215621D90C8881C /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = D2EBC6292AE5AFC46EB10DAC; }; | 4BC57B0D2215621D90C8881C /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = D2EBC6292AE5AFC46EB10DAC; }; | ||||
| 59004CE43AE081B4A6CE9E17 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 1932D54A7FAE13BADBA3E9B5; }; | |||||
| 5CB3596030B0DD3763CAF85C /* include_juce_data_structures.mm */ = {isa = PBXBuildFile; fileRef = 302A999B2803C0D5C15D237C; }; | 5CB3596030B0DD3763CAF85C /* include_juce_data_structures.mm */ = {isa = PBXBuildFile; fileRef = 302A999B2803C0D5C15D237C; }; | ||||
| 5FE50792EDC7638DE9A824B5 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 5C7BDD8DF72F2FC2D44D757A; }; | 5FE50792EDC7638DE9A824B5 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 5C7BDD8DF72F2FC2D44D757A; }; | ||||
| 66FC7F44EEC9044E5C4A21C3 /* CoreAudio.framework */ = {isa = PBXBuildFile; fileRef = C0531453A002C480280C5F05; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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; }; | 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, | 96EFF7BA261F57DD829324D8, | ||||
| 6EB1A3B818863EF1787A9CCE, | 6EB1A3B818863EF1787A9CCE, | ||||
| D82BA4D40F5686DAFF5E11FB, | D82BA4D40F5686DAFF5E11FB, | ||||
| 59004CE43AE081B4A6CE9E17, | |||||
| AA207299991F85938465BF65, | AA207299991F85938465BF65, | ||||
| 66FC7F44EEC9044E5C4A21C3, | 66FC7F44EEC9044E5C4A21C3, | ||||
| 3866839F4051D104244870B1, | 3866839F4051D104244870B1, | ||||
| @@ -141,7 +138,6 @@ | |||||
| 7898C73DCA6FA9D9CF669D32, | 7898C73DCA6FA9D9CF669D32, | ||||
| 4B427AF10E722F9A362CEB73, | 4B427AF10E722F9A362CEB73, | ||||
| 99527F36B4484133087435CD, | 99527F36B4484133087435CD, | ||||
| 1932D54A7FAE13BADBA3E9B5, | |||||
| 2030A589A9355FE6A0F72428, | 2030A589A9355FE6A0F72428, | ||||
| C0531453A002C480280C5F05, | C0531453A002C480280C5F05, | ||||
| 336A244E3C6460495F0A424C, | 336A244E3C6460495F0A424C, | ||||
| @@ -3408,7 +3408,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5934,9 +5934,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3408,7 +3408,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5934,9 +5934,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3408,7 +3408,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5934,9 +5934,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -3179,7 +3179,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_SplashScreen.h"/> | <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_SystemTrayIconComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.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\native\juce_mac_NSViewFrameWatcher.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\geometry\juce_Draggable3DOrientation.h"/> | ||||
| @@ -5532,9 +5532,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\misc\juce_WebBrowserComponent.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | <Filter>JUCE Modules\juce_gui_extra\misc</Filter> | ||||
| </ClInclude> | </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"> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\native\juce_mac_NSViewFrameWatcher.h"> | ||||
| <Filter>JUCE Modules\juce_gui_extra\native</Filter> | <Filter>JUCE Modules\juce_gui_extra\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -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 ¶m, 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; | |||||
| } | |||||
| @@ -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__ | |||||
| @@ -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 ¶m, 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(¶mValue); | |||||
| 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, ¤tPreset, &theSize); | |||||
| if (result == noErr) { | |||||
| #ifndef __LP64__ | |||||
| if (inProp.mPropertyID == kAudioUnitProperty_CurrentPreset && currentPreset.presetName) | |||||
| CFRetain (currentPreset.presetName); | |||||
| #endif | |||||
| HandlePropertyChange(currentPreset); | |||||
| return true; | |||||
| } | |||||
| } | |||||
| return false; | |||||
| } | |||||
| @@ -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 ¶m, 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__ | |||||
| @@ -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; | |||||
| } | |||||
| @@ -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); | |||||
| } | |||||
| } | |||||
| @@ -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__ | |||||
| @@ -22,11 +22,6 @@ | |||||
| #if JucePlugin_Build_AU | #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", | JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wshorten-64-to-32", | ||||
| "-Wunused-parameter", | "-Wunused-parameter", | ||||
| "-Wdeprecated-declarations", | "-Wdeprecated-declarations", | ||||
| @@ -52,29 +47,11 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wshorten-64-to-32", | |||||
| #include <QuartzCore/QuartzCore.h> | #include <QuartzCore/QuartzCore.h> | ||||
| #include "CoreAudioUtilityClasses/MusicDeviceBase.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 | JUCE_END_IGNORE_WARNINGS_GCC_LIKE | ||||
| #define JUCE_MAC_WINDOW_VISIBITY_BODGE 1 | |||||
| #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
| #include "../utility/juce_IncludeModuleHeaders.h" | #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_CoreAudioLayouts.h> | ||||
| #include <juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h> | #include <juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h> | ||||
| @@ -96,13 +73,7 @@ struct AudioProcessorHolder | |||||
| AudioProcessorHolder (bool initialiseGUI) | AudioProcessorHolder (bool initialiseGUI) | ||||
| { | { | ||||
| if (initialiseGUI) | if (initialiseGUI) | ||||
| { | |||||
| #if BUILD_AU_CARBON_UI | |||||
| NSApplicationLoad(); | |||||
| #endif | |||||
| initialiseJuce_GUI(); | initialiseJuce_GUI(); | ||||
| } | |||||
| juceFilter.reset (createPluginFilterOfType (AudioProcessor::wrapperType_AudioUnit)); | juceFilter.reset (createPluginFilterOfType (AudioProcessor::wrapperType_AudioUnit)); | ||||
| @@ -1060,23 +1031,6 @@ public: | |||||
| return rate > 0 ? juceFilter->getLatencySamples() / rate : 0; | 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 | bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) override | ||||
| { | { | ||||
| @@ -2420,243 +2374,6 @@ private: | |||||
| JUCE_DECLARE_NON_COPYABLE (JuceAU) | 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) \ | #define JUCE_COMPONENT_ENTRYX(Class, Name, Suffix) \ | ||||
| extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj); \ | 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) | JUCE_FACTORY_ENTRY (JuceAU, JucePlugin_AUExportPrefix) | ||||
| #endif | #endif | ||||
| #if BUILD_AU_CARBON_UI | |||||
| JUCE_COMPONENT_ENTRY (JuceAUView, JucePlugin_AUExportPrefix, ViewEntry) | |||||
| #endif | |||||
| #if ! JUCE_DISABLE_AU_FACTORY_ENTRY | #if ! JUCE_DISABLE_AU_FACTORY_ENTRY | ||||
| JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wcast-align", "-Wzero-as-null-pointer-constant") | JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wcast-align", "-Wzero-as-null-pointer-constant") | ||||
| @@ -24,11 +24,8 @@ | |||||
| #if JucePlugin_Build_VST || JucePlugin_Build_VST3 | #if JucePlugin_Build_VST || JucePlugin_Build_VST3 | ||||
| #define JUCE_MAC_WINDOW_VISIBITY_BODGE 1 | |||||
| #include "../utility/juce_IncludeSystemHeaders.h" | #include "../utility/juce_IncludeSystemHeaders.h" | ||||
| #include "../utility/juce_IncludeModuleHeaders.h" | #include "../utility/juce_IncludeModuleHeaders.h" | ||||
| #include "../utility/juce_CarbonVisibility.h" | |||||
| //============================================================================== | //============================================================================== | ||||
| namespace juce | namespace juce | ||||
| @@ -153,8 +150,6 @@ void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView, | |||||
| [hostWindow orderFront: nil]; | [hostWindow orderFront: nil]; | ||||
| [pluginWindow orderFront: nil]; | [pluginWindow orderFront: nil]; | ||||
| attachWindowHidingHooks (comp, (WindowRef) parentWindowOrView, hostWindow); | |||||
| return hostWindow; | return hostWindow; | ||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -192,8 +187,6 @@ void detachComponentFromWindowRefVST (Component* comp, void* window, bool isNSVi | |||||
| comp->getProperties() ["boundsEventRef"].toString().getHexValue64(); | comp->getProperties() ["boundsEventRef"].toString().getHexValue64(); | ||||
| RemoveEventHandler (ref); | RemoveEventHandler (ref); | ||||
| removeWindowHidingHooks (comp); | |||||
| CFUniquePtr<HIViewRef> dummyView ((HIViewRef) (void*) (pointer_sized_int) | CFUniquePtr<HIViewRef> dummyView ((HIViewRef) (void*) (pointer_sized_int) | ||||
| comp->getProperties() ["dummyViewRef"].toString().getHexValue64()); | comp->getProperties() ["dummyViewRef"].toString().getHexValue64()); | ||||
| @@ -41,23 +41,3 @@ | |||||
| #define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "Entry" | #define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "Entry" | ||||
| #include "AUResources.r" | #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 | |||||
| @@ -55,9 +55,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wparentheses", | |||||
| #include "AU/CoreAudioUtilityClasses/AUBase.cpp" | #include "AU/CoreAudioUtilityClasses/AUBase.cpp" | ||||
| #include "AU/CoreAudioUtilityClasses/AUBuffer.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/AUDispatch.cpp" | ||||
| #include "AU/CoreAudioUtilityClasses/AUInputElement.cpp" | #include "AU/CoreAudioUtilityClasses/AUInputElement.cpp" | ||||
| #include "AU/CoreAudioUtilityClasses/AUMIDIBase.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/CAMutex.cpp" | ||||
| #include "AU/CoreAudioUtilityClasses/CAStreamBasicDescription.cpp" | #include "AU/CoreAudioUtilityClasses/CAStreamBasicDescription.cpp" | ||||
| #include "AU/CoreAudioUtilityClasses/CAVectorUnit.cpp" | #include "AU/CoreAudioUtilityClasses/CAVectorUnit.cpp" | ||||
| #include "AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp" | |||||
| #include "AU/CoreAudioUtilityClasses/ComponentBase.cpp" | #include "AU/CoreAudioUtilityClasses/ComponentBase.cpp" | ||||
| #include "AU/CoreAudioUtilityClasses/MusicDeviceBase.cpp" | #include "AU/CoreAudioUtilityClasses/MusicDeviceBase.cpp" | ||||
| @@ -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 | |||||
| @@ -34,10 +34,6 @@ | |||||
| #include <sys/time.h> | #include <sys/time.h> | ||||
| #include <arpa/inet.h> | #include <arpa/inet.h> | ||||
| #elif JUCE_MAC || JUCE_IOS | #elif JUCE_MAC || JUCE_IOS | ||||
| #if ! (defined (JUCE_SUPPORT_CARBON) || defined (__LP64__)) | |||||
| #define JUCE_SUPPORT_CARBON 1 | |||||
| #endif | |||||
| #ifdef __OBJC__ | #ifdef __OBJC__ | ||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| #include <Cocoa/Cocoa.h> | #include <Cocoa/Cocoa.h> | ||||
| @@ -48,10 +44,6 @@ | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| #if JUCE_SUPPORT_CARBON && (! JUCE_IOS) | |||||
| #include <Carbon/Carbon.h> | |||||
| #endif | |||||
| #include <objc/runtime.h> | #include <objc/runtime.h> | ||||
| #include <objc/objc.h> | #include <objc/objc.h> | ||||
| #include <objc/message.h> | #include <objc/message.h> | ||||
| @@ -28,10 +28,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") | |||||
| #include <CoreMIDI/MIDIServices.h> | #include <CoreMIDI/MIDIServices.h> | ||||
| #if JUCE_SUPPORT_CARBON | |||||
| #include <AudioUnit/AudioUnitCarbonView.h> | |||||
| #endif | |||||
| #include <CoreAudioKit/AUViewController.h> | #include <CoreAudioKit/AUViewController.h> | ||||
| #include <juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h> | #include <juce_audio_basics/native/juce_mac_CoreAudioTimeConversions.h> | ||||
| @@ -427,7 +423,6 @@ namespace AudioUnitFormatHelpers | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| class AudioUnitPluginWindowCarbon; | |||||
| class AudioUnitPluginWindowCocoa; | class AudioUnitPluginWindowCocoa; | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -1615,7 +1610,6 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| friend class AudioUnitPluginWindowCarbon; | |||||
| friend class AudioUnitPluginWindowCocoa; | friend class AudioUnitPluginWindowCocoa; | ||||
| friend class AudioUnitPluginFormat; | 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() | AudioProcessorEditor* AudioUnitPluginInstance::createEditor() | ||||
| { | { | ||||
| std::unique_ptr<AudioProcessorEditor> w (new AudioUnitPluginWindowCocoa (*this, false)); | std::unique_ptr<AudioProcessorEditor> w (new AudioUnitPluginWindowCocoa (*this, false)); | ||||
| if (! static_cast<AudioUnitPluginWindowCocoa*> (w.get())->isValid()) | 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 | w.reset (new AudioUnitPluginWindowCocoa (*this, true)); // use AUGenericView as a fallback | ||||
| return w.release(); | return w.release(); | ||||
| @@ -1220,10 +1220,6 @@ struct VSTPluginInstance final : public AudioPluginInstance, | |||||
| wantsMidiMessages = pluginCanDo ("receiveVstMidiEvent") > 0 || isSynthPlugin(); | wantsMidiMessages = pluginCanDo ("receiveVstMidiEvent") > 0 || isSynthPlugin(); | ||||
| #if JUCE_MAC && JUCE_SUPPORT_CARBON | |||||
| usesCocoaNSView = ((unsigned int) pluginCanDo ("hasCockosViewAsConfig") & 0xffff0000ul) == 0xbeef0000ul; | |||||
| #endif | |||||
| setLatencySamples (vstEffect->initialDelay); | setLatencySamples (vstEffect->initialDelay); | ||||
| } | } | ||||
| @@ -1961,7 +1957,6 @@ struct VSTPluginInstance final : public AudioPluginInstance, | |||||
| ModuleHandle::Ptr vstModule; | ModuleHandle::Ptr vstModule; | ||||
| std::unique_ptr<VSTPluginFormat::ExtraFunctions> extraFunctions; | std::unique_ptr<VSTPluginFormat::ExtraFunctions> extraFunctions; | ||||
| bool usesCocoaNSView = false; | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -2732,18 +2727,8 @@ public: | |||||
| #elif JUCE_MAC | #elif JUCE_MAC | ||||
| ignoreUnused (recursiveResize, pluginRefusesToResize, alreadyInside); | 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 | #endif | ||||
| activeVSTWindows.add (this); | activeVSTWindows.add (this); | ||||
| @@ -2769,9 +2754,6 @@ public: | |||||
| closePluginWindow(); | closePluginWindow(); | ||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| #if JUCE_SUPPORT_CARBON | |||||
| carbonWrapper.reset(); | |||||
| #endif | |||||
| cocoaWrapper.reset(); | cocoaWrapper.reset(); | ||||
| #endif | #endif | ||||
| @@ -2800,11 +2782,6 @@ public: | |||||
| setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); | setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); | ||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| #if JUCE_SUPPORT_CARBON | |||||
| if (carbonWrapper != nullptr) | |||||
| carbonWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); | |||||
| #endif | |||||
| if (cocoaWrapper != nullptr) | if (cocoaWrapper != nullptr) | ||||
| cocoaWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); | cocoaWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); | ||||
| #endif | #endif | ||||
| @@ -2820,25 +2797,19 @@ public: | |||||
| void visibilityChanged() override | 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 | 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(); } | void parentHierarchyChanged() override { visibilityChanged(); } | ||||
| @@ -3317,86 +3288,6 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| #if JUCE_MAC | #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; | std::unique_ptr<NSViewComponentWithParent> cocoaWrapper; | ||||
| void resized() override | void resized() override | ||||
| @@ -36,13 +36,6 @@ | |||||
| #include <juce_core/containers/juce_Optional.h> | #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) | #if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD) | ||||
| #include <X11/Xlib.h> | #include <X11/Xlib.h> | ||||
| #include <X11/Xutil.h> | #include <X11/Xutil.h> | ||||
| @@ -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!" | // #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 | #endif | ||||
| #if ! (defined (JUCE_SUPPORT_CARBON) || JUCE_64BIT || JUCE_IOS) | |||||
| #define JUCE_SUPPORT_CARBON 1 | |||||
| #endif | |||||
| #ifndef JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR | #ifndef JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR | ||||
| #define JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR 1 | #define JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR 1 | ||||
| #endif | #endif | ||||
| @@ -30,7 +30,7 @@ namespace Steinberg | |||||
| #endif | #endif | ||||
| //============================================================================== | //============================================================================== | ||||
| #if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES) | |||||
| #if TARGET_OS_IPHONE | |||||
| struct OpaqueAudioComponentInstance; | struct OpaqueAudioComponentInstance; | ||||
| typedef struct OpaqueAudioComponentInstance* AudioComponentInstance; | typedef struct OpaqueAudioComponentInstance* AudioComponentInstance; | ||||
| #else | #else | ||||
| @@ -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 | namespace juce | ||||
| { | { | ||||
| #if ! DOXYGEN && (JUCE_MAC || JUCE_IOS) | |||||
| using OSType = unsigned int; | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| /** | /** | ||||
| Represents a local file or directory. | Represents a local file or directory. | ||||
| @@ -44,10 +44,6 @@ | |||||
| #import <IOKit/pwr_mgt/IOPMLib.h> | #import <IOKit/pwr_mgt/IOPMLib.h> | ||||
| #import <MetalKit/MetalKit.h> | #import <MetalKit/MetalKit.h> | ||||
| #if JUCE_SUPPORT_CARBON | |||||
| #import <Carbon/Carbon.h> // still needed for SetSystemUIMode() | |||||
| #endif | |||||
| #elif JUCE_IOS | #elif JUCE_IOS | ||||
| #if JUCE_PUSH_NOTIFICATIONS && defined (__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 | #if JUCE_PUSH_NOTIFICATIONS && defined (__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 | ||||
| #import <UserNotifications/UserNotifications.h> | #import <UserNotifications/UserNotifications.h> | ||||
| @@ -36,7 +36,7 @@ | |||||
| minimumCppStandard: 14 | minimumCppStandard: 14 | ||||
| dependencies: juce_graphics juce_data_structures | dependencies: juce_graphics juce_data_structures | ||||
| OSXFrameworks: Carbon Cocoa QuartzCore | |||||
| OSXFrameworks: Cocoa QuartzCore | |||||
| WeakOSXFrameworks: Metal MetalKit | WeakOSXFrameworks: Metal MetalKit | ||||
| iOSFrameworks: CoreServices UIKit | iOSFrameworks: CoreServices UIKit | ||||
| WeakiOSFrameworks: Metal MetalKit | WeakiOSFrameworks: Metal MetalKit | ||||
| @@ -1385,35 +1385,7 @@ public: | |||||
| // has a Z label). Therefore, we need to query the current keyboard | // has a Z label). Therefore, we need to query the current keyboard | ||||
| // layout to figure out what character the key would have produced | // layout to figure out what character the key would have produced | ||||
| // if the shift key was not pressed | // 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]; | auto keyCode = (int) unmodified[0]; | ||||
| if (keyCode == 0x19) // (backwards-tab) | if (keyCode == 0x19) // (backwards-tab) | ||||
| @@ -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 | |||||
| @@ -577,18 +577,11 @@ private: | |||||
| PlayerController (Pimpl& ownerToUse, bool useNativeControlsIfAvailable) | PlayerController (Pimpl& ownerToUse, bool useNativeControlsIfAvailable) | ||||
| : PlayerControllerBase (ownerToUse, 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> | wrappedPlayer = [&]() -> std::unique_ptr<WrappedPlayer> | ||||
| { | { | ||||
| #if ! JUCE_32BIT | |||||
| if (@available (macOS 10.9, *)) | if (@available (macOS 10.9, *)) | ||||
| if (useNativeControls) | if (useNativeControls) | ||||
| return std::make_unique<WrappedPlayerView>(); | return std::make_unique<WrappedPlayerView>(); | ||||
| #endif | |||||
| return std::make_unique<WrappedPlayerLayer> (); | return std::make_unique<WrappedPlayerLayer> (); | ||||
| }(); | }(); | ||||
| @@ -658,7 +651,6 @@ private: | |||||
| NSUniquePtr<AVPlayerLayer> playerLayer { [[AVPlayerLayer alloc] init] }; | NSUniquePtr<AVPlayerLayer> playerLayer { [[AVPlayerLayer alloc] init] }; | ||||
| }; | }; | ||||
| #if ! JUCE_32BIT | |||||
| class API_AVAILABLE (macos (10.9)) WrappedPlayerView : public WrappedPlayer | class API_AVAILABLE (macos (10.9)) WrappedPlayerView : public WrappedPlayer | ||||
| { | { | ||||
| public: | public: | ||||
| @@ -670,7 +662,6 @@ private: | |||||
| private: | private: | ||||
| NSUniquePtr<AVPlayerView> playerView { [[AVPlayerView alloc] init] }; | NSUniquePtr<AVPlayerView> playerView { [[AVPlayerView alloc] init] }; | ||||
| }; | }; | ||||
| #endif | |||||
| std::unique_ptr<WrappedPlayer> wrappedPlayer; | std::unique_ptr<WrappedPlayer> wrappedPlayer; | ||||
| }; | }; | ||||